jenkins啓動後,未監聽端口8080(java.io.FileNotFoundException: /var/cache/jenkins/war/META-INF/MANIFEST.MF)

說下背景:

使用systemctl start jenkins後,再使用lsof -i:8080查看端口狀態(也可以使用netstat -tunlp|grep 8080),並沒有信息,也就是沒有監聽8080端口(我的是8080,看自己的而定)。

查找原因

OK,遇見問題我們就解決問題,我們先來看下jenkins的日誌:

#進入jenkins日誌目錄
cd /var/log/jenkins
#查看日誌
cat jenkins.log

可以看到日誌有報錯,我們可以清楚看到java.io.FileNotFoundException: /var/cache/jenkins/war/META-INF/MANIFEST.MF (Permission denied),Permission denied的意思就是沒有權限,到這裏我們就找到原因了,就是沒有把 /var/cache/jenkins的權限賦予給用戶,解決辦法就是給用戶賦權,不想看日誌的可直接看最下面的解決辦法。

報錯摘要如下:

2020-04-16 03:09:31.292+0000 [id=1]	WARNING	winstone.Logger#logInternal: Failed to delete dirs /var/cache/jenkins/war
java.nio.file.AccessDeniedException: /var/cache/jenkins/war
	at sun.nio.fs.UnixException.translateToIOException(UnixException.java:84)
	at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:102)
	at sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:107)
	at sun.nio.fs.UnixFileSystemProvider.implDelete(UnixFileSystemProvider.java:244)
	at sun.nio.fs.AbstractFileSystemProvider.deleteIfExists(AbstractFileSystemProvider.java:108)
	at java.nio.file.Files.deleteIfExists(Files.java:1165)
	at winstone.HostConfiguration.deleteRecursive(HostConfiguration.java:330)
	at winstone.HostConfiguration.getWebRoot(HostConfiguration.java:265)
	at winstone.HostConfiguration.<init>(HostConfiguration.java:84)
	at winstone.HostGroup.initHost(HostGroup.java:66)
	at winstone.HostGroup.<init>(HostGroup.java:45)
	at winstone.Launcher.<init>(Launcher.java:167)
	at winstone.Launcher.main(Launcher.java:355)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at Main._main(Main.java:375)
	at Main.main(Main.java:151)
	
2020-04-16 03:09:31.360+0000 [id=1]	SEVERE	winstone.Logger#logInternal: Container startup failed	
java.io.FileNotFoundException: /var/cache/jenkins/war/META-INF/MANIFEST.MF (Permission denied)
	at java.io.FileOutputStream.open0(Native Method)
	at java.io.FileOutputStream.open(FileOutputStream.java:270)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:213)
	at java.io.FileOutputStream.<init>(FileOutputStream.java:162)
	at winstone.HostConfiguration.getWebRoot(HostConfiguration.java:299)
	at winstone.HostConfiguration.<init>(HostConfiguration.java:84)
	at winstone.HostGroup.initHost(HostGroup.java:66)
	at winstone.HostGroup.<init>(HostGroup.java:45)
	at winstone.Launcher.<init>(Launcher.java:167)
	at winstone.Launcher.main(Launcher.java:355)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at Main._main(Main.java:375)
	at Main.main(Main.java:151)

解決辦法:

添加用戶並修改jenkins用戶(已添加過的不用添加):

#添加用戶,自定義名稱即可
useradd qixingcxy
#修改jenkins配置,修改爲剛添加的用戶
vim /etc/sysconfig/jenkins
找到JENKINS_USER修改爲JENKINS_USER="qixingcxy"

爲用戶賦權(下面三個缺一個可能就會報錯):

#chown將指定文件的擁有者改爲指定的用戶或組,chown[選項]...[所有者][:[組]]文件
chown -R qixingcxy:qixingcxy /var/lib/jenkins
chown -R qixingcxy:qixingcxy /var/log/jenkins
chown -R qixingcxy:qixingcxy /var/cache/jenkins
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章