生产环境部署jenkins
前提:
生产环境不能访问外网
安装:
1.下载jenkins的war包,将包拷贝到生产服务器/app/jenkins目录下
http://mirrors.jenkins-ci.org/war/
2.使用JDK的java命令启动jenkins
安装JDK,或者自己使用特定的JDK包启动jenkins
#我这里是拷贝的其他生产服务器上的JDK过来使用 /app/zulu8.33.0.1/bin/java -jar /app/jenkins/jenkins.war --httpPort=8060
3.浏览器是访问8060端口,复制启动时显示的密钥,进行安装
因为生产环境没有连接外网,不能下载一些插件,就直接跳过插件安装
然后登陆成功后,我们进行下一步操作
4.将jenkins服务停止(ctrl+c),并将jenkins默认的家目录.jenkins的内容拷贝到我们指定的目录
这样做的好处,我也不是太明白,默认的家目录,一般是启动程序后创建的,可能是觉得让自己的目录把握更爽?
# 创建jenkins的家目录,不过之后的启动脚本,要自行设置其目录为jenkins家目录 mkdir /app/jenkins/data # 将默认家目录的所有文件和目录移动到我们创建的家目录下 mv /app/.jenkins/* /app/jenkins/data/
# 将家目录下的war包,我们单独拿到jenkins目录下,大概是想让之后启动时指定webroot更方便8 mv /app/jenkins/data/war /app/jenkins/ # 创建日志目录,用于之后启动脚本将信息写入到其中 mkdir /app/jenkins/logs
5.写启动脚本,vi /app/jenkins/jenkins_start.sh
#!/bin/bash #------------------------------- # jenkins start scripts # Author:caixukun # Last Modified:2019-7-4 15:40 #------------------------------ export JENKINS_HOME=/app/jenkins/data pid=`ps -ef | grep jenkins.war | grep -v grep | awk '{print $2}'` if [ -z ${pid} ];then echo "jenkins starting.." /app/zulu8.33.0.1/bin/java -jar /app/jenkins/jenkins.war --webroot=/app/jenkins/war --httpPort=8060 > /app/jenkins/logs/jenkins.log 2>&1 & sleep 3 pid_recheck=`ps -ef | grep jenkins.war | grep -v grep | awk '{print $2}'` if [ -z ${pid_recheck} ];then echo "started jenkins fail! log:/app/jenkins/logs/jenkins.log" else echo "started jenkins success! log:/app/jenkins/logs/jenkins.log" fi else echo "restarting jenkins..." kill -9 $pid sleep 3 /app/zulu8.33.0.1/bin/java -jar /app/jenkins/jenkins.war --webroot=/app/jenkins/war --httpPort=8060 > /app/jenkins/logs/jenkins.log 2>&1 & sleep 3 pid_recheck=`ps -ef | grep jenkins.war | grep -v grep | awk '{print $2}'` if [ -z ${pid_recheck} ];then echo "restarted jenkins fail! log:/app/jenkins/logs/jenkins.log" else echo "restarted jenkins success! log:/app/jenkins/logs/jenkins.log" fi fi
另一种启动脚本,可自我选择。
这个是另一个服务器,所以启动jenkins的方式有所不同。如果要使用,自行修改启动方式为上面脚本中的启动方式和一些目录路径即可
#!/bin/bash pid=`ps -ef | grep jenkins.war | grep -v 'grep'| awk '{print $2}'| wc -l` if [ "$1" = "start" ];then if [ $pid -gt 0 ];then echo 'jenkins is running...' else java -Djava.awt.headless=true -Dhudson.model.DirectoryBrowserSupport.CSP= -DJENKINS_HOME=/appuser/jenkins -jar /appuser/jenkins/jenkins.war --logfile=/appuser/jenkins/logs/jenkins.log --webroot=/appuser/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20 >/dev/null 2>&1 fi elif [ "$1" = "stop" ];then exec ps -ef | grep jenkins | grep -v grep | awk '{print $2}'| xargs kill -9 echo 'jenkins is stop..' else echo "Please input like this:"./start.sh start" or "./start.sh stop"" fi
7.拷贝插件
因为不能连接外网,就只能将其他服务器jenkins现成的plugins文件拷贝过来
ps:记得压缩包再拷贝,虽然文件不大,但是很多,不压缩的话拷贝就会很慢
# 删除原来有的插件目录 rm -rf /app/jenkins/plugins # 拷贝操作就自行解决
# 还有就是如果觉得删除很不保险,可以先将其备份后再删除
cd /app/jenkins/data && tar -zvcf plugins.bak.tar.gz plugins
rm -rf plugins
8.启动脚本
cd /app/jenkins && sh jenkins_start.sh
# 最后/app/jenkins目录下的文件和目录展示
ls /app/jenkins
data jenkins_start.sh jenkins.war logs war