Server/Linux
[Ubuntu] 부팅시 Node.js 프로젝트가 자동 실행되도록 서비스 등록
범데이
2023. 2. 9. 12:11
728x90
개요
AWS EC2(Ubuntu) 인스턴스를 만들어 REST API 서버를 구축하여 사용하던 중,
가끔 서버에 렉이 발생해서 REST API가 응답하지 않을때가 있었다.
그래서 가끔 AWS 콘솔에서 인스턴스를 재부팅시켜줄때가 있었으나, 부팅 후 직접 진입해서 Node.js는 수동으로 실행시켜주는 작업을 계속 반복할수 없었으니.. 서비스로 등록하여 부팅시 자동으로 뜨도록 설정해놓고자 하였다.
구축 환경
- Ubuntu 18.04
- Node.js 14
1. 서비스 파일 작성
서비스를 등록하기에 앞서, node.js 프로젝트 폴더에
node.js 프로그램을 실행할 수 있도록 아래와 같이 간단한 쉘 스크립트를 만들어 주었다.
[start.sh]
node --loader ts-node/esm ./index.ts
그런 다음, /lib/systemd/system 경로에 (서비스이름).service 파일을 하나 만들어 아래 양식과 같이 작성하였다.
[Unit]
Description=(서비스 설명)
[Service]
ExecStart=(실행할 명령어)
User=(유저이름)
WorkingDirectory=(작업 경로)
Restart=on-failure
[Install]
WantedBy=multi-user.target
(아래는 실제 작성 예제이다.)
[Unit]
Description=This is REST API service.
[Service]
ExecStart=/bin/sh /home/user/sample-project/start.sh
User=user
WorkingDirectory=/home/user/sample-project
Restart=on-failure
[Install]
WantedBy=multi-user.target
편집한 서비스 설정파일을 반영하기위해 다음 명령어를 입력해준다.
sudo systemctl daemon-reload
2. 서비스 확인
서비스를 실행한 뒤,
sudo systemctl start (서비스이름)
서비스를 확인해보았다.
sudo systemctl status (서비스이름)
서비스가 잘 등록되었음을 확인할 수 있으나, disabled상태임을 확인할 수 있다.
이를 부팅시에도 자동 활성화되도록 enable상태로 변경해주자.
sudo systemctl enable (서비스이름)
그 후 다시 서비스 상태를 확인해보면 다음과 같이 enabled상태가 되었음을 확인할 수 있다.
아래 명령어로 서버를 재시작 한 후,
shutdown -r now
다시 서비스 상태를 확인해봤을때 위와같이 정상 동작하면 성공이다.
반응형