개요
여러 이유로 서버가 재시동되는 경우가 있는데, 이전까지는PM2의 node와 Nginx를 수동으로 실행했다.
최근 회사에서 서버 리부팅이 예정되어 있었고, 이 기회에 수동으로 하던 작업들을 자동화하기 위해 조사를 하고 적용해 보았다.
Systemd(system demon)
리눅스용 시스템 및 서비스 관리자이며, 부팅부터 서비스관리 로그관리 등을 담당하는 init 프로세스이다.
systemctl
은 service(데몬)를 관리하는 명령어
systemctl start, stop, restart, status 등의 명령어가 있다.
/etc/systemd/system/: 부팅 시 필요한 작업들을 모아놓은 디렉토리
PM2
pm2 startup
을 실행하면 startup script를 실행하기 위한 커맨드가 나온다.
커맨드를 복붙하면 pm2-ubuntu.service
생성 등 수행된 작업을 확인할 수 있다.
해당 스크립트를 실행했을 시점에 현재 pm2에 활성화된 목록이 저장되고, 서버 부팅 시 저장된 프로세스를 실행시킨다.
관련 commandpm2 save
: 현재 pm2 목록을 기준으로 부팅 시 자동으로 활성화시킬 앱 목록을 저장한다.pm2 resurrect
: pm2 save
로 저장된 앱을 활성화한다.pm2 unstartup
: startup
과 반대 기념으로 시작 구성을 비활성화하고 제거한다.
NGINX
systemctl enable nginx
커맨드를 실행하면 nginx가 서버 시작 시 자동 실행된다.
/etc/systemd/system에서 nginx 파일과 /etc/systemd/system/multi-user.target.wants에서 심볼릭링크를 확인할 수 있다.
systemctl is-enabled nginx
커맨드로 enable 여부를 쉽게 확인할 수 있다.
Ref
https://devicetests.com/start-nginx-after-reboot-ubuntu-server
https://www.lesstif.com/system-admin/systemd-system-daemon-systemctl-24445064.html
https://geekflare.com/systemd-start-services-linux-7/
'TECH' 카테고리의 다른 글
NestJS, Multer 한글 파일명 깨지는 오류 (0) | 2024.05.08 |
---|---|
Angular ngIf 처럼 동작하는 custom directive 만들기 (0) | 2024.05.01 |