參考官方提供的安裝教程:https://jenkins.io/doc/book/installing/,能夠發現官方推薦使用Docker進行安裝。雖然用Docker有不少好處,但也有缺點。html
下面是各類安裝方法:java
不管怎麼的安裝方法,jenkins在啓動時,都會在運行用戶的目錄下生成.jenkins文件夾,此文件夾用於存放配置和項目文件,所以,想要備份和遷移jenkins的能夠在此文件夾入手。nginx
1、Dockergit
Docker運行簡單,無需關心Java環境,但弊端是不能使用Docker版的Jenkins來打包Docker,但可使用子節點的形式來實現。還有就是Docker啓東市參數的配置實際上是比較少的,沒那麼靈活。其實研究到最後你會發現它的運行也就是java -var jenkins.war的形式,那麼能夠經過改寫容器裏面的進程啓動參數來增長可配置參數的靈活性。github
# 下載鏡像 # 最新版 docker pull jenkinsci/blueocean # 指定版 # docker pull jenkinsci/blueocean:1.3.6 # 運行 docker run \ -u root \ --rm \ -d \ -p 8080:8080 \ -p 50000:50000 \ -v jenkins-data:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ jenkinsci/blueocean
說明:web
1 (可選) jenkinsci/blueocean
關閉時自動刪除Docker容器(下圖中的實例化)。若是您須要退出Jenkins,這能夠保持整潔。2 (可選) jenkinsci/blueocean
在後臺運行容器(即「分離」模式)並輸出容器ID。若是未指定此選項,則會在終端窗口中輸出正在運行的此容器的Docker日誌。3 映射(即「發佈」) jenkinsci/blueocean
容器的端口8080到主機上的端口8080。第一個數字表示主機上的端口,而最後一個表示容器的端口。所以,若是您-p 49000:8080
爲此選項指定,則將經過端口49000訪問主機上的Jenkins。4 (可選)將 jenkinsci/blueocean
容器的端口50000 映射到主機上的端口50000。只有在其餘計算機上設置了一個或多個基於JNLP的Jenkins代理時才須要這樣作,而這些代理又與jenkinsci/blueocean
容器交互(充當「主」Jenkins服務器,或簡稱爲「Jenkins master」)。基於JNLP的Jenkins代理默認經過TCP端口50000與Jenkins主機通訊。您能夠經過「配置全局安全性」 頁面更改Jenkins主服務器上的此端口號。若是您要將JNSLP代理的 Jenkins主服務器TCP端口 值更改成51000(例如),那麼您須要從新運行Jenkins(經過此docker run …
命令)並指定此「發佈」選項,例如-p 52000:51000
,其中最後一個值與Jenkins主服務器上的此更改值匹配,第一個值是Jenkins主服務器上的端口號,基於JNLP的Jenkins代理經過該端口號與Jenkins主服務器進行通訊 - 即52000。5 (可選但強烈建議)使用名稱 /var/jenkins_home
將容器中的目錄映射到Docker 卷jenkins-data
。若是此卷不存在,則此docker run
命令將自動爲您建立卷。若是您但願每次從新啓動Jenkins時都保持Jenkins狀態(經過此docker run …
命令),則須要此選項 。若是未指定此選項,則Jenkins將在每次從新啓動後有效地重置爲新實例。
注意: 所述的jenkins-data
體積也能夠獨立地使用所建立的docker volume create
:命令docker volume create jenkins-data
代替映射/var/jenkins_home
在Docker卷的目錄中,您還能夠將此目錄映射到計算機本地文件系統上的目錄。例如,指定該選項-v $HOME/jenkins:/var/jenkins_home
會將容器的/var/jenkins_home
目錄映射 到 本地計算機上目錄中的jenkins
子目錄,該子目錄$HOME
一般爲/Users/<your-username>/jenkins
或/home/<your-username>/jenkins
。6 (可選) /var/run/docker.sock
表示Docker守護程序經過其偵聽的基於Unix的套接字。此映射容許jenkinsci/blueocean
容器與Docker守護程序通訊,若是jenkinsci/blueocean
容器須要實例化其餘Docker容器,則須要該守護程序。若是運行語法包含agent
帶docker
參數的部分的聲明性管道,則此選項是必需的 - 即agent { docker { … } }
。在Pipeline Syntax頁面上閱讀更多相關信息 。7 jenkinsci/blueocean Docker鏡像
。若是還沒有下載此鏡像,則此docker run
命令將自動爲您下載鏡像。此外,若是自上次運行此命令後發佈了對此映像的任何更新,則再次運行此命令將自動爲您下載這些已發佈的映像更新。
注意:也可使用如下docker pull
命令單獨下載(或更新)此Docker鏡像 :docker pull jenkinsci/blueocean
文件主目錄:docker
上面安裝指定了-v jenkins-data:/var/jenkins_home,那麼此時在Docker容器目錄已經變了,再也不是用戶目錄下的.jenkins文件夾,變成/var/jenkins_home文件夾;當這個選項沒有填寫時纔是默認的.jenkins文件夾。若是想要變成宿主機也有這個文件夾映射,須要這樣寫-v /var/jenkins_home:/var/jenkins_home。shell
查看日誌:apache
此時的日誌沒有在容器裏沒有指定的位置,因此只能經過docker logs <name>進行日誌的查看。windows
2、Tomcat部署war包
這個方法最簡單,直接交給tomcat容器,而且jvm參數這些也一樣由tomcat進行配置;那麼此時能夠配置的選項已經有所折扣,主目錄默認放在用戶目錄下的.jenkins文件夾;而進入系統設置後會提示「代理服務器設置錯誤」等信息,且沒法修復。
# 在此地址下載war包http://mirrors.jenkins.io/war-stable/ wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war -O jenkins.war # 移動到tomcat目錄 mv jenkins.war $TOMAT_HOME/webapps/
# 最後訪問地址
http://$TOMCAT_IP:$TOMCAT_PORT/jenkins
主目錄:
能夠修改,不過須要結合Tomcat的啓動腳本,把這些參數加上去:
日誌:
變成這個:/data/service/tomcat/logs/catalina.out
官方參考:
https://wiki.jenkins.io/display/JENKINS/Tomcat
3、yum源安裝
這個應該是網上最多人用的方式,其運行原理也就是java -jar jenkins.war,同時你只能經過這種方式安裝最新版本,某些指定版本不必定能夠安裝的到,固然這都是能夠解決的,好比在這裏https://pkg.jenkins.io/redhat-stable/下載特定的RPM包進行安裝便可,一樣RPM包沒有那麼多指定版本能夠選擇,但能夠下載war包替換便可實現指定版本的安裝;而且須要JDK的路徑必須爲以下所示:
/usr/lib/jvm/java-1.8.0/bin/java /usr/lib/jvm/jre-1.8.0/bin/java/usr/bin/java
安裝好後的文件以下:
/etc/init.d/jenkins /etc/logrotate.d/jenkins /etc/sysconfig/jenkins /usr/lib/jenkins /usr/lib/jenkins/jenkins.war /usr/sbin/rcjenkins /var/cache/jenkins /var/lib/jenkins /var/log/jenkins
安裝腳本:
# 安裝依賴 yum install -y epel-release wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key # 安裝jenkins yum install jenkins
主目錄:
在配置文件/etc/sysconfig/jenkins下進行配置,默認爲:/var/lib/jenkins,同時這個文件也是能夠配置jenkins的啓動參數等。
日誌:
在目錄/var/log/jenkins下
官方參考:
https://wiki.jenkins.io/display/JENKINS/Installing+Jenkins+on+Red+Hat+distributions
4、war包的java -jar運行
目前這種方式應該是最好的,採用java -jar的運行,參數能夠隨意指定,此運行時基於jetty的容器。
# 下載war包 # 在此地址下載war包http://mirrors.jenkins.io/war-stable/ wget http://mirrors.jenkins.io/war-stable/latest/jenkins.war -O jenkins.war
使用nohup進行運行,此方法能夠指定控制檯的日誌輸出位置,其實上面幾種方式都是這樣的方式輸出日誌的:
nohup java -jar jenkins.war > /tmp/jenkins.log 2>&1
命令參數以下:
命令行參數
Jenkins一般使用端口8080啓動。可是,若是啓動了其餘Web服務,您可能會發現此端口已被佔用。您可使用但願Jenkins運行的端口
--httpPort=
$HTTP_PORT
在哪裏指定其餘端口$HTTP_PORT
。其餘命令行參數包括:
命令行參數
描述
-help 顯示全部可用選項及其用法 --httpPort=$HTTP_PORT
使用標準http協議在端口$HTTP_PORT上運行Jenkins偵聽器。默認端口爲8080.要禁用(由於您使用的是https),請使用端口
-1
。此選項不會影響在Jenkins邏輯(UI,JNLP文件等)中生成的根URL; 它由全局配置中指定的Jenkins URL定義。--httpListenAddress=$HTTP_HOST
將Jenkins綁定到$HTTP_HOST表示的IP地址。默認值爲0.0.0.0 - 即偵聽全部可用接口。
例如,要僅偵聽來自localhost的請求,您可使用: - httpListenAddress=127.0.0.1--httpsPort=$HTTP_PORT
在端口$HTTP_PORT上使用HTTPS協議。此選項不會影響在Jenkins邏輯(UI,JNLP文件等)中生成的根URL; 它由全局配置中指定的Jenkins URL定義。
--httpsListenAddress=$HTTPS_HOST
綁定Jenkins以偵聽$HTTPS_HOST表示的IP地址上的HTTPS請求。
--http2Port=$HTTP_PORT 在端口$HTTP_PORT上使用HTTP/2協議。此選項不會影響在Jenkins邏輯(UI,JNLP文件等)中生成的根URL; 它由全局配置中指定的Jenkins URL定義。 --http2ListenAddress=$HTTPS_HOST 綁定Jenkins以偵聽$HTTPS_HOST表示的IP地址上的HTTP/2請求。 --prefix=$PREFIX
運行Jenkins以在URL末尾包含$PREFIX。
例如,要使Jenkins能夠訪問,請設置--prefix=/jenkins
http
://
myServer
:8080/jenkins
--ajp13Port=$AJP_PORT
使用標準AJP13協議在端口$AJP_PORT上運行Jenkins監聽器。默認值爲端口8009.要禁用(由於您使用的是https),請使用端口
-1
。--ajp13ListenAddress=$AJP_HOST
將Jenkins綁定到$AJP_HOST表示的IP地址。默認值爲0.0.0.0 - 即偵聽全部可用接口。
--argumentsRealm.passwd.$ADMIN_USER
設置用戶$ADMIN_USER的密碼。若是啓用了Jenkins安全性,則必須以$ADMIN_USER身份登陸才能配置Jenkins或Jenkins項目。注意:您還必須指定此用戶具備管理員角色。(見下面的下一個論點)。
--argumentsRealm.roles.$ADMIN_USER=admin
設置$ADMIN_USER是管理用戶,若是啓用了Jenkins的安全性,則能夠配置Jenkins。有關更多信息,請參閱保護Jenkins。
--sessionTimeout=$SESSION_TIMEOUT 將http會話超時值設置爲$SESSION_TIMEOUT分鐘。默認爲webapp指定的內容,而後是60分鐘
--useJmx 啓用Jetty JMX(參見文檔) -Xdebug -Xrunjdwp:transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n
設置調試開啓,您能夠訪問$DEBUG_PORT上的調試。
-logfile=$LOG_PATH/winstone_`date +「%Y%m-%d_%H-%M」`.log
記錄到所需的文件
-XX:PermSize=512M -XX:MaxPermSize=2048M -Xmn128M -Xms1024M -Xmx2048M
官方參考:
https://wiki.jenkins.io/display/JENKINS/Starting+and+Accessing+Jenkins
5、反向代理設置
其實無需在Jenkins的jetty容器配置SSL,只需在Nginx配置便可。
# 普通方向代理 server { listen 80; server_name www.jenkins.com; client_max_body_size 200m; location / { sendfile off; proxy_pass http://127.0.0.1:8080; proxy_redirect default; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_max_temp_file_size 0; #this is the maximum upload size client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffering off; proxy_request_buffering off; # Required for HTTP CLI commands in Jenkins > 2.54 proxy_set_header Connection ""; # Clear for keepalive } }
SSL反向代理 server { listen 443; server_name www.jenkins.com; ssl on; root html; index index.html index.htm; ssl_certificate /data/service/nginx_vhost/cert/215082065120461.pem; ssl_certificate_key /data/service/nginx_vhost/cert/215082065120461.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { sendfile off; proxy_pass http://127.0.0.1:8080; proxy_redirect default; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_max_temp_file_size 0; #this is the maximum upload size client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffering off; proxy_request_buffering off; # Required for HTTP CLI commands in Jenkins > 2.54 proxy_set_header Connection ""; # Clear for keepalive } }
官方參考:
https://wiki.jenkins.io/display/JENKINS/Jenkins+behind+an+NGinX+reverse+proxy
6、總結
一、war包使用java -jar運行實際上是個趨勢,Docker雖然快,但也有弊端。
二、yum其實配置最好,什麼項都很是清晰,只是目錄規劃不能自定義,須要後期維護。
三、war包直接運行最靈活,要什麼參數均可以自行配置。
四、tomcat部署最弱,依託於tomcat容器後續配置可能要兼顧考慮。
五、每一個版本的安裝各有千秋,適合本身的纔是最好的。我我的以爲yum安裝仍是不錯的,至少配置是標準的。
六、對於運行的用戶來講,root無疑是最爽的,但存在風險,容易rm -rf /,但想想,對於這種狀況強制分配權限就能夠解決,但可能會存在BUG,若是確實要作,能夠經過新建jenkins用戶實現。
7、一鍵安裝腳本
https://github.com/easonjim/centos-shell/tree/master/jenkins
參考:
https://www.blazemeter.com/blog/how-to-install-jenkins-on-the-apache-tomcat-server(tomcat)
https://www.vultr.com/docs/how-to-install-jenkins-on-centos-7(yum)
https://jenkins.io/doc/book/installing/ (官方教程)
https://blog.whsir.com/post-2505.html