自动化部署(持续集成/CI+持续交付/CD)是软件开发的趋势,对DevOps有很好的帮助。今天的实践是基于Docker+Jenkins+LNMP+码云实现PHP代码的自动化部署过程。环境配置操作系统:CentOSLinuxrelease7.6.1810Docker版本:19.03.5Jenkins版本:2.204.1Nginx版本:1.15.5PHP版本:7.2.26MySQL版本:8.0.18Redis版本:5.0.5码云:代码仓库Docker安装请参考到这篇文章:在CentOS上安装dockerDocker安装LNMP环境请参考这篇文章:Dockerfile自定义lnmp环境的方式Docker安装Jenkins请参考这篇文章:Docker搭建Jenkins实现自动部署代码云仓库准备创建项目仓库Jenkins准备安装ssh插件因为build项目类型需要执行服务器的一些shell命令,所以采用ssh登录方式与远程服务器通信。1、系统管理->插件管理2、搜索:ssh,安装新建项目即可。任务名称不能是中文。选择第一个:FreestyleprojectCustomproject工程任务配置1.源码管理选择:git2。RepositoryURL:仓库地址(我的是码云仓库)3.选择添加凭证4.添加凭证5.配置仓库私钥(详见码云仓库密钥管理帮助)凭证配置成功后,选择上一步用户名中配置的凭据就足够了。如果成功连接到仓库地址,则不会报错。Buildtrigger选择:GithubhooktriggerforGITScmpollingBuildenvironment:Usesecrettext(s)orfile(s)//Privatelytransferfilecredentials:选择指定凭证git配置ssh1.系统管理->系统配置2.配置远程服务器ssh相关信息配置buildshell脚本build:Executeshellscriptonremotehostusingssh//构建时执行远程服务器shell脚本1.填写SSH站点//远程服务器ssh登录2.command//shellscript注意:因为代码是自动部署在jenkins工作空间的workspace目录下,而项目的site目录在/data/www下,所以在构建的时候需要将更新的代码文件复制到项目现场(这里有多种实现方式,这里使用代码copy一种,因为代码的大小不会占用很大的空间,现在很多静态资源都放在一些云服务上)一开始我用的是软链接,但是因为nginx不支持访问软链接。配置完成后点击保存将码云代码推送到码云仓库修改代码,然后提交PR到master分支部署任务手动构建手动点击构建实现代码自动部署备注:也可以配置为gitpush直接自动监控构建(测试环境建议这样做)手动点击build是为了更好的管理(生产环境建议这样做)。如果任务构建失败,会有错误信息和红色标记//非常方便管理和访问网站。自动部署任务构建成功后,访问我们的项目查看修改效果
