walle是最近发现的一个比较简单好用的项目部署系统,可以关联GitHub、Gitlab、码云等一些Git平台,所以今天就测试了一下它的可用性。
截止到2017年12月10号,看Git上面最后的代码提交是2017年10月18号,所以作者还是在维护状态的,walle的功能是下面这些:
1.用户分身份注册、登录
2.开发者发起上线任务申请、部署
3.管理者审核上线任务
4.支持多项目部署
5.支持多项目多任务并行
6.快速回滚
7.项目的用户权限管理
8.部署前准备任务pre-deploy(前置检查)
9.代码检出后处理任务post-deploy(如vendor)
10.同步后更新软链前置任务pre-release
11.发布完毕后收尾任务post-release(如重启)
12.执行sql构建(不要担心忘记测试环境sql同步)
13.线上文件指纹确认
14.支持git、svn版本管理
walle的官网http://www.walle-web.io/已经有很详细的系统的部署步骤了,现在把我今天下午遇到的一些问题简单的说一下。
宿主机就是部署walle系统的主机,存放从Git服务器上pull下来的代码,目标机群就是线上服务器。
walle就是一个可以让你的线上部署环境和Git服务器能够关联起来的一个担任中间人的系统,所以你需要得到从Git服务器上拉取代码的权限和往线上服务器上同步文件的权限。
获取宿主主机从Git上面pull代码的权限那就需要你把自己电脑的id_rsa.pub公钥加入到Git的SSH KEY配置中,以GitHub为例:
往Git上面添加公钥的时候,key的title一定要和你的宿主主机的PHP服务用户的名称一样,比如我在我的Mac上名称是sunzexin,那么key的title也是sunzexin,不然一直会提示.id_rsa.pub没有配置对的错误。
然后就是把自己的宿主主机列入线上主机的白名单中,可以免密登录,如果你在walle系统中配置项目的目标机群用户名是root,那么你需要在线上服务器的/home/root/.ssh/(CentOS服务器root的根目录好像直接在/root下,不需要/home/root),然后找到authorized_keys这个文件,这个就是授权的配置文件,你需要把宿主主机的.id_rsa.pub里面的内容追加到这个文件中,这样就能够授权成功了。
接下来到提交上线单这一步,选择一个环境,比如我要上线到测试环境中:
在这一步点击发布之后一直会有一个线上服务器没有权限覆盖文件的权限,你需要保证你的网站初始化的时候网站根目录的上一级目录是walle自己创建的,不用自己去创建,比如网站根目录的路径是:/data/wwwroot/test,那么wwwroot这个目录需要walle的创建,以保证walle的系统对它有一些需要的权限。
以上三点是我测试walle部署系统时踩过的坑。