系统:centos7,以部署spring cloud 项目的jar包为例。
1,准备环境:jdk maven
首先,需要jdk是必须要安装好的。本人使用的linux是centos,直接使用yum安装。
先找到合适的版本:
yum search java | grep jdk
然后运行安装:
yum install 合适版本全称
安装maven(看个人使用的项目构建工具自行选择)
yum install maven
安装git(看个人项目管理工具自行选择)
yum install git
2,安装Jenkins
官网下载安装包:https://jenkins.io/download/ 。 按照自己的系统选择下载。
软件准备:
jenkins-2.7.4-1.1.noarch.rpm java环境 |
安装jenkins:
[root@localhost modules]# rpm -ih jenkins-2.7.4-1.1.noarch.rpm
|
jenkins 常用命令:
service jenkins start/stop/restart
chkconfig jenkins on
jenkins的目录结构:
/usr/lib/jenkins/jenkins.war WAR包
/etc/sysconfig/jenkins 配置文件
/var/lib/jenkins/ 默认的JENKINS_HOME目录
/var/log/jenkins/jenkins.log Jenkins日志文件
修改jenkins端口:
vim /etc/sysconfig/jenkins
JENKINS_PORT="8888"
防火墙、端口开放设置:
iptables设置:
[root@localhost modules]# vim /etc/sysconfig/iptables
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
firewalld设置:
firewall-cmd --zone=public --add-port=8888/tcp --permanent
firewall-cmd --zone=public --add-port=8888/udp --permanent
firewall-cmd --reload
默认密码:
[root@localhost secrets]# cat /var/lib/jenkins/secrets/initialAdminPassword
97c675381d524414ba11e61c4f4b7ef0
安装插件:
jenkins修改启动用户,解决执行脚本权限问题
1.将jenkins账号分别加入到root组中
gpasswd -a root jenkins
2.修改/etc/sysconfig/jenkins文件中,
# user id to be invoked as (otherwise will run as root; not wise!)
JENKINS_USER=root
JENKINS_GROUP=root
修改为root权限运行
3.重启Jenkins
service Jenkins restart
部署脚本(方案一)
#maven打包
mvn clean package
#杀掉现有进程
sh /root/shutdown.sh cb-app
#备份,更新jar包
today=$(date +%Y-%m-%d-%H%M%S)
mv /root/jar-path/cb-app.jar /root/jar-path/backup/cb-app-$today.jar
mv /var/lib/jenkins/workspace/cb-user/target/cb-app.jar /root/jar-path
#重设buildId,守护进程不被杀死(Jenkinsbuild后会杀死所有子进程)
export BUILD_ID=dontKillMe
#启动
nohup java -jar -Xms256m -Xmx512m -jar /root/jar-path/cb-app.jar >/dev/null 2>&1 &
#必须sleep几秒钟,否则无法启动
sleep 5s
部署脚本(方案二)
注:cb-app为jar包名称。
jenkins-server.sh脚本内容:
#!/bin/sh
if [ ! -n "$JAVA_HOME" ]; then
#JDK安装路径
export JAVA_HOME="/home/jdk1.8.0_144"
fi
#进程名称(jar包名称)
PROCESS_NAME=$1
#进程ID
PID=0
#Jenkins工作空间路径
JENKINS_WORKSPACE="/var/lib/jenkins/workspace"
#jar包放置的目标位置(自定义)
JAR_TAGET_PATH="/root/jar-path/"
#jar备份位置(自定义)
JAR_BACKUP_PATH="/root/jar-path/backup"
#maven打包
cd $JENKINS_WORKSPACE/$PROCESS_NAME
mvn clean package
#杀掉已有进程
javaps=`$JAVA_HOME/bin/jps -l | grep $PROCESS_NAME`
if [ -n "$javaps" ]; then
PID=`echo $javaps | awk '{print $1}'`
else
PID=0
fi
echo 'running PID:'$PID
if [ $PID -ne 0 ]; then
echo -n "Stopping $PROCESS_NAME(PID=$PID)..."
kill -9 $PID
echo "[kill process success-PID:$PID]"
else
echo "$PROCESS_NAME is not running"
fi
echo "===================================================KILL PROCESS SUCCESSFUL==========================================================="
#jar包备份,移动至标的位置
today=$(date +%Y-%m-%d-%H%M%S)
mv $JAR_TAGET_PATH/$PROCESS_NAME.jar $JAR_BACKUP_PATH/$PROCESS_NAME-$today.jar
mv $JENKINS_WORKSPACE/$PROCESS_NAME/target/$PROCESS_NAME.jar $JAR_TAGET_PATH
echo "jar包部署路径:$JAR_TAGET_PATH/$PROCESS_NAME.jar"
echo "jar包备份路径:$JAR_BACKUP_PATH/$PROCESS_NAME-$today.jar"
echo "===================================================MANAGE JAR SUCCESSFUL============================================================="
#启动jar包
export BUILD_ID=dontKillMe
nohup java -jar -Xms256m -Xmx512m -jar $JAR_TAGET_PATH/$PROCESS_NAME.jar >/dev/null 2>&1 &
sleep 5s
echo "$PROCESS_NAME start success!"
echo "===================================================START JAR SUCCESSFUL==============================================================="