實際項目開發中,對於自動化部署 php 項目市面上鮮有比較不錯的方案,好比瓦力,好比公司 ruby 項目組使用 capistrano,通過少數實踐,仍是選擇使用 pr,issue 比較活躍的 deployer
deployer
部署 Laravel
項目最初實踐方案是比較初級的,composer global
安裝到本地,而後編寫符合本身項目的 task , 配置主機,配置共享目錄,服務器配置 sudo 免密碼帳號等等一系列操做。storage
,共享文件 .env
,集成各類 artisan
等等,可是咱們也在試想如何更優雅與 Laravel 貼近,因而想在此基礎上封裝一個擴展包,起初在此擴展包咱們想添加的功能是:添加部署羣消息提醒,添加修訂日誌,自動上傳新的 .env 文件等,搜索博大的 github 倉庫,果不其然發現了一個 package
集成 deployer,因而在此基礎上咱們從新整合了需求,定製本身項目的自動化部署擴展包 laravel-unideploy,目前還在不斷完善中,可是大部分代碼都是基於 laravel-deployer
原來開始叨叨別人包 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
,實踐是成長最好的方式.