前提:
生產環境不能訪問外網
安裝:
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