1. 程式人生 > >CentOS7持續整合自動化部署

CentOS7持續整合自動化部署

搭建持續整合自動化部署服務需要先配置好 JDK7TomcatMySQL

禁止 SELINUX 訪問控制

修改配置之前先備份(良好習慣)

sudo cp /etc/selinux/config /etc/selinux/config.bak

備份後,修改selinux配置

sudo vi /etc/selinux/config


SELINUX=enforcing改為SELINUX=disabled

注:完成後必須reboot,此處可完成“更新yum步驟後再reboot

更新yum

sudo yum update

注:完成後必須 reboot

搭建Apache伺服器

安裝 httpd

sudo yum -y install httpd

修改配置

修改之前先備份(良好習慣)

sudo cp  /etc/httpd/conf/httpd.conf   /etc/httpd/conf/httpd.conf.bak

備份後,進行修改

sudo vi  /etc/httpd/conf/httpd.conf


ServerName localhost:80

修改後儲存並退出,然後重啟 httpd

systemctl start httpd.service

重啟成功後,開放 httphttps 防火牆埠,分別執行如下兩個命令

sudo firewall-cmd --permanent --add-service=http--permanent --add-service=

https

sudo firewall-cmd --reload

成功開放埠後,在瀏覽器中訪問 Apache,地址為http://IP(此處CentOS7IP192.168.154.145,根據實際IP進行訪問)

 

瀏覽器中出現如上介面,則Apache服務已經搭建成功

ApacheSVN整合

安裝 svn

sudo yum -y install subversion

檢視SVN是否安裝成功

svn --version

 

出現version相關資訊,證明SVN已經安裝成功

安裝Apache 整合 SVN 模組

sudo yum -y install mod_dav_svn

檢視Apache
SVN模組是否安裝成功

ls /etc/httpd/modules/ | grep svn

如看到以上 mod_authz_svn.so 和 mod_dav_svn.so,則安裝成功

建立SVN庫,準備passwd.httpauthz配置檔案

新建 svn目錄,作為以後SVN多庫的根目錄

sudo mkdir /svn

修改 svn許可權

sudo chown -R kenny.kenny /svn

svn 目錄下,新建 passwd.http authz配置檔案

sudo touch /svn/passwd.http

sudo touch /svn/authz

 

配置ApacheSVN庫關聯

/etc/httpd/conf.d 目錄下建立 subversion.conf 配置檔案,內容如下:

LoadModule dav_svn_module modules/mod_dav_svn.so

LoadModule authz_svn_module modules/mod_authz_svn.so

<Location /home/kenny/svn/>

DAV svn

SVNParentPath /home/kenny/svn

AuthType Basic

AuthName "Authorization SVN"

AuthUserFile /home/kenny/svn/passwd.http

AuthzSVNAccessFile /home/kenny/svn/authz

Require valid-user

</Location>

RedirectMatch ^(/svn)$ $1/

sudo vi /etc/httpd/conf.d/subversion.conf

將以上配置內容複製到 subversion.conf配置檔案中即可,到這裡ApacheSVN的整合步驟就已經完成了

搭建Jsvnadmin伺服器

下載 svnadmin-3.0.5.zip

 

我下載到了windows上的E:\jsvnadmin,直接解壓縮

準備MySQL資料庫

進入E:\jsvnadmin\svnadmin-3.0.5\db目錄

 

進入 E:\jsvnadmin\svnadmin-3.0.5\db\lang目錄

 

遠端登入在CentOS7上的MySQL,通過source命令執行以上兩個sql檔案完成svn資料庫環境搭建

