前言:一直以來想學習與實踐一下敏捷開發,以前項目雖然說口口聲聲咱們項目是敏捷開發,其實很扯。php
敏捷開發若是有持續集成、持續部署的支持,那樣開發、測試、運維將節省很多精力。html
此係列博客只爲記錄CI/CD的實踐與學習:前端
1、PHP運行環境的準備(centos7.4下安裝docker環境搭建 PHP7.1 + MySQL5.7環境,openresty1.13.6.1作代理服務器)mysql
服務器環境:阿里雲ECSlaravel
操做系統:centos7.4web
具體可參照阿里雲說明文檔docker
我這裏因爲單獨沒有購買MySQL服務,因此就安裝了MySQL環境centos
2.1 拉取MySQL鏡像api
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=123456 --name mysql57 hub.c.163.com/library/mysql:5.7
3.1 拉取PHP容器
docker pull hub.c.163.com/library/php:7.1-fpm
3.2 建立PHP容器
這裏選擇了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應用: