# jenkins systemctl 상태를 확인하면 Failed 로 나온다.
sudo systemctl status jenkins -n 30 -l
# jenkins 서비스(데몬) 시작시 문제가 되는 부분을 찾기 위해 디버깅
sudo vi /etc/init.d/jenkins
...
case "$1" in
start)
echo -n "Starting Jenkins "
daemon --user "$JENKINS_USER" --pidfile "$JENKINS_PID_FILE" $JAVA_CMD $PARAMS > /dev/null
RETVAL=$?
echo "java version: $(/usr/bin/java -version 2>&1 | grep -i version)"
echo "JENKINS_USER: $JENKINS_USER"
echo "JENKINS_PID_FILE: $JENKINS_PID_FILE"
echo "JAVA_CMD: $JAVA_CMD"
echo "PARAMS: $PARAMS"
echo "RETVAL: $RETVAL"
if [ $RETVAL = 0 ]; then
...
# 실제 다음과 같은 명령이 실행된다.
# 참고로 daemon 은 . /etc/init.d/functions 로 로딩한 함수다.
daemon --user ysoftman --pidfile /var/run/jenkins.pid /usr/bin/java -Djava.awt.headless=true -Dcom.sun.jndi.ldap.connect.pool.maxsize=20 -Dcom.sun.jndi.ldap.connect.pool.prefsize=10 -Dcom.sun.jndi.ldap.connect.pool.timeout=5000 -DJENKINS_HOME=/var/lib/jenkins -jar /usr/lib/jenkins/jenkins.war --logfile=/var/log/jenkins/jenkins.log --webroot=/var/cache/jenkins/war --daemon --httpPort=8080 --debug=5 --handlerCountMax=100 --handlerCountMaxIdle=20
# /etc/init.d/jenkins 변경 사항 반영을 위해 다시 로딩
sudo systemctl daemon-reload
# jenkins 서비스 재시작
sudo systemctl restart jenkins
# daemon 함수 실행시 root 가 아니라고 메시지로 실패(RETVAL=1)된다.
Starting Jenkins runuser: may not be used by non-root users
# 해결방법
# /etc/sysconfig/jenkins 에서 다음과 같이 root 로 변경한다.
JENKINS_USER="root"
# 그리고 /etc/init.d/jenkins 의 daemon 실행시 --user 옵션없이 다음과 같이 실행한다.
daemon --pidfile "$JENKINS_PID_FILE" $JAVA_CMD $PARAMS > /dev/null
# 이제 다시 시작하면 아름 스샷과 같이 데몬서비스로 동작한다.
sudo systemctl daemon-reload
sudo systemctl restart jenkins
comments:
댓글 쓰기