实际项目开发中,对于自动化部署 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
,实践是成长最好的方式.