Как настроить Jenkins для работы на порту 80
Я запускаю Ubuntu 11.10 и запустил sudo apt-get install jenkins
для установки Дженкинса в этой системе.
Я видел некоторые учебники о том, как настроить обратный прокси (Apache, Nginx и т. д.), Однако это VM, предназначенный только для Дженкинса, и я хотел бы сохранить его как можно более бережливым, имея Дженкинса, работающего на порту 80.
Я нашел конфигурацию выскочки в /etc/init/jenkins.conf
и изменил порт 80 env HTTP_PORT=80
когда я начинаю Дженкинс через service jenkins start
, ps
показывает, что он работает на несколько секунд затем заканчивается.
это потому, что Дженкинс работает как jenkins
пользователь на привилегированном порту? Если да, то как это исправить? Любые другие идеи приветствуются.
вот конфигурация выскочки:
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
9 ответов
дать попробовать '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
затем измените скрипт выше, чтобы иметь (add authbind
до $JAVA_HOME/bin/java
часть):
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) edit /etc/init.d/jenkins
и добавить authbind
до $JAVA
$SU -l $JENKINS_USER --shell=/bin/bash -c "$DAEMON $DAEMON_ARGS -- authbind $JAVA $JAVA_ARGS -jar $JENKINS_WAR $JENKINS_ARGS" || return 2
как отметил Алан (см. комментарий ниже) Если вам нужен IPv6, и ваша система ниже, чем Quantal, вы можете вместо использования apt-get
в установить authbind
скачать более новую версию.
Убедитесь, что у вас есть libc6
и libc6-udeb
установлен. Вот authbind
версия 2.1.1 от Ubuntu:
выполнить:
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
другое решение-просто использовать 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.файл правил:
*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.файл правил-это правила, которые могут сохраняться после перезагрузки. Просто не забудьте интегрировать любые другие текущие правила iptable в тот же файл!
на Redhat / CentOS этот файл может войти в /etc/sysconfig/iptables
.
в системах Debian / Ubuntu они могут быть сохранено в /etc/iptables/rules.v4
С помощью iptables-persistent
пакета. Или iptable.правила можно вызвать, изменив /etc/network/interfaces
или зацепиться за if-up
/if-down
скрипты. The Ubuntu сообщество wiki имеет большую страницу, объясняющую эти методы.
как это обычно бывает с сетью, есть много разных способов достичь того же результата. Используйте то, что работает лучше всего для вас!
- перейдите в папку /etc/default --> откройте файл"jenkins"
- измените строку HTTP_PORT=8080 как HTTP_PORT=80
- запустите jenkins как root, используя команду: sudo/etc / init.д/Дженкинс старт
- откройте браузер и просмотрите как localhost: 80
вот это
Я бы предложил использовать apache и mod_proxy. Это то, что я делаю, и моя конфигурация vhost выглядит примерно так (я также перенаправляю для SSL, но вы можете опустить это):
<VirtualHost *:443>
ServerAdmin webmaster@example.com
ServerName ci.example.com
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPreservehost on
ProxyPass / http://localhost:8080/
Header edit Location ^http://ci.example.com/ https://ci.example.com/
SSLEngine on
SSLCertificateFile /etc/apache2/keys/apache.pem
</VirtualHost>
С настройки. Вы можете использовать его для запуска Дженкинса на порту 80, далее фрагмент моего скрипта:
JENKINS_PORT=80
JENKINS_HOME=/home/jenkins
/usr/bin/docker run -d -p $JENKINS_PORT:8080 -v $JENKINS_HOME jenkins
путь firewalld к переднему порту 8080 до 80:
yum install firewalld
systemctl start firewalld
chkconfig firewalld on
firewall-cmd --permanent --zone=external --change-interface=eth0
firewall-cmd --permanent --zone=external --add-forward-port=port=80:proto=tcp:toport=8080
ни один из ответов не говорит, как просто перенаправить 80 на 8080 с iptables.
К счастью, dskrvk
комментарий делает !
есть еще Дженкинс Вики эти
Мне просто нужно было скопировать / вставить эти строки в мой терминал, чтобы заставить перенаправление работать:
sudo iptables -I INPUT 1 -p tcp --dport 8443 -j ACCEPT
sudo iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT
sudo iptables -I INPUT 1 -p tcp --dport 443 -j ACCEPT
sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443
кстати, не забудьте включить его в сценарии инициализации вашего сервера после тестирования,или вы потеряете перенаправление после перезагрузки. проверено на Debian 8.2 (Jessie)
В Ubuntu 16.04, Вики объясняет как это делать.
sudo nano /etc/rc.local
затем добавьте следующее непосредственно перед выходом 0
#Requests from outside
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
#Requests from localhost
iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
Перезагрузить сейчас или запустите sudo /etc/rc.local
включить переадресацию портов
изменение /etc/default / jenkins не работает в моей настройке ubunutu 16.-4 Jenkins 2.89.4 и решение использовать iptable routes 80 до 8080, что противоположно требуемому результату запуска jenkins на 80