開發基於 Laravel 項目自動化部署的擴展包之 laravel-unideploy


php-deployer

實際項目開發中,對於自動化部署 php 項目市面上鮮有比較不錯的方案,好比瓦力,好比公司 ruby 項目組使用 capistrano,通過少數實踐,仍是選擇使用 pr,issue 比較活躍的 deployer
  1. 關於 deployer 部署 Laravel 項目最初實踐方案是比較初級的,composer global 安裝到本地,而後編寫符合本身項目的 task , 配置主機,配置共享目錄,服務器配置 sudo 免密碼帳號等等一系列操做。
  2. 剛開始可能遇到的問題比較低級,可是經過翻看 deployer 的各類 issues,逐步的把問題解決,也算是有一點小進步吧。
  3. 關於使用 deployer 部署 php 項目,我後來在 Laravel-china 社區看到了 Overtrue 的一篇文章,總結的很好,方便之後查閱,再此我記一下連接,文中把整個部署過程講的很通透,下面的評論也有一些可能會在將來遇到的問題,整體來講很贊👍👍
  4. 關於使用 deployer 部署 Laravel 項目,雖然此 package 已經提早預設了 laravel recipe,包括共享目錄 storage,共享文件 .env,集成各類 artisan 等等,可是咱們也在試想如何更優雅與 Laravel 貼近,因而想在此基礎上封裝一個擴展包,起初在此擴展包咱們想添加的功能是:添加部署羣消息提醒,添加修訂日誌,自動上傳新的 .env 文件等,搜索博大的 github 倉庫,果不其然發現了一個 package 集成 deployer,因而在此基礎上咱們從新整合了需求,定製本身項目的自動化部署擴展包 laravel-unideploy,目前還在不斷完善中,可是大部分代碼都是基於 laravel-deployer
  5. 選用 Yml 配置加載自定義配置,配置更加輕便靈活
  6. 更優雅的記錄每次修訂日誌,回滾日誌
  7. 銜接web hook通知,後續也會繼續完善,目前暫時只用於公司內部系統通知。

原來開始叨叨別人包 bug 多,一杯咖啡的時間,冷靜下來,總有一些獨特的思想在裏面,一千的 php 程序員眼中,總有一千種代碼實現,怎麼去權衡代碼精簡和代碼易讀易懂是一個不朽的問題😇

總結一下實際項目開發中遇到的一些問題

問題一

acl 未安裝,下面以下 shell 返回空php

if hash setfacl 2>/dev/null; then echo 'true'; fi

解決方案laravel

sudo apt-get install acl

參考 issues,Unable to setup correct permissions for writable dirsgit

問題二

reload php-fpm 沒有權限程序員

sudo need to enter a password

解決方案github

sudo vi /etc/sudoers
your_user_name ALL=(ALL) NOPASSWD: ALL

須要特別注意的地方是 將部署帳號的 sudo 配置在文件的最後一行,避免有覆蓋的狀況,能夠配置完執行 sudo cat /etc/sudoers 看看是否有權限web

問題三

git deploy failedshell

Fetching origin
ERROR: Repository not found.
fatal: Could not read from remote repository.

解決方案api

eval `ssh-agent -s` &&
ssh-add ~/.ssh/id_rsa

項目部署的主機配置中設置 forwardAgent 爲 true,本地 ssh-add 本身的私鑰,由於部署過程當中須要與服務器保持會話ruby

其餘的配置還在逐漸實踐中,期間在遇到什麼問題,隨時補充筆記,吾日三省吾身。

寫了這麼一段小筆記,如今已經快到12點了,忽然發現我電腦的鍵盤膜上 command + c已經開始花了,這麼多天過去了,日後餘生,風雪是你,平淡是你,清貧是你,榮華是你。服務器

無二之旅,定製有溫度的旅行,今年的目標之一是定製本身的 uni-package,實踐是成長最好的方式.
相關文章
相關標籤/搜索