Docker+LNMP+Jenkins+碼雲實現 PHP 程式碼自動化部署

2020-07-16 10:06:08
自動化部署(持續整合 / CI + 持續交付 / CD)是一個軟體開發的趨勢,是對 DevOps 的一個很好的幫助發展推進。今天實踐的是基於 Docker+Jenkins+LNMP + 碼雲,實現 PHP 程式碼的自動化部署過程。

環境設定

作業系統:CentOS Linux release 7.6.1810

Docker 版本:19.03.5

Jenkins 版本:2.204.1

Nginx 版本:1.15.5

PHP 版本:7.2.26

MySQL 版本:8.0.18

Redis 版本:5.0.5

碼雲:程式碼倉庫

碼雲倉庫準備

建立專案倉庫

e5839d7060741cfd41ae09c9c32e680.png

Jenkins 準備

安裝 ssh 外掛

因為構建專案式,需要執行伺服器的一些shell命令,所以採用ssh登入方式與遠端伺服器進行通訊。

1. 系統管理->外掛管理

2. 搜尋:ssh,安裝即可

0ed68718d8ef3f3852900a7bfc2c84b.png

1d9fdffe493cbafdcd0068fb05934d9.png

新建工程任務

任務名稱不能是中文哦,選擇第一個:Freestyle project 自定義專案

40b5720c028692561766490cc518519.png

工程任務設定

1. 原始碼管理選擇:git

2. Repository URL:倉庫地址(我的是碼雲倉庫)

3. Credentials選擇新增

4. 新增憑據

5. 設定倉庫私鑰(具體可檢視碼雲的倉庫金鑰管理幫助)

403e029a6e869db9d83620a7f3dba15.png

ef352b5b46e70caefd266663e1fd66a.png

憑據設定成功後,選擇上一步憑據設定的Username即可,這下如果成功連線上倉庫地址,則不會報錯了。

d944a2edfd7ce421dab8e8b01f73836.png

構建觸發器選擇:Github hook trigger for GITScm polling

1f714ae2590448f5697ec001cd19092.png

構建環境:Use secret text(s) or file(s) //私密方式傳輸檔案

憑據:選擇指定憑據git

af7f18480fd53d8319e1b42e4cb9967.png

設定 ssh

1. 系統管理->系統設定

2. 設定遠端伺服器ssh相關資訊

cd9f6840a68ea28c3326aaafcc6fcee.png

ea7116563384ac06c22a3e8e1a20dc1.png

設定構建 shell 指令碼

構建:Execute shell script on remote host using ssh //構建時執行遠端伺服器shell指令碼

1. 填寫SSH site //遠端伺服器ssh登入

2. Command //shell指令碼

備註:

因為程式碼自動部署在jenkins的工作空間workspace目錄下,而專案的站點目錄在/data/www下,所以在構建時,需要把更新的程式碼檔案複製到專案站點下(這裡有多種實現方式,這裡使用程式碼複製一份,是因為程式碼的大小不會佔很大的空間,現在很多靜態資源都放在一些雲服務上了)

最開始使用過軟連線的方式,但因為nginx不支援軟連線的存取。

4ca65c7b64ffd5c7c3f2762f06ab60c.png

8f2b5b2b0a8862c592bcd2472ce8229.png

設定完畢,點選儲存即可

碼雲程式碼推播

碼雲倉庫修改程式碼,然後提交PR到master分支

88cd5fe64201bd7446621b3a680a347.png

b59711ec358d246ab4a5fc0e436c0d2.png

部署任務手動構建

手動點選構建,即可實現程式碼自動化部署

備註:

也可以設定成監控到git push就直接自動構建(測試環境建議這樣做)

手動點選構建是為了更好的管理(生產環境建議這樣做)

cdfbf2c080b2023836e522b407eb54d.png

8f529853c4e5e50b75a9c8cf9c0637c.png

如果任務構建失敗,會有報錯資訊和紅色標記 //很方便管理

43a8c31acdcd7a7719db445ac9b32e7.png

f4e203d0555cc802cd1f9adc9be8ec2.png

存取網站

自動化部署任務構建成功後,存取我們的專案,即可看到修改效果

af6f1a93f9c81688ad8edae2eed8c16.png

以上就是Docker+LNMP+Jenkins+碼雲實現 PHP 程式碼自動化部署的詳細內容,更多請關注TW511.COM其它相關文章!