walle 瓦力--部署系统(配置)
GIT配置安装
git 项目配置指南
git部署是最推荐的方式,它无论对于何种语言都是合适的。
一、基本要求:
宿主机php进程用户www_php(假如,可通过配置的检测查看或ps aux|grep php)的ssh-key要加入git/gitlab的deploy-keys。当然也可以http地址带用户名密码(不推荐):https://username:[email protected]/meolu/walle-web.git
宿主机php进程用户www_php(假如,可通过配置的检测查看或ps aux|grep php)要加入目标机群部署用户www_remote(配置中)ssh-key信任,具体怎么添加可找sa或者百度或者,这一般是用户最不理解的地方,建议先花半小时理解linux用户概念和php配置。
二、配置项目
png](/img/bV0vgb)
三、检测项目配置
配置完毕之后,先检测下,如无问题则可以发起上线单了:)
四、检测的错误和解决办法
宿主机代码检出检测出错,请确认php进程用户{user}有代码存储仓库{path}读写权限,且把ssh-key加入git的deploy-keys列表。详细错误:{error}
问题:请确认php进程用户{user}有代码存储仓库{path}读写权限 没有权限,是因为用户{user}对目录{path}没有读写权限,给权限即可 ll {path} chown {user} -R {path} chmod 755 -R {path} 问题:把ssh-key加入git的deploy-keys列表 su {user} && cat ~/.ssh/id_rsa.pub 打开 github/gitlab/bitbucket 网站, 添加 ssh-key 到ssh-keys列表
目标机器部署出错,请确认php进程{local_user}用户ssh-key加入目标机器的{remote_user}用户ssh-key信任列表,且{remote_user}有目标机器发布版本库{path}写入权限。详细错误:{error}
问题:请确认php进程{local_user}用户ssh-key加入目标机器的{remote_user}用户ssh-key信任列表 添加机器信任,还是没理解请百度吧(因为太多的同学问这问题,实在没办法只能这么啰嗦) su {local_user} && ssh-copy-id -i ~/.ssh/id_rsa.pub remote_user@remote_server # need remote_user's password 问题:{remote_user}有目标机器发布版本库{path}写入权限 su remote_user ll {path} chown {remote_user} -R {path} chmod 755 -R {path}
SVN配置
svn 项目配置
svn部署上线与git有点不太一样,svn是推荐增量发布(当然也可以全量更新),在开发者提交文件列表(可能带版本号),管理员审核上线单。发起部署时,为该上线单开辟一个独立空间,检出代码,选择上线单中的文件(可能带版本号)同步到目标机群。有不了解宿主机和目标机群关系、上线流程的同学先到项目主页了解。
因为svn没有git的版本快照,所以在部署需要全量代码编译操作时,只能选择全量更新,此时要求发布的分支/tag/trunk是可发布状态。建议java + git组合。同理其它需要全量代码在宿主机做编译相关的操作的语言,且为svn版本管理,请慎用。
一、基本要求:
svn目录推荐以下规范,详细可以注册riouxsvn,作为svn测试地址。当然三无(无trunk、无branches、无tags)也是支持:) branches tags trunk 宿主机php进程用户www_php(假如,可通过配置的检测查看或ps aux|grep php)要加入目标机群部署用户www_remote(配置中)ssh-key信任,具体怎么添加可找sa或者百度或者,这一般是用户最不理解的地方,建议先花半小时理解linux用户概念和php配置。
其他跟GIT一致
高级任务配置
高级任务方便用户自定义一些操作,无论是在代码检出前后,还是切换版本前后。
一、java配置实例
pre_deploy任务
echo pre_deploy >> /tmp/cmd # 初始化一些东西,自由发挥
post_deploy任务
mvn package -Dmaven.test.skip=true # 编译java
mvn clean # 打扫
mv WEB-INF/config.Properties.test WEB-INF/config.Properties # 切换环境相应的配置
rm -rf src # 甚至删除无用代码
pre_release任务
./xx.sh stop # 暂停服务
post_release任务
./xx.sh start # 启动服务
二、如果我想执行sudo命令?
想执行sudo命令的前提是用户有root权限,要执行哪些命令?
添加用户到sudoers visudo www ALL=(ALL) ALL 添加免密码命令 visudo www ALL = (ALL) NOPASSWD: /usr/local/nginx/bin/nginx 设置用户的tty(宿主机执行sudo需要此步,目标机可以跳过此步) Defaults:www !requiretty
项目用户配置
角色分为管理员(注册可选)、开发者(注册可选)、项目审核管理员(前面二者均可是)。
1.管理员
注册时,选择角色为管理员,注册后邮件验证,但此时也不是立刻拥有管理员权限,需要其它管理员审核通过才行。
管理员的权限列表
配置新的项目、修改自己的项目配置 审核新管理员 设置项目的成员、项目审核管理员 审核上线单 上线
2.项目审核管理员
注册时无此用户角色,为管理员为减轻自己审核上线单压力、防止管理员不在线而影响上线而需要一两个代理审核管理员。但不能编辑项目配置,也不能添加项目成员,只比开发者多一个审核上线单的权限。
管理员的权限列表
审核上线单 上线
3.开发者
普通开发者可提交上线单,上线部署
管理员的权限列表
上线