CentOS7持续集成自动化部署

搭建持续集成自动化部署服务需要先配置好 JDK7TomcatMySQL环境,没有配置的同学可以参考CentOS安装JDK+Tomcat+MySQL

禁止 SELINUX 访问控制

修改配置之前先备份(良好习惯)

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

备份后,修改selinux配置

sudo vi /etc/selinux/config

CentOS7持续集成自动化部署

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

CentOS7持续集成自动化部署

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进行访问)

 CentOS7持续集成自动化部署

浏览器中出现如上界面,则Apache服务已经搭建成功

ApacheSVN整合

安装 svn

sudo yum -y install subversion

查看SVN是否安装成功

svn --version

 CentOS7持续集成自动化部署

出现version相关信息,证明SVN已经安装成功

安装Apache 整合 SVN 模块

sudo yum -y install mod_dav_svn

查看ApacheSVN模块是否安装成功

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

 CentOS7持续集成自动化部署

配置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

访问 https://code.google.com/archive/p/jsvnadmin/downloads下载svnadmin-3.0.5.zip

(不能*的同学可以到我的百度云盘下载,地址:http://pan.baidu.com/s/1jIh0M0I 

 

 CentOS7持续集成自动化部署

 

我下载到了windows上的E:\jsvnadmin,直接解压缩

准备MySQL数据库

进入E:\jsvnadmin\svnadmin-3.0.5\db目录

 

 CentOS7持续集成自动化部署

 

进入 E:\jsvnadmin\svnadmin-3.0.5\db\lang目录

 CentOS7持续集成自动化部署

 

远程登录在CentOS7上的MySQL,通过source命令执行以上两个sql文件完成svn数据库环境搭建

mysql -u root -p -h IP  (此处IP改为CentOS服务器的IP,如192.168.154.145

 CentOS7持续集成自动化部署

执行sql文件之前,先创建一个数据库

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

 CentOS7持续集成自动化部署

切换到 svnadmin数据库,正式执行sql文件

 CentOS7持续集成自动化部署

CentOS7持续集成自动化部署

执行完成后,查看数据库表

show tables;

 CentOS7持续集成自动化部署

可见一共有如上8张表

上传 svnadmin.warCentOS7

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

 CentOS7持续集成自动化部署

上传成功后,解压一份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连接属性

 CentOS7持续集成自动化部署

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

 CentOS7持续集成自动化部署

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

 CentOS7持续集成自动化部署

修改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

 CentOS7持续集成自动化部署

登录后自动进入项目管理

 CentOS7持续集成自动化部署

创建一个SVN版本库

 CentOS7持续集成自动化部署

注:类型一定要选择http(多库)

提交后,可见first版本库已经创建完成

 CentOS7持续集成自动化部署

svn 目录下也创建了 first 文件夹

 CentOS7持续集成自动化部署

此时要修改 first文件夹的权限

sudo chown -R apache.apache first

chmod 777 /svn/first

添加 svn用户

我创建了一个账号kenny,密码123456

提交账号密码后,会在当前页面上显示

 CentOS7持续集成自动化部署

点击项目,然后从项目列表中点击对应的URL进入项目权限管理页面

 CentOS7持续集成自动化部署

 

设置admin用户为manager用户组,具有对first库可读可写的权限

 CentOS7持续集成自动化部署

设置 kenny用户为developer用户组,具有对first库可读可写的权限

 CentOS7持续集成自动化部署

到这里first库的权限设置就完成了

CentOS7持续集成自动化部署

搭建NexusMaven私服仓库)

官网下载 https://www.sonatype.com/download-oss-sonatype

 

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

 CentOS7持续集成自动化部署

上传解压(步骤略)后,配置开机启动 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

 CentOS7持续集成自动化部署

备份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  

 CentOS7持续集成自动化部署

创建 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

 CentOS7持续集成自动化部署

修改 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

访问 nexus http://192.168.154.146:8081/nexus

 CentOS7持续集成自动化部署

 

登录,UsernameadminPasswordadmin123

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

上传 jar war nexus私服

官网 http://maven.apache.org/download.cgi 下载安装maven,配置环境变量

备份本地 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

CentOS7持续集成自动化部署

修改完成后,重启mysql

systemctl restart mysqld

mysql cli中执行如下两条语句,可验证配置是否成功

mysql -u root -p -h 192.168.154.146

show variables like '%storage_engine%';

 CentOS7持续集成自动化部署

show variables like '%query_cache%';

 CentOS7持续集成自动化部署

安装 sonarqube

官网 https://www.sonarqube.org,下载 sonarqube-4.5.7.zip

 CentOS7持续集成自动化部署

解压后,修改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

CentOS7持续集成自动化部署

配置 conf/wrapper.conf,把java命令改为绝对路径

 CentOS7持续集成自动化部署

vi conf/wrapper.conf

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

完成配置后,安装插件

注:插件版本不兼容会导致各种bug,本人经过几番踩坑后,最终收集到了所需要的插件包,百度云公开下载地址:http://pan.baidu.com/s/1eRYL4KM

复制下载好的jarextensions/plugins/(命令略)

 CentOS7持续集成自动化部署

以上步骤完成后,在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

 CentOS7持续集成自动化部署

确保 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

访问 sonar http://192.168.154.146:9999/sonar

登录,用户名admin,密码admin

 CentOS7持续集成自动化部署

到这一步,sonar已经安装完成了

搭建hudson持续集成(整合SVNMavenSonar

jenkins的前身就是hudson,本文就以hudson为例,搭建步骤与jenkins大致相同

官网 http://hudson-ci.org/ ,下载hudson-3.3.3.war

 CentOS7持续集成自动化部署

部署到 hudson-tomcat上(步骤略),修改tomcatconf/server.xml,端口号修改为8888和增加URIEncoding=UTF-8,修改与svnadmin-tomcat所有冲突的端口号

CentOS7持续集成自动化部署

 CentOS7持续集成自动化部署

CentOS7持续集成自动化部署

设置 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

 CentOS7持续集成自动化部署

修改 /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,安装核心插件(必须安装)

 CentOS7持续集成自动化部署

系统管理Configure Security

 CentOS7持续集成自动化部署

注册用户

CentOS7持续集成自动化部署

CentOS7持续集成自动化部署

用户名 kenny密码123456

 CentOS7持续集成自动化部署

系统管理 → 系统设置

CentOS7持续集成自动化部署

CentOS7持续集成自动化部署

CentOS7持续集成自动化部署

CentOS7持续集成自动化部署

系统管理 → 管理插件

 CentOS7持续集成自动化部署

CentOS7持续集成自动化部署

CentOS7持续集成自动化部署

新建任务

 CentOS7持续集成自动化部署

 CentOS7持续集成自动化部署

CentOS7持续集成自动化部署

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"