用 Jenkins 部署 PHP 應用

安裝 Jenkins

方式一:docker方式安裝javascript

拉取jenkins官方鏡像,按照鏡像文檔啓動鏡像就能夠了php

方式二:手動安裝html

如下全部操做都使用 root 用戶進行操做。java

在各項目官網,下載 Java、Tomcat、Jenkinsgit

Java: www.oracle.com/technetwork…
Tomcat: tomcat.apache.org/download-90…
jen
Jenkins: jenkins.io/web

所用環境: jdk1.8.0_121 tomcat-9.0.0.M17 jenkins 2.32.2docker

我把所用的 tar.gz 壓縮包都放在 /opt/ 目錄中,而後解壓到 /usr/local/src 中。shell

安裝 Javaapache

解壓後的 Java 包默認爲 jdk1.8.0_121vim

配置 Java 環境變量 vim /etc/profile,在其中加入:

#java
JAVA_HOME=/usr/local/src/jdk1.8.0_121 #這行根據實際狀況修改
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar複製代碼

修改完成後使用 source /etc/profile 讓新配置生效。

安裝 Tomcat

解壓後的 Tomcat 包默認爲 apache-tomcat-9.0.0.M17

使用 chmod a+x apache-tomcat-9.0.0.M17/bin/*.sh 命令給予 Tomcat 啓動關閉 shell 腳本可執行權限。

執行 bin/catalina.sh run 能夠從控制檯看到tomcat啓動,以確保 Tomcat 能夠正確啓動。

要讓 Tomcat 在後臺運行使用 bin/startup.sh

安裝 Jenkins

將 jenkins 的 .war 包放到 Tomcat 的 webapps 目錄中,運行 bin/startup.sh

而後就能夠經過 http://<你的ip地址>/jenkins/ 訪問安裝完畢的 jenkins

而後按照頁面指引完成最後的安裝

Jenkins 插件

  • Subversion/Git:用於集成項目版本控制軟件,根據須要選擇(在上篇博文已安裝使用)
  • Phing/Ant:使用Phing或Apache Ant 對PHP項目作自動化構建
  • CheckStyle:使用PHP CodeSniffer進行代碼風格檢查的工具。用於檢查PHP代碼是否有違反一組預先設置好的編碼標準的一個PEAR包,內置了ZEND,PEAR的編碼風格規則
  • Clover PHP:使用phpunit進行單元測試的工具,能夠被xdebug擴展用來生成代碼覆蓋率報告,而且能夠與phing集成來自動測試,還能夠和Selenium整合來完成大型自動化集成測試
  • DRY:使用PHPCPD(php copy paste detector)來發現項目中的重複代碼
  • HTML Publisher:用來發布phpunit代碼覆蓋率報告
  • JDepend:使用PHP Depend分析php中靜態代碼,用來檢查項目中的代碼規模和複雜程度
  • Plot:使用phploc來統計php項目規模大小的工具,能夠統計php的項目代碼行數
  • PMD:使用phpmd(php mess dector),對基於pdepend的結果進行分析,一旦項目超過了pdepend中各具體指標的規定,將發出警告信息.
  • Violations:按照代碼缺陷嚴重性集中顯示pwd靜態代碼分析的結果
  • xUnit:使用JUnit的格式來輸出phpunit的日誌文件

Jenkins 部署 PHP 步驟

代碼拉取 - 執行檢查(非必須)- 打包 - 遠程或本地部署

部署的方式不少種,jenkins 也提供不少插件優化部署流程

本文檔主要說一下遠程部署

遠程部署首先拉取代碼,咱們使用 git 管理代碼。

用 ssh-keygen 生成公鑰和私鑰,git 和 登陸遠程服務器都會用到。

git 倉庫上每一個項目都有一個部署公鑰,將生成的公鑰添加到 git 倉庫。

而後建立一個自由風格的 jenkins 部署項目,進入配置。

拉取代碼

選擇 git ,默認會拉取倉庫的 master 分支,點擊 add 添加一個拉取代碼的憑證。

Kind 選 SSH Username with private key
Private key 選擇 From the Jenkins master ~/.ssh (已經使用 ssh-keygen 生成公私鑰)

建立完成後選擇憑證,輸入 git 倉庫的地址,而後就能夠保存後點擊當即構建,測試代碼能不能正確拉取,拉取正確後點擊工做空間就能夠看見你的代碼庫中的代碼了。

構建

默認有這些構建選項,本地構建簡單使用 Execute shell 執行 shell 指令。

遠程構建須要新安裝一個插件,在 系統管理-管理插件-可選插件 中搜索 Publish Over SSH 插件並安裝,重啓 Jenkins 以啓用插件。

將本機的公鑰複製到遠程服務器root用戶的 /root/.ssh/authorized_keys 文件中。

而後在 系統管理-系統設置-Publish over SSH

填入私鑰文件地址

增長一個 ssh 服務器配置

構建中選擇 Send files or execute commands over SSH

簡單點能夠直接執行 shell 指令,到想要部署的項目目錄用 git 直接拉取遠程代碼,但這樣用 Jenkins 意義真的不是特別大,能夠在本機將代碼打包,而後傳輸到遠程機器,再解壓開到項目目錄。

cd /var/www/web
tar -czf project_`date +%F-%H-%M-%S`.bak.tar.gz --exclude='project/runtime' --exclude='project/.git' /home/www/web/project
tar xzf /var/www/web/project-tar/project.${BUILD_NUMBER}.${BUILD_ID}.tar.gz -C /home/www/web/project
chmod -R 755 /home/www/web/project/
chmod 777 /home/www/web/project/web/assets/
tail -n100 /home/www/web/project/runtime/logs/error.log複製代碼

以上是一個示例,進行了線上代碼備份打包、解包新部署包,修改權限、打印錯誤日誌一系列操做。

構建打包操做是使用的 Phing 這個工具,有興趣能夠去了解一下這個工具。

相關文章
相關標籤/搜索