如何在 Centos 7 的 80 端口上配置 Jenkins 运行
How to configure Jenkins to run on port 80 on Centos 7
我已经在 Centos 7 上安装了基于 Jetty 服务器的 Jenkins。
在配置文件中:/etc/sysconfig/jenkins 默认端口是 8080,一切正常,但我需要在 80 端口上移动 jenkins。
当我将 JENKINS_PORT="8080" 更改为 JENKINS_PORT="80" - jenkins 不再可用。防火墙我关了。
在日志消息中:/var/log/jenkins/jenkins.log
Aug 17, 2017 12:07:45 PM org.eclipse.jetty.util.log.JavaUtilLog warn
WARNING: FAILED ServerConnector@4082ba93{HTTP/1.1}{0.0.0.0:80}: java.net.SocketException: Permission denied
java.net.SocketException: Permission denied
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:321)
at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:236)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.server.Server.doStart(Server.java:366)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at winstone.Launcher.<init>(Launcher.java:152)
at winstone.Launcher.main(Launcher.java:352)
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:293)
at Main.main(Main.java:132)
谁能帮我解决这个问题?
你能试试这个 Centos7 防火墙设置吗?
不需要关闭防火墙。
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload
firewall-cmd --list-all
然后启动 Jenkins。
Google 把我带到了 https://confluence.atlassian.com/confkb/permission-denied-error-when-binding-a-port-290750651.html
低于 1024 的端口称为特权端口,在 Linux(以及大多数 UNIX 风格和类 UNIX 系统)中,任何非根用户都不允许打开它们。
因此,当我 运行 启动脚本 JENKINS_USER="jenkins" 时,出现了权限被拒绝的错误。
我为这个问题苦苦挣扎了几个小时。我最终解决它的方法是,在 Ubuntu 上,我将 JENKINS_USER
变量值从 $NAME 更改为 /etc/default/jenkins
中的 root。然后,我通过 运行 下面的命令重新加载了守护进程。
$ systemctl daemon-reload
最后,我以 root 身份重新启动了 jenkins。
$ service jenkins restart
正如@Nimda 回答的那样
我在下面遇到了同样的问题
SEVERE: Container startup failed
java.io.IOException: Failed to start Jetty
at winstone.Launcher.<init>(Launcher.java:186)
at winstone.Launcher.main(Launcher.java:354)
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:344)
at Main.main(Main.java:160)
Caused by: java.net.SocketException: Permission denied
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:339)
at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:307)
at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:235)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.server.Server.doStart(Server.java:395)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at winstone.Launcher.<init>(Launcher.java:184)
... 7 more
解决方案:编辑文件 /etc/sysconfig/jenkins 或任何 jenkins 的配置文件
- 将#JENKINS_USER="jenkins" 更改为任何可以 运行 作为 root
的用户
示例:JENKINS_USER="root"
希望这有帮助
80 无法访问 non-root 用户,jenkins 是 non-root 用户。我更改了端口号,然后它对我有用。
我已经在 Centos 7 上安装了基于 Jetty 服务器的 Jenkins。 在配置文件中:/etc/sysconfig/jenkins 默认端口是 8080,一切正常,但我需要在 80 端口上移动 jenkins。
当我将 JENKINS_PORT="8080" 更改为 JENKINS_PORT="80" - jenkins 不再可用。防火墙我关了。
在日志消息中:/var/log/jenkins/jenkins.log
Aug 17, 2017 12:07:45 PM org.eclipse.jetty.util.log.JavaUtilLog warn
WARNING: FAILED ServerConnector@4082ba93{HTTP/1.1}{0.0.0.0:80}: java.net.SocketException: Permission denied
java.net.SocketException: Permission denied
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:321)
at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:236)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.server.Server.doStart(Server.java:366)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at winstone.Launcher.<init>(Launcher.java:152)
at winstone.Launcher.main(Launcher.java:352)
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:293)
at Main.main(Main.java:132)
谁能帮我解决这个问题?
你能试试这个 Centos7 防火墙设置吗?
不需要关闭防火墙。
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload
firewall-cmd --list-all
然后启动 Jenkins。
Google 把我带到了 https://confluence.atlassian.com/confkb/permission-denied-error-when-binding-a-port-290750651.html
低于 1024 的端口称为特权端口,在 Linux(以及大多数 UNIX 风格和类 UNIX 系统)中,任何非根用户都不允许打开它们。
因此,当我 运行 启动脚本 JENKINS_USER="jenkins" 时,出现了权限被拒绝的错误。
我为这个问题苦苦挣扎了几个小时。我最终解决它的方法是,在 Ubuntu 上,我将 JENKINS_USER
变量值从 $NAME 更改为 /etc/default/jenkins
中的 root。然后,我通过 运行 下面的命令重新加载了守护进程。
$ systemctl daemon-reload
最后,我以 root 身份重新启动了 jenkins。
$ service jenkins restart
正如@Nimda 回答的那样
我在下面遇到了同样的问题
SEVERE: Container startup failed
java.io.IOException: Failed to start Jetty
at winstone.Launcher.<init>(Launcher.java:186)
at winstone.Launcher.main(Launcher.java:354)
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:344)
at Main.main(Main.java:160)
Caused by: java.net.SocketException: Permission denied
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:339)
at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:307)
at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:235)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at org.eclipse.jetty.server.Server.doStart(Server.java:395)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
at winstone.Launcher.<init>(Launcher.java:184)
... 7 more
解决方案:编辑文件 /etc/sysconfig/jenkins 或任何 jenkins 的配置文件
- 将#JENKINS_USER="jenkins" 更改为任何可以 运行 作为 root
的用户
示例:JENKINS_USER="root"
希望这有帮助
80 无法访问 non-root 用户,jenkins 是 non-root 用户。我更改了端口号,然后它对我有用。