Jenkinsにポート80をリッスンさせる方法は?

Jenkinsにポート80をリッスンさせる方法は?

デフォルト設定を使用して、Jenkinsはポート8080でリッスンします。

$ ss -tulpn | grep 8080
tcp  LISTEN 0      50       *:8080            *:*     users:(("java",pid=3052,fd=115)

しかし、私はこれを変更し、Jenkinsがポート80でリッスンするようにしたいと思います。

入って/etc/sysconfig/jenkins変更JENKINS_PORTしてJENKINS_PORT="80"再起動すると、次のようなsudo service jenkins restart結果が表示されます。

$ ss -tulpn | grep 8080
$ ss -tulpn | grep 80
$ curl localhost:8080
curl: (7) Failed to connect to localhost port 8080 after 0 ms: Connection refused
$ curl localhost:80
curl: (7) Failed to connect to localhost port 80 after 0 ms: Connection refused

Jenkinsにポート80をリッスンさせる方法は?

答え1

ルートのみが1024未満のポートにバインドできます。これがJenkinsが8080特権ポートではないため、デフォルトでポートで実行される理由です。この問題を解決する1つの方法は、Jenkinsの前apacheまたはnginxポートでリッスンするリバースプロキシを置くことです。80これ問題を解決するのに役立ちます。 これnginxまたはapacheの背後でjenkinsを実行する方法に関する多くのチュートリアルの1つです。

答え2

systemdを実行する場合、よりきれいな答えは、サービスポートにバインドできる機能をプロセスに提供することです。systemctl edit jenkins.service次のセクションを実行して追加します。

[Service]
Environment="JENKINS_PORT=80"
AmbientCapabilities=CAP_NET_BIND_SERVICE

その後、サービスを再起動します。 HTTPSが必要な場合は、同様のソリューションを使用して443にバインドできます。

答え3

あるシステムでは、authbindJenkinsがフルアクセスを許可せずにポート80にバインドすることを許可できますCAP_NET_BIND_SERVICE。実行するには、systemctl edit jenkins.service次を追加します。

[Service]
Environment="JENKINS_PORT=80"
ExecStart=/usr/bin/authbind --depth 2 /usr/bin/jenkins

そして、ポート80を許可するようにJenkinsを設定します。

touch /etc/authbind/byport/80
chown jenkins:jenkins /etc/authbind/byport/80
chmod 774 /etc/authbind/byport/80

関連情報