기본 구성을 사용하여 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
답변2
systemd를 실행하는 경우 더 깔끔한 대답은 서비스 포트에 바인딩할 수 있는 기능을 프로세스에 제공하는 것입니다. systemctl edit jenkins.service
다음 섹션을 실행 하고 추가합니다.
[Service]
Environment="JENKINS_PORT=80"
AmbientCapabilities=CAP_NET_BIND_SERVICE
그런 다음 서비스를 다시 시작하십시오. HTTPS가 필요한 경우 유사한 솔루션을 사용하여 443에 바인딩할 수 있습니다.
답변3
가 있는 시스템에서는 authbind
Jenkins가 전체 액세스 권한을 부여하지 않고도 포트 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