Debian 9 시스템에서 Jenkins 서비스를 자동으로 시작합니다.
내 서비스가 제대로 작동하고 있습니다. 서비스 정의는 다음과 같습니다.
[Unit]
SourcePath=/etc/init.d/jenkins
Description=LSB: Start Jenkins at boot time
Before=runlevel2.target runlevel3.target runlevel4.target runlevel5.target shutdown.target
After=remote-fs.target systemd-journald-dev-log.socket network-online.target
Wants=network-online.target
Conflicts=shutdown.target
[Service]
Type=forking
Restart=no
TimeoutStartSec=5min
TimeoutStopSec=10s
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
SysVStartPriority=2
ExecStart=/etc/init.d/jenkins start
ExecStop=/etc/init.d/jenkins stop
그런데 문제는 노드를 다시 시작해도 서비스가 자동으로 시작되지 않는다는 것입니다. 수동으로 실행해야 하는데systemctl start jenkins
systemctl enable jenkins
이 가상 머신을 자동으로 배포했으므로 수동 배포는 옵션이 아닙니다.
새 jenkins 가상 머신을 생성한 후 재부팅 후 이미 서비스를 시작할 수 있어야 합니다.
매뉴얼을 작성하더라도 다음을 systemctl enable jenkins
얻습니다.
# systemctl enable jenkins
Synchronizing state of jenkins.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable jenkins
The unit files have no installation config (WantedBy, RequiredBy, Also, Alias
settings in the [Install] section, and DefaultInstance for template units).
This means they are not meant to be enabled using systemctl.
Possible reasons for having this kind of units are:
1) A unit may be statically enabled by being symlinked from another unit's
.wants/ or .requires/ directory.
2) A unit's purpose may be to act as a helper for some other unit which has
a requirement dependency on it.
3) A unit may be started when needed via activation (socket, path, timer,
D-Bus, udev, scripted systemctl call, ...).
4) In case of template units, the unit is meant to be enabled with some
instance name specified.
여기서 뭔가 빠졌나요?
답변1
[Install]
말한대로 부분이 누락 된 것 같습니다 . 젠킨스 홈페이지에서Jenkins를 Unix 데몬으로 설치, 다음을 추가해 보세요.
[Install]
WantedBy=multi-user.target
스톡 예제는 쉘 스크립트를 포크하는 대신 java를 직접 호출한다는 점에 유의하세요.
부팅 시 서비스를 시작하려면 다음을 실행하세요.
systemctl enable jenkins
또는 수동으로 심볼릭 링크를 만듭니다.
ln -s /etc/systemd/system/jenkins.service /etc/systemd/system/multi-user.target.wants/jenkins.service