Linux의 systemd 서비스로 부팅시 자동 실행하기
해당 글은 'Docker , GitHub Action을 이용해서 EC2(AWS)에 자동 배포하기 - React사용' 글에서 추가된 내용입니다.
해당 글에서 run.sh파일을 부팅후 항상 구동하기 위해서 systemd 서비스를 사용하는 것입니다.
1. systmd 서비스 파일을 생성
- vim 에디터로 경로에 파일을 생성합니다.
$ sudo vim /etc/systemd/system/github-runner.service
2. 아래와 같은 텍스트를 작성
[Unit]
Description=GitHub Actions Runner
After=network.target
[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/actions-runner
ExecStart=/home/ubuntu/actions-runner/run.sh
Restart=always
[Install]
WantedBy=multi-user.target
위의 내용중에서 Service의 항목 설명은 아래와 같다.
Type : 서비스 타입. 위에서는 간단으로 선택
User : 해당 서비스를 사용할 유저.
WorkingDirectory : 구동 디렉토리(절대경로를 사용해야 한다.)
ExecStart : sh파일을 실행할 경로(절대경로를 사용해야한다.)
Restart : 시스텡이 재시작 되면 해당 서비스도 실행 될수 있도록 'always' 셋팅
3. 서비스 적용 및 활성화
이 명령어는 systemd
데몬을 다시 로드하는 데 사용됩니다. 주로 서비스 파일을 수정한 후에 실행해야 합니다.
- 목적: 새로운 서비스 파일이나 변경된 서비스 파일을
systemd
데몬이 인식하도록 합니다. - 상황: 서비스 파일을 추가하거나 변경한 후에 실행합니다.
- 동작:
systemd
데몬은 서비스 파일을 다시 읽고, 변경된 설정을 적용합니다.
$ sudo systemctl daemon-reload
이 명령어는 지정된 서비스를 시작하는 데 사용됩니다. 여기서는 github-runner
서비스를 시작합니다.
- 목적: 지정된 서비스를 즉시 시작합니다.
- 상황: 서비스를 처음 시작하거나, 중지된 서비스를 다시 시작할 때 사용합니다.
- 동작:
systemd
데몬은github-runner
서비스 파일을 읽고, 해당 서비스를 실행합니다.
$ sudo systemctl start github-runner
이 명령어는 지정된 서비스를 부팅 시 자동으로 시작하도록 설정합니다.
- 목적: 지정된 서비스가 시스템 부팅 시 자동으로 시작되도록 설정합니다.
- 상황: 서비스가 시스템이 시작될 때 자동으로 실행되도록 설정하고 싶을 때 사용합니다.
- 동작:
systemd
데몬은 서비스가 자동으로 시작되도록 부팅 시 실행 목록에 추가합니다.
$ sudo systemctl enable github-runner
마지막으로 해당 sh파일이 제대로 systemd에서 동작하는지 확인하기 위해서 아래 명령어를 터미널에 작성한다.
$ sudo systemctl status github-runner
Active가 running상태이다. 이는 정상적인 상태이다. 만약 다른 상태면 셋팅방법을 다시 확인해야한다.
댓글
댓글 쓰기