CentOS7持续集成自动化部署
搭建持续集成自动化部署服务需要先配置好 JDK7,Tomcat,MySQL环境,没有配置的同学可以参考CentOS安装JDK+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=https
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
访问 https://code.google.com/archive/p/jsvnadmin/downloads,下载svnadmin-3.0.5.zip
(不能翻墙的同学可以到我的百度云盘下载,地址:http://pan.baidu.com/s/1jIh0M0I )
我下载到了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私服仓库)
官网下载 https://www.sonatype.com/download-oss-sonatype
我下载的是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
访问 nexus, http://192.168.154.146:8081/nexus
登录,Username:admin,Password:admin123
到这一步 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
修改完成后,重启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
官网 https://www.sonarqube.org,下载 sonarqube-4.5.7.zip
解压后,修改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,本人经过几番踩坑后,最终收集到了所需要的插件包,百度云公开下载地址:http://pan.baidu.com/s/1eRYL4KM
复制下载好的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
访问 sonar, http://192.168.154.146:9999/sonar
登录,用户名admin,密码admin
到这一步,sonar已经安装完成了
搭建hudson持续集成(整合SVN,Maven,Sonar)
jenkins的前身就是hudson,本文就以hudson为例,搭建步骤与jenkins大致相同
官网 http://hudson-ci.org/ ,下载hudson-3.3.3.war
部署到 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"