mysql -u root -p -h IP  (此處IP改為CentOS伺服器的IP,如192.168.154.145

 

執行sql檔案之前,先建立一個數據庫

CREATE DATABASE IF NOT EXISTS `svnadmin` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

 

切換到 svnadmin資料庫,正式執行sql檔案

 


執行完成後,檢視資料庫表

show tables;

 

可見一共有如上8張表

上傳 svnadmin.warCentOS7

我使用的是 SSH Secure File Transfer Client工具,當然也可以用其他的FTP工具,如XFTP

 

上傳成功後,解壓一份Tomcat7,命名為svnadmin-tomcat,刪除webapps下所有檔案後,將svnadmin.war部署到svnadmin-tomcatwebapps目錄

tar -zxvf apache-tomcat-7.0.78

mv apache-tomcat-7.0.78  svnadmin-tomcat

rm -rf svnadmin-tomcat/webapps/*

cp svnadmin.war svnadmin-tomcat/webapps/svnadmin.war

cd svnadmin-tomcat/webapps

unzip svnadmin.war -d svnadmin

rm -rf svnadmin.war

修改 jdbc連線屬性

 

vi svnadmin/WEB-INF/jdbc.properties

配置 svnadmin-tomcat 開機啟動

建立Tomcat環境初始配置,內容如下:

#add tomcat pid

CATALINA_PID="/home/kenny/tomcat/svnadmin-tomcat/tomcat.pid"

#add java opts

JAVA_OPTS="-XX:PermSize=512M -XX:MaxPermSize=512m -Xms1024M -Xmx1024M -XX:MaxNewSize=512m"

vi svnadmin-tomcat/bin/setenv.sh

 

svnadmin.service加入systemctl,內容如下:

sudo vi /usr/lib/systemd/system/svnadmin.service

[Unit]

Description=svnadmin

After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]

Type=forking

Environment="JAVA_HOME=/home/kenny/jdk/jdk1.7.0_80"

PIDFile=/home/kenny/tomcat/svnadmin-tomcat/tomcat.pid

ExecStart=/home/kenny/tomcat/svnadmin-tomcat/bin/startup.sh

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s QUIT $MAINPD

PrivateTmp=true

User=kenny

Group=kenny

[Install]

WantedBy=multi-user.target

 

修改svnadmin.service許可權

sudo chown -R kenny.kenny /usr/lib/systemd/system/svnadmin.service

sudo chmod 777 /usr/lib/systemd/system/svnadmin.service

設定 svnadmin開機啟動,然後啟動svnamdin

systemctl enable svnadmin

systemctl start svnadmin

建立SVN版本庫

訪問 svnadmin(如http://http://192.168.154.145:8080/svnadmin),設定管理員賬號和密碼,我設定的是賬號:admin,密碼:admin

 

登入後自動進入專案管理

 

建立一個SVN版本庫

 

注:型別一定要選擇http(多庫)

提交後,可見first版本庫已經建立完成

 

svn 目錄下也建立了 first 資料夾

 

此時要修改 first資料夾的許可權

sudo chown -R apache.apache first

chmod 777 /svn/first

新增 svn使用者

我建立了一個賬號kenny,密碼123456

提交賬號密碼後,會在當前頁面上顯示

 

點選專案,然後從專案列表中點選對應的URL進入專案許可權管理頁面

 

設定admin使用者為manager使用者組,具有對first庫可讀可寫的許可權

 

設定 kenny使用者為developer使用者組,具有對first庫可讀可寫的許可權

 

到這裡first庫的許可權設定就完成了


搭建NexusMaven私服倉庫)

我下載的是nexus-2.14.4-03-bundle.tar.gz

 

上傳解壓(步驟略)後,配置開機啟動 nexus

備份 bin/nexus

cp bin/nexus bin/nexus.bak

修改 bin/nexus,內容如下:

NEXUS_HOME="/home/kenny/nexus/nexus-2.14.4-03"

RUN_AS_USER=root

JAVA_HOME="/home/kenny/jdk/jdk1.7.0_80"

PLATFORM=linux-x86-64

vi bin/nexus

 

備份bin/jsw/conf/wrapper.conf

cp bin/jsw/conf/wrapper.conf bin/jsw/conf/wrapper.conf.bak

修改 bin/jsw/conf/wrapper.conf,找到wrapper.java.command,改為:

wrapper.java.command=/home/kenny/jdk/jdk1.7.0_80/bin/java

vi bin/jsw/conf/wrapper.conf  

 

建立 nexus.service,內容如下:

[Unit]

Description=nexus

After=network.target

[Service]

Type=forking

ExecStart=/home/kenny/nexus/nexus-2.14.4-03/bin/nexus start

ExecReload=/home/kenny/nexus/nexus-2.14.4-03/bin/nexus stop

ExecStop=/home/kenny/nexus/nexus-2.14.4-03/bin/nexus stop

PrivateTmp=true

User=kenny

Group=kenny

[Install]

WantedBy=multi-user.target

sudo vi /usr/lib/systemd/system/nexus.service

 

修改 nexus.service許可權

sudo chown -R kenny.kenny /usr/lib/systemd/system/nexus.service

設定nexus開機啟動,然後啟動

systemctl enable nexus

systemctl start nexus

開放nexus

sudo firewall-cmd --zone=public --add-port=8081/tcp --permanent

sudo firewall-cmd --reload

 

登入,UsernameadminPasswordadmin123

到這一步 nexus私服就搭建完成了

上傳 jar war nexus私服

備份本地 maven的配置檔案conf/settings,修改settings.xml,內容如下:

<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<!-- 本地倉庫路徑-->

<localRepository>E:/maven/repo</localRepository>

<!-- nexus私服部署使用者配置-->

<servers>

<server>

<id>user-snapshots</id>

<username>deployment</username>

<password>deployment123</password>

</server>

<server>

<id>user-releases</id>

<username>deployment</username>

<password>deployment123</password>

</server>

</servers>

<profiles>

<!-- nexus私服倉庫配置-->

<profile>

<id>nexus</id>

<activation>

<jdk>1.7</jdk>

</activation>

<repositories>

<repository>

<id>nexus-releases</id>

<name>nexus-releases</name>

<url>http://192.168.154.146:8081/nexus/content/groups/public/</url>

<releases>

<enabled>true</enabled>

</releases>

<snapshots>

<enabled>true</enabled>

</snapshots>

</repository>

</repositories>

<pluginRepositories>

<pluginRepository>

<id>nexus-plugins</id>

<name>nexus-plugins</name>

<url>http://192.168.154.146:8081/nexus/content/groups/public/</url>

<releases>

<enabled>true</enabled>

</releases>

<snapshots>

<enabled>true</enabled>

</snapshots>

</pluginRepository>

</pluginRepositories>

</profile>

</profiles>

<!-- 啟用nexus私服倉庫配置-->

<activeProfiles>

<activeProfile>nexus</activeProfile>

</activeProfiles>

</settings>

maven工程的pom.xml配置nexus私服部署,新增如下內容:

<distributionManagement>

<repository>

<id>user-releases</id>

<name>User Project Release</name>

<url>http://192.168.154.146:8081/nexus/content/repositories/releases/</url>

</repository>

<snapshotRepository>

<id>user-snapshots</id>

<name>User Project SNAPSHOTS</name>

<url>http://192.168.154.146:8081/nexus/content/repositories/snapshots/</url>

</snapshotRepository>

</distributionManagement>

執行 mvn: clean install deploy命令,釋出到nexus私服倉庫

搭建 SonarQube 程式碼質量管理平臺

MySQL資料庫準備,修改MySQL預設儲存引擎INNODB和 查詢快取(官方文件推薦)

修改配置之前請先配置(良好習慣),修改內容如下:

[mysqld]

default-storage-engine=INNODB

#INNODB表索引快取大小

innodb_buffer_pool_size=256M

#查詢快取

query_cache_type=1

query_cache_size=64M

sudo cp /etc/my.cnf /etc/my.cnf.bak

sudo vi /etc/my.cnf


修改完成後,重啟mysql

systemctl restart mysqld

mysql cli中執行如下兩條語句,可驗證配置是否成功

mysql -u root -p -h 192.168.154.146

show variables like '%storage_engine%';

 

show variables like '%query_cache%';

 

安裝 sonarqube

 

解壓後,修改sonar.properties,同樣修改前請先備份(良好習慣),內容如下:

sonar.jdbc.username=root

sonar.jdbc.password=123456

sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncodi

ng=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance

sonar.jdbc.maxActive=20

sonar.jdbc.maxIdle=5

sonar.jdbc.minIdle=2

sonar.jdbc.maxWait=5000

sonar.jdbc.minEvictableIdleTimeMillis=600000

sonar.jdbc.timeBetweenEvictionRunsMillis=30000

sonar.web.host=0.0.0.0

sonar.web.context=/sonar

sonar.web.port=9999

sudo vi conf/sonar.properties


配置 conf/wrapper.conf,把java命令改為絕對路徑

 

vi conf/wrapper.conf

wrapper.java.command=/home/kenny/jdk/jdk1.7.0_80/bin/java

完成配置後,安裝外掛

注:外掛版本不相容會導致各種bug,本人經過幾番踩坑後,最終收集到了所需要的外掛包,百度雲公開下載地址:

複製下載好的jarextensions/plugins/(命令略)

 

以上步驟完成後,在mysql中建立一個數據庫sonar

mysql -u root -p -h 192.168.154.146

CREATE DATABASE IF NOT EXISTS `sonar` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

設定 sonar開機啟動,在/usr/lib/systemd/system/目錄下建立sonar.service,內容如下:

[Unit]

Description=sonar

After=network.target

[Service]

Type=forking

Environment="JAVA_HOME=/home/kenny/jdk/jdk1.7.0_80"

ExecStart=/home/kenny/sonar/sonarqube-4.5.7/bin/linux-x86-64/sonar.sh start

ExecReload=/home/kenny/sonar/sonarqube-4.5.7/bin/linux-x86-64/sonar.sh restart

ExecStop=/home/kenny/sonar/sonarqube-4.5.7/bin/linux-x86-64/sonar.sh stop

PrivateTmp=true

User=kenny

Group=kenny

[Install]

WantedBy=multi-user.target

sudo vi /usr/lib/systemd/system/sonar.service

 

確保 bin/linux-x86-64/目錄下的sonar.shwrapper許可權為使用者kenny可執行

chmod 744 bin/linux-x86-64/sonar.sh

chmod 744 bin/linux-x86-64/ wrapper

設定sonar開機啟動和啟動服務

systemctl enable sonar

systemctl start sonar

開放 sonar

sudo firewall-cmd --zone=public --add-port=9999/tcp --permanent

sudo firewall-cmd --reload

登入,使用者名稱admin,密碼admin

 

到這一步,sonar已經安裝完成了

搭建hudson持續整合(整合SVNMavenSonar

jenkins的前身就是hudson,本文就以hudson為例,搭建步驟與jenkins大致相同

 

部署到 hudson-tomcat上(步驟略),修改tomcatconf/server.xml,埠號修改為8888和增加URIEncoding=UTF-8,修改與svnadmin-tomcat所有衝突的埠號


 


設定 hudson-tomcat開機啟動

tomcat初始配置,內容如下:

#add tomcat pid

CATALINA_PID="/home/kenny/tomcat/hudson-tomcat/tomcat.pid"

#add java opts

JAVA_OPTS="-XX:PermSize=512M -XX:MaxPermSize=512m -Xms1024M -Xmx1024M -XX:MaxNewSize=512m"

vi bin/setenv.sh

建立 hudson.service

[Unit]

Description=hudson

After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]

Type=forking

Environment="JAVA_HOME=/home/kenny/jdk/jdk1.7.0_80"

PIDFile=/home/kenny/tomcat/hudson-tomcat/tomcat.pid

ExecStart=/home/kenny/tomcat/hudson-tomcat/bin/startup.sh

ExecReload=/bin/kill -s HUP $MAINPID

ExecStop=/bin/kill -s QUIT $MAINPD

PrivateTmp=true

User=kenny

Group=kenny

[Install]

WantedBy=multi-user.target

sudo vi /usr/lib/systemd/system/hudson.service

 

修改 /usr/lib/systemd/system/hudson.service許可權

sudo chown -R kenny.kenny /usr/lib/systemd/system/hudson.service

開機啟動,啟動hudson

systemctl enable hudson

systemctl start hudson

開放hudson

sudo firewall-cmd --zone=public --add-port=8888/tcp --permanent

sudo firewall-cmd --reload

訪問hudsonhttp://192.168.154.146:8888/hudson,安裝核心外掛(必須安裝)

 

系統管理Configure Security

 

註冊使用者



使用者名稱 kenny密碼123456

 

系統管理 → 系統設定




系統管理 → 管理外掛

 



新建任務

 

 


tomcat的restart.sh shell指令碼

restart.sh 

export JAVA_HOME=/home/kenny/jdk/jdk1.7.0_80

/home/kenny/tomcat/apache-tomcat-7.0.78/bin/shutdown.sh

sleep 10

rm -rf /home/kenny/tomcat/apache-tomcat-7.0.78/webapps/*

/home/kenny/tomcat/apache-tomcat-7.0.78/bin/startup.sh

restart.sh 需要配合setenv.sh

CATALINA_PID="/home/kenny/tomcat/apache-tomcat-7.0.78/tomcat.pid"