如何配置Jenkins在端口80上运行 [英] How to configure Jenkins to run on port 80

查看:1814
本文介绍了如何配置Jenkins在端口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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