1. 程式人生 > >Bran's Blog not try just do best

Bran's Blog not try just do best

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!