1. 程式人生 > >PHP應用的CI/CD流程實踐與學習:一、PHP運行環境的準備

PHP應用的CI/CD流程實踐與學習:一、PHP運行環境的準備

代碼結構 php7.1 運行環境 php應用 nginx 數據卷 選擇 class tar

前言:一直以來想學習與實踐一下敏捷開發,之前項目雖說口口聲聲我們項目是敏捷開發,其實很扯。

敏捷開發如果有持續集成、持續部署的支持,那樣開發、測試、運維將節省不少精力。

此系列博客只為記錄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運行環境的準備