Supervisor 사용 가이드
Supervisor는 백그라운드 프로세스를 관리하는 클라이언트/서버 시스템입니다. systemd보다 가볍고 사용자가 직접 다루기 쉬워서 PHP·Python·Ruby·Node 백엔드 데몬을 운영할 때 자주 선택됩니다. 설정은 INI 형식이며, 보통 /etc/supervisor/conf.d/*.conf에 프로그램별 파일을 두고 메인 설정에서 include합니다.
본 도구는 프로그램 한 개의 설정 파일을 만들거나, 여러 프로그램을 묶는 group 섹션까지 함께 생성합니다. autorestart, 로그 회전, 환경 변수, 다중 프로세스(numprocs)까지 흔히 쓰는 필드를 모두 제공합니다.
핵심 옵션
- command: 실행할 명령 (전체 경로 권장)
- autostart: supervisord 시작 시 자동 실행
- autorestart: 종료 시 자동 재시작 (true/false/unexpected)
- numprocs: 동일 프로그램 인스턴스 개수
- stdout_logfile: 표준 출력 로그 경로
- stopsignal: 종료 신호 (기본 TERM)
자주 묻는 질문 (FAQ)
Q. 변경사항을 어떻게 반영하나요?
A. 새 파일을 추가하거나 기존 파일을 수정한 뒤 sudo supervisorctl reread로 변경을 감지하고, sudo supervisorctl update로 적용합니다. 단순 재시작만 필요하면 sudo supervisorctl restart program_name입니다.
Q. systemd와 어떤 차이?
A. systemd는 OS 레벨 init 시스템이고 Supervisor는 사용자 공간 프로세스 관리자입니다. Docker 컨테이너 안에서 여러 데몬을 띄울 때, 또는 비루트 환경에서 사용하기 편합니다.
Q. 로그 회전은 자동인가요?
A. 네. stdout_logfile_maxbytes와 stdout_logfile_backups가 설정되어 있으면 Supervisor가 자체적으로 회전합니다. 별도 logrotate 설정 없이도 디스크 가득 차는 사고를 막을 수 있습니다.