CentOS7持續整合自動化部署
搭建持續整合自動化部署服務需要先配置好 JDK7,Tomcat,MySQL
禁止 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
重啟成功後,開放 http和https 防火牆埠,分別執行如下兩個命令
sudo firewall-cmd --permanent --add-service=http--permanent --add-service=
sudo firewall-cmd --reload
成功開放埠後,在瀏覽器中訪問 Apache,地址為http://IP(此處CentOS7的IP為192.168.154.145,根據實際IP進行訪問)
瀏覽器中出現如上介面,則Apache服務已經搭建成功
Apache與SVN整合
安裝 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.http和authz配置檔案
新建 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
配置Apache與SVN庫關聯
在 /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配置檔案中即可,到這裡Apache與SVN的整合步驟就已經完成了
搭建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.war到CentOS7
我使用的是 SSH Secure File Transfer Client工具,當然也可以用其他的FTP工具,如XFTP
上傳成功後,解壓一份Tomcat7,命名為svnadmin-tomcat,刪除webapps下所有檔案後,將svnadmin.war部署到svnadmin-tomcat的webapps目錄
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庫的許可權設定就完成了
搭建Nexus(Maven私服倉庫)
我下載的是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
登入,Username:admin,Password:admin123
到這一步 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,本人經過幾番踩坑後,最終收集到了所需要的外掛包,百度雲公開下載地址:
複製下載好的jar到extensions/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.sh和wrapper許可權為使用者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持續整合(整合SVN,Maven,Sonar)
jenkins的前身就是hudson,本文就以hudson為例,搭建步驟與jenkins大致相同
部署到 hudson-tomcat上(步驟略),修改tomcat的conf/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
訪問hudson,http://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"