欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

开发基于 Laravel 项目自动化部署的扩展包之 laravel-unideploy

程序员文章站 2022-06-15 20:10:15
...

实际项目开发中,对于自动化部署 php 项目市面上鲜有比较不错的方案,国内部署PHP项目,我用21云盒子

 

  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通知,后续也会继续完善,目前暂时只用于公司内部系统通知。

开发基于 Laravel 项目自动化部署的扩展包之 laravel-unideploy

原来开始叨叨别人包 bug 多,一杯咖啡的时间,冷静下来,总有一些独特的思想在里面,一千的 php 程序员眼中,总有一千种代码实现,怎么去权衡代码精简和代码易读易懂是一个不朽的问题????

总结一下实际项目开发中遇到的一些问题

问题一

acl 未安装,下面如下 shell 返回空

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

解决方案

sudo apt-get install acl

参考 issues,Unable to setup correct permissions for writable dirs

问题二

reload php-fpm 没有权限

sudo need to enter a password

解决方案

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

需要特别注意的地方是 将部署账号的 sudo 配置在文件的最后一行,避免有覆盖的情况,可以配置完执行 sudo cat /etc/sudoers 看看是否有权限

问题三

git deploy failed

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

解决方案

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

项目部署的主机配置中设置 forwardAgent 为 true,本地 ssh-add 自己的私钥,因为部署过程中需要与服务器保持会话

其他的配置还在逐渐实践中,期间在遇到什么问题,随时补充笔记,吾日三省吾身。

写了这么一段小笔记,现在已经快到12点了,突然发现我电脑的键盘膜上 command + c已经开始花了,这么多天过去了,往后余生,风雪是你,平淡是你,清贫是你,荣华是你。

无二之旅,定制有温度的旅行,今年的目标之一是定制自己的 uni-package,实践是成长最好的方式.