gpt4 book ai didi

ubuntu - 如何配置 Jenkins 运行在 80 端口

转载 作者:太空宇宙 更新时间:2023-11-03 16:40:37 24 4
gpt4 key购买 nike

我正在运行 Ubuntu 11.10 并运行 sudo apt-get install jenkins 在此系统上安装 Jenkins。

我看过一些关于如何设置反向代理(Apache、Nginx 等)的教程,但这是专用于 jenkins 的 VM,我希望在让 jenkins 在端口上运行时尽可能保持精简80.

我在 /etc/init/jenkins.conf 中找到了 upstart 配置并将端口修改为 80 env HTTP_PORT=80

当我通过 service jenkins start 启动 jenkins 时,ps 显示它运行了几秒钟然后终止。

这是因为 jenkins 在特权端口上以 jenkins 用户身份运行吗?如果是这样,我该如何解决?欢迎任何其他想法。

这是 Upstart 的配置:

description "jenkins: Jenkins Continuous Integration Server"
author "James Page <james.page@ubuntu.com>"

start on (local-filesystems and net-device-up IFACE!=lo)
stop on runlevel [!2345]

env USER="jenkins"
env GROUP="jenkins"
env JENKINS_LOG="/var/log/jenkins"
env JENKINS_ROOT="/usr/share/jenkins"
env JENKINS_HOME="/var/lib/jenkins"
env JENKINS_RUN="/var/run/jenkins"
env HTTP_PORT=80
env AJP_PORT=-1
env JAVA_OPTS=""
env JAVA_HOME="/usr/lib/jvm/default-java"

limit nofile 8192 8192

pre-start script
test -f $JENKINS_ROOT/jenkins.war || { stop ; exit 0; }
$JENKINS_ROOT/bin/maintain-plugins.sh
mkdir $JENKINS_RUN > /dev/null 2>&1 || true
chown -R $USER:$GROUP $JENKINS_RUN || true
end script

script
JENKINS_ARGS="--webroot=$JENKINS_RUN/war --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT"
exec daemon --name=jenkins --inherit --output=$JENKINS_LOG/jenkins.log --user=$USER \
-- $JAVA_HOME/bin/java $JAVA_OPTS -jar $JENKINS_ROOT/jenkins.war $JENKINS_ARGS \
--preferredClassLoader=java.net.URLClassLoader
end script

最佳答案

另一种解决方案是简单地使用 iptables 将传入流量从 80 重新路由到 8080。规则如下所示:

-A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
-A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

重新格式化为 iptables.rules 文件:

*filter
:INPUT ACCEPT [100:100000]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [95:9000]
-A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
COMMIT

*nat
-A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
COMMIT

iptable.rules 文件的优点是规则可以在重新启动后保留。只需确保将任何其他当前的 iptable 规则集成到同一个文件中即可!

在 Redhat/CentOS 上,这个文件可以放在 /etc/sysconfig/iptables 中。

在 Debian/Ubuntu 系统上,它们可以通过使用 iptables-persistent 包保存在 /etc/iptables/rules.v4 中。或者可以通过修改 /etc/network/interfaces 或挂接到 if-up/if-down 脚本来调用 iptable.rules。 Ubuntu Community wiki有一个很棒的页面解释这些方法。

与网络通常的情况一样,有很多不同的方法可以实现相同的结果。使用最适合您的方法!

关于ubuntu - 如何配置 Jenkins 运行在 80 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9330367/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com