拓撲圖以下:
1、Jenkins搭建php
一、安裝最新的linux系統CentOS-7-x86_64-Minimal,更新系統以及安裝軟件html
yum upgrade -y && yum update -yjava
yum install epel-release lrzsz vim net-tools unzip wget gcc g++ cmake git svn -ymysql
二、添加系統用戶apps,安裝jdk1.8。執行以下命令:linux
useradd appsnginx
mkdir -p /apps/svrgit
tar -zxf jdk-8u131-linux-x64.tar.gz -c /apps/svrgithub
ln -s /apps/svr/jdk1.8.0_131 /apps/svr/jdkweb
修改apps用戶的home目錄下的配置文件.bashrc,追加以下內容:sql
export JAVA_HOME=/apps/svr/jdk
export JRE_HOME=/apps/svr/jdk/jre
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$CLASSPATH
三、下載最新的LTS版的Jenkins包(Generic java package)到路徑/apps/svr/tomcat,用apps用戶後臺啓動。
Java -jar jenkins.war &
四、安裝maven。
下載最新的apache-maven-3.3.9-bin.zip包,解壓到/usr/local路徑,修改/etc/profile,增長:
export MAVEN_HOME=/usr/local/apache-maven-3.3.9
PATH=$PATH:$MAVEN_HOME/bin
修改maven的配置文件/usr/local/apache-maven-3.3.9/conf/settings.xml,增長訪問nexus私服的設置。
六、安裝Jenkins插件。瀏覽器打開http://IP地址:8080,打開Jenkins的安裝界面,安裝全部的推薦插件,包括Multiple SCMs plugin。
七、配置Jenkins工具。登陸Jenkins,打開系統管理(manage Jenkins),進入global tool configuration
a)JDK
Name jdk1.8
JAVA_HOME /apps/svr/jdk1.8.0_131
若是想要多個jdk版本,能夠選擇新增JDK。
b)git
Name Default
Path to Git executable git
c)Maven
Name apache-maven-3.3.9
MAVEN_HOME /usr/local/apache-maven-3.3.9
八、添加拉取gitlab代碼憑證。登陸Jenkins,在credentials,system,global credentials下,選擇add credentials,輸入gitlab系統的帳號密碼。
2、Jenkins的使用
Jenkins工做目錄在apps用戶的home目錄下,一個隱藏文件夾.jenkins。從gitlab拉取回來的代碼都在workspace目錄下。
如下以新建order-prod項目爲例:
一、登陸Jenkins,點擊「new item」,輸入項目名字order-prod,選擇「maven project」。
二、在「Source Code Management」(源碼管理),選擇Multiple SCMs(前面須要安裝插件Multiple SCMs plugin),而後選擇Add SCM中的git,「Repository URL」填寫項目代碼的gitlab路徑,credentials選擇以前添加的憑證,也能夠如今add添加。「Branch Specifier」填代碼分支名字。再次擇Add SCM中的git,此次添加項目的配置文件的gitlab路徑,憑證和分支,而後選擇「additional behaviours」,再選擇「check out to a sub-directory」,手動指定從gitlab拉取下來的文件的存放路徑,這裏我填寫/home/apps/.jenkins/workspace/order-prod-config。
三、在「pre steps」,選擇「add pre-build step」中的「execute shell」,在command中輸入shell命令「cp /home/apps/.jenkins/workspace/kepler-prod-config/* /home/apps/.jenkins/workspace/kepler-prod/src/main/resources/」,這個命令是在maven打包構建以前替換項目代碼裏面的配置文件。測試環境,灰度環境,正式環境都用不一樣的配置文件。
四、在「build」中,「ROOT POM」填寫pox.xml,goals and options填寫「clean install -Dmaven.test.skip=true」。這裏是maven構建的命令。
五、在最後「post steps」,首先選擇「run only if build succeeds」,「execute shell」填寫命令「cp -R /home/apps/.jenkins/workspace/kepler-prod/target/kepler-service-1.0.0-SNAPSHOT.jar /home/apps/svn_mall/sadoc/kepler/ && cd /home/apps/svn_mall/sadoc/kepler && svn add kepler-service-1.0.0-SNAPSHOT.jar && svn commit -m "kepler update"」。這個命令實際上就是利用把構建好的待發布的包,上傳到SVN服務器。在此以前,須要登陸服務器,在/home/apps/svn_mall/路徑執行「svn --username=xingmaogou co svn://192.168.100.7/sadoc」,這裏username爲SVN的用戶名,IP地址替換爲相對於的公網IP地址,而後執行「svn add kepler-service-1.0.0-SNAPSHOT.jar」。
這樣,Jenkins這端配置完成。
3、SVN服務器搭建
SVN服務器搭建在生產環境所在的內網,生產環境的walle服務器能訪問,而且須要映射端口出來給公司內外Jenkins訪問。
一、yum安裝SVN服務器
首先看系統是否安裝了svn,rpm -qa subversion,若是已經安裝,須要先行卸載。而後
yum -y install subversion
二、配置SVN而且啓動
指定svn的數據存儲路徑
mkdir -p /application/svndata
指定svn的配置文件信息路徑
mkdir -p /application/svnpasswd
啓動svn服務
svnserve -d -r /application/svndata/
三、檢測svn服務是否正常啓動,若是能看到下圖所示則證實啓動成功
第一經過進程檢測
ps -ef | grep svn
第二經過端口3690檢測
netstat -lntup | grep 3690
第三經過文件檢測,須要root用戶才能夠執行
lsof -i :3690
四、使用svnadmin創建svn項目版本庫
查看建立項目版本庫命令
svnadmin --help
svnadmin help create
建立sadoc版本庫
svnadmin create /application/svndata/sadoc
五、配置sadoc版本可的權限
進入sadoc版本庫配置目錄,並備份配置文件
cd /application/svndata/sadoc/conf/
cp -p svnserve.conf svnserve.conf.default
進行詳細配置
anon-access = none //禁止匿名訪問
auth-access = write //認證後有讀的權限
password-db = /application/svnpasswd/passwd //指定密碼文件
authz-db = /appplication/svnpasswd/authz //指定權限認證文件
六、複製passwd和authz文件到sadoc的svnpasswd目錄並修改權限
執行以下命令完成操做
cp -p authz passwd /application/svnpasswd/
cd /application/svnpasswd/
chmod 700 authz passwd
七、爲Svn版本庫建立用戶並受權訪問指定項目版本庫
編輯passwd文件配置用戶和密碼
vi passwd
xingmaogou = xingmaogou
xingyuan = xingyuan
編輯authz文件配置讀取權限
[<版本庫>:/項目/目錄]
@<用戶組名> = <權限>
<用戶名> = <權限>
八、從新啓動svn服務進行驗證
殺死svn服務
pkill svnserve
啓動svn
svnserve -d -r /application/svndata/
備註:修改passwd和authz文件不須要重啓svn服務而修改svnserve.conf則須要
九、最後安裝客戶端進行sadoc的配置是否正確
svn --username=xingmaogou co svn://121.xxx.xxx.xx9/sadoc
4、walle發佈系統搭建
Walle爲專門國產開源的發佈系統,能夠多臺主機,多種環境,多用戶執行發佈任務,而且能夠回滾。https://walle-web.io/。相對於Jenkins搭建在公司內外,walle須要安裝在生產環境的內網。安裝注意參照官方文檔https://walle-web.io/docs/installation.html。可是須要注意的地方有幾點
一、安裝SVN客戶端而且可否訪問前面搭建的SVN服務器
二、安裝yum安裝nginx,PHP,而且都用同一個用戶啓動,修改nginx,和PHP-fpm配置文件,啓動用戶都用apps。
三、yum安裝php相關軟性的時候,如yum install php56w.x86_64 php56w-cli.x86_64 php56w-common.x86_64 php56w-gd.x86_64 php56w-ldap.x86_64 php56w-mbstring.x86_64 php56w-mcrypt.x86_64 php56w-mysql.x86_64 php56w-pdo.x86_64 php56w-fpm,軟件名字都不須要「56w」,不然會安裝失敗。
四、郵箱配置是在walle的PHP項目工程的config文件夾下的local.php配置,具體參照https://github.com/meolu/walle-web。
五、walle配置,在管理員登陸walle以後,在項目配置中,新建項目。特別須要注意的是,「宿主機」下,「代碼檢出倉庫」是位於walle系統所在linux主機。目標機器就是生產環境所在主機,用戶爲apps用戶,webroot目錄須要特別注意,這個路徑在服務器上只須要建立到父一級,好比你填寫的是「/data/www/walle」,可是在生產服務器上只能建立目錄「/data/www」。
六、walle服務器的ssh公鑰須要放到全部目標服務器的apps用戶下,信任從而能免密碼登錄。
所有配置好以後,普通用戶郵件申請帳號,管理員添加項目而且給普通用戶授發佈權限。
七、高級任務裏,能夠填寫shell命令用於重啓程序。
八、「分支/tag上線」選擇「無trunk/無branches」,而後開啓審覈。