Bran's Blog not try just do best
阿新 • • 發佈:2019-01-25
0x000
我是採用apt-get install的方式安裝jenkins的,由於開發機上存在多個dev類的服務需要用到預設的8080埠,需要更改jenkins的埠。
0x001
網上多數教程是直接修改/etc/init.d/jenkins的配置,但是對於我最新版的一直改不了,所以多研究了下jenkins的配置檔案。
jenkins有兩個配置檔案,
1. 啟動檔案/etc/init.d/jenkins
2. 預設配置檔案/etc/default/jenkins
很多人按照網上的教程修改埠號,由於不理解shell指令碼,所以最終還是無法成功,我這個方法能確保成功。
0x002
/etc/default/jenkins有一個預設埠號,可以修改為你需要的如9090,或者-1表示禁用,這個埠號在後面配置也需要。
# port for HTTP connector (default 8080; disable with -1)
HTTP_PORT=9090
/etc/init.d/jenkins 啟動指令碼可以看到一段設定tcp_port的shell,找到check_tcp_port(),可以理解了, 如果$HTTP_PORT變數的埠號可用,則設定為其埠號,如果這個埠號不可用,則設定為預設的8080埠號。
許多人修改了這裡的8080,但是$HTTP_PORT
沒有修改,只要$HTTP_PORT
不衝突,jenkins不會修改為你需要的埠號,這才是最準確的原因。
# Verify that the jenkins port is not already in use, winstone does not exit
# even for BindException
check_tcp_port "http" "$HTTP_PORT" "8080" || return 2
check_tcp_port() {
local service=$1
local assigned=$2
local default=$3
if [ -n "$assigned" ]; then
port=$assigned
else
port=$default
fi
count=`netstat --listen --numeric-ports | grep \:$port [[:space:]] | grep -c . `
if [ $count -ne 0 ]; then
echo "The selected $service port ($port) seems to be in use by another program "
echo "Please select another port to use for $NAME"
return 1
fi
}
最後重啟jenkins
sudo /etc/init.d/jenkins restart
ps -def | grep java
檢視下是否設定成功
jenkins 15824 2288 0 20:36 ? 00:00:00 /usr/bin/daemon --name=jenkins --inherit --env=JENKINS_HOME=/var/lib/jenkins --output=/var/log/jenkins/jenkins.log --pidfile=/var/run/jenkins/jenkins.pid -- /usr/bin/java -Djava.awt.headless=true -jar /usr/share/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=9090 --ajp13Port=-1
jenkins 15825 15824 0 20:36 ? 00:00:45 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/jenkins/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=9090 --ajp13Port=-1
bran 16259 15144 0 21:53 pts/13 00:00:00 grep --color=auto java
good, 成功了!
0x003
所以建議以上兩個配置檔案都修改,這樣能保證不管衝突與否,都能修改為你需要的埠號
done!