前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从零打造自己的CI/CD系统|php项目部署v1版本

从零打造自己的CI/CD系统|php项目部署v1版本

作者头像
追马
发布2020-07-03 09:59:35
1.1K0
发布2020-07-03 09:59:35
举报
文章被收录于专栏:一日一工具

从零打造自己的CI/CD系统|php项目部署v1版本

今天我们结合前面所讲内容进行PHP项目的完整部署流程,当然我们不会一步到位,会慢慢迭代完善部署的整个过程。

环境需求

•Ansible•php 环境•composer 工具

Ansible 安装部署

•安装ansible•调整配置文件ansible.cfg

代码语言:javascript
复制
pip install ansible

php环境安装部署

•不要想着去源码编译•先安装remi源•然后在安装PHP•remi源[1]

Example
代码语言:javascript
复制
yum install php php-devel php-fpm enablerepo=remi-php73

composer安装部署

composer安装[2]•composer镜像配置,如果自己有私服的话,那就配置私服,没有私服的话,那就用阿里云的

代码语言:javascript
复制
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

项目demo

•由于时间原因,就没有从头搞起,在GitHub上找了一个demo,php-laravel-hello-world[3], 我本地编译过,运行没问题

Ansible roles编写和存放

•Ansible roles存放位置在/etc/ansible/roles下,具体还要看ansible.cfg里如何定义roles的路径•使用的时候直接采用单独目录的形式来存放该应用对应的配置文件

Ansible和远程机器通信

•远程机器上部署应用建议使用普通用户,然后把发布机器上的发布账号和远程机器上的应用账号做互信,这样推送编译后的产物就不用交互式输入密码确认了

Ansible roles编写

主要操作流程

•git clone•compile•sync•next machine

编写roles

•切记不要手动创建roles对应的目录,我是见过不少小伙伴去手动一个个创建目录,真的是。。。

代码语言:javascript
复制
[root@zhuima roles]# ansible-galaxy init php-laravel-hello-world
WARNING: yacc table file version is out of date
- php-laravel-hello-world was created successfully
[root@zhuima roles]#
目录结构如下
代码语言:javascript
复制
[root@zhuima php-laravel-hello-world]# tree .
.
├── defaults
│   └── main.yml
├── files
├── handlers
│   └── main.yml
├── meta
│   └── main.yml
├── README.md
├── tasks
│   ├── composer.yml
│   ├── deploy.yml
│   ├── directory.yml
│   ├── main.yml
│   └── synchronize.yml
├── templates
├── tests
│   ├── inventory
│   └── test.yml
└── vars
    └── main.yml

8 directories, 12 files

注意事项

•本地和远程只保留历史的三份部署记录,便于回滚•每一步操作都要注册,下一步操作之前判断上一步执行结果成功与否•执行数据流的过程中,屏蔽异常主动退出,人工捕获异常,然后在退出之前清理前面执行的所有操作•composer生产使用的时候,尽量加上--no-dev --optimize-autoloader --no-interaction

使用

•命令行传入变量,然后实现参数的传递

代码语言:javascript
复制
ansible-playbook -i hlists deploy.yml -e "pname=php-laravel-hello-world env=dev branch=master git_repo=https://github.com/niwasawa/php-laravel-hello-world"

总结

时间比较赶,并没有实现smoketest和更多复杂的逻辑,只是单纯的实现了简单的部署操作骨架,剩下的明天我们继续。

引用链接

[1] remi源: https://rpms.remirepo.net/ [2] composer安装: https://www.phpcomposer.com/ [3] php-laravel-hello-world: https://github.com/niwasawa/php-laravel-hello-world

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 链上追马 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 从零打造自己的CI/CD系统|php项目部署v1版本
    • 环境需求
      • Ansible 安装部署
      • php环境安装部署
      • composer安装部署
      • 项目demo
      • Ansible roles编写和存放
      • Ansible和远程机器通信
    • Ansible roles编写
      • 主要操作流程
      • 编写roles
    • 注意事项
      • 使用
        • 总结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档