拓扑图以下:
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”,而后开启审核。