PHP應用的CI/CD流程實踐與學習:一、PHP運行環境的準備
前言:一直以來想學習與實踐一下敏捷開發,之前項目雖說口口聲聲我們項目是敏捷開發,其實很扯。
敏捷開發如果有持續集成、持續部署的支持,那樣開發、測試、運維將節省不少精力。
此系列博客只為記錄CI/CD的實踐與學習:
一、PHP運行環境的準備(centos7.4下安裝docker環境搭建 PHP7.1 + MySQL5.7環境,openresty1.13.6.1做代理服務器)
服務器環境:阿裏雲ECS
操作系統:centos7.4
1、 安裝docker
https://help.aliyun.com/document_detail/51853.html?spm=5176.11065259.1996646101.searchclickresult.3461232cUlszWt
具體可參照阿裏雲說明文檔
2、安裝MySQL環境
我這裏由於單獨沒有購買MySQL服務,所以就安裝了MySQL環境
2.1 拉取MySQL鏡像
docker pull hub.c.163.com/library/mysql:5.7
2.2 創建MySQL容器(設置root密碼,並映射在宿主機3306端口)
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1a3456s --name mysql57 hub.c.163.com/library/mysql:5.7
3、安裝PHP環境
3.1 拉取PHP容器
docker pull hub.c.163.com/library/php:7.1-fpm
3.2 創建PHP容器
創建一個PHP的api的項目容器(並創建需要解釋的PHP腳本目錄數據卷目錄,此項目暴露的端口為8001) docker run -d -v /home/www/php/zjjbnb_api:/var/www/html -p 8001:9000 --link mysql57:mysql --name php71 hub.c.163.com/library/php:7.1-fpm
4、安裝web環境
這裏選擇了openresty並且直接安裝在宿主機上,而沒有采用docker容器的形式。
本系列操作主要還是從實際痛點中出發:
a. 平時開發PHP應用時,最能影響項目的環境因素主要是PHP版本以及對應的擴展,對MySQL基本不挑,對web環境如NGINX版本更加不挑;
b. 項目中代碼風格與代碼結構是否合理
c. 代碼能否持續集成(以前都是開發完了,web項目從前端大致走一遍流程,然後發提測郵件,把最新的開發代碼打包一份給測試)
d. 代碼環境是否安全,有漏洞被提權了怎麽辦、xss、sql註入了怎麽辦?
這些是我認為有痛點的地方
PHP代碼跑在docker容器中算比較安全了;openresty能很好的做項目層面的waf(Web應用防護系統),做除了雲服務器商提供的服務的第二道保障
so:安裝了openresty
https://openresty.org/cn/installation.html
具體安裝可以參考openresty官網
安裝完後,這個項目的NGINX大致配置如下(只改了.php相關配置):
location ~ \.php$ { root /var/www/html/public; fastcgi_pass 127.0.0.1:8001; fastcgi_index index.php; #fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
將PHP代碼交給docker的PHP容器去運行,我這裏裝了一個laravel應用:
PHP應用的CI/CD流程實踐與學習:一、PHP運行環境的準備