如何配置Jenkins在端口80上运行 [英] How to configure Jenkins to run on port 80
问题描述
我正在运行Ubuntu 11.10并运行 sudo apt-get install jenkins
在此系统上安装Jenkins。
我已经看到一些关于如何设置逆向代理(Apache,Nginx等)的教程,但是这是一个专门用于jenkins的虚拟机,我想保持它尽可能瘦,同时让jenkins在端口上运行80。
我在 /etc/init/jenkins.conf
中找到了upstart配置,到80 env HTTP_PORT = 80
当我通过
启动jenkins时jenkins start , ps
显示它运行了几秒钟,然后终止。
这是因为jenkins是作为 jenkins
用户在特权端口上运行吗?如果是这样,我如何解决这个问题?欢迎任何其他想法。
以下是upstart配置:
descriptionjenkins:Jenkins Continuous Integration Server
authorJames 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
限制nofile 8192 8192
预启动脚本
test -f $ JENKINS_ROOT / jenkins .war || { 停止 ; 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守护进程--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
解决方案尝试 authbind ':
sudo apt-get install authbind
sudo touch / etc / authbind / byport / 80
sudo chmod 500 / etc / authbind / byport / 80
sudo chown jenkins / etc / authbind / byport / 80
然后修改上面的脚本(在 $ JAVA_HOME / bin / java
部分之前添加 authbind
):
exec daemon --name = jenkins --inherit --output = $ JENKINS_LOG / jenkins.log \
--user = $ USER - authbind $ JAVA_HOME / bin / java $ JAVA_OPTS \
-jar $ JENKINS_ROOT / jenkins.war $ JENKINS_ARGS \
--preferredClassLoader = java.net.URLClassLoader
对于较新的Jenkins安装(1.598)在较新的Ubuntu安装(14.04),请编辑 / etc /init.d/jenkins
并在 $ JAVA
$之前添加 authbind
b
$ b $ SU -l $ JENKINS_USER --shell = / bin / bash -c$ DAEMON $ DAEMON_ARGS - authbind $ JAVA $ JAVA_ARGS -jar $ JENKINS_WAR $ JENKINS_ARGS|| return 2
如 Alan (见下面的注释)如果你需要IPv6和你的系统低于Quantal你可以使用 apt-get
安装 authbind
下载更高版本。
确保您已安装 libc6
和 libc6-udeb
。这是来自Ubuntu的 authbind
版本2.1.1:
然后执行:
sudo dpkg -i authbind_2.1.1_amd64.deb
#或sudo dpkg -i authbind_2.1.1_i386.deb
sudo touch / etc / authbind / byport / 80
sudo chmod 500 / etc / authbind / byport / 80
sudo chown jenkins / etc / authbind / byport / 80
I'm running Ubuntu 11.10 and have run sudo apt-get install jenkins
to install Jenkins on this system.
I've seen some tutorials on how to setup a reverse proxy (Apache, Nginx, etc), however this is a VM dedicated for just jenkins and I'd like keep it as lean as possible while having jenkins running on port 80.
I've found the upstart config in /etc/init/jenkins.conf
and modified the port to 80 env HTTP_PORT=80
When I start jenkins via service jenkins start
, ps
reveals that it runs for a few seconds then terminates.
Is this because jenkins is running as the jenkins
user on a privileged port? If so, how do I fix this? Any other ideas a welcome.
Here is the upstart config:
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
解决方案 Give a try to 'authbind':
sudo apt-get install authbind
sudo touch /etc/authbind/byport/80
sudo chmod 500 /etc/authbind/byport/80
sudo chown jenkins /etc/authbind/byport/80
Then modify the script above to have (add authbind
before the $JAVA_HOME/bin/java
part):
exec daemon --name=jenkins --inherit --output=$JENKINS_LOG/jenkins.log \
--user=$USER -- authbind $JAVA_HOME/bin/java $JAVA_OPTS \
-jar $JENKINS_ROOT/jenkins.war $JENKINS_ARGS \
--preferredClassLoader=java.net.URLClassLoader
For newer Jenkins installations (1.598) on newer Ubuntu installations (14.04) edit /etc/init.d/jenkins
and add authbind
before $JAVA
$SU -l $JENKINS_USER --shell=/bin/bash -c "$DAEMON $DAEMON_ARGS -- authbind $JAVA $JAVA_ARGS -jar $JENKINS_WAR $JENKINS_ARGS" || return 2
As mentioned by Alan (see comment below) if you need IPv6 and your system is lower than Quantal you can instead of using apt-get
to install authbind
download a higher version.
Make sure you have libc6
and libc6-udeb
installed. Here is authbind
version 2.1.1 from Ubuntu:
Then execute:
sudo dpkg -i authbind_2.1.1_amd64.deb
# or sudo dpkg -i authbind_2.1.1_i386.deb
sudo touch /etc/authbind/byport/80
sudo chmod 500 /etc/authbind/byport/80
sudo chown jenkins /etc/authbind/byport/80
这篇关于如何配置Jenkins在端口80上运行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!