我正在运行 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/