핵심 요약
Node·Python 앱을 운영에 띄울 때 systemd 유닛 하나면 자동 재시작·부팅 시 자동 실행·중앙 로그(journalctl)·보안 격리까지 된다. 별도 프로세스 매니저 없이 표준 도구로 충분한 경우가 많다.
1. 기본 유닛
[Unit]
Description=My App
After=network.target
[Service]
User=appuser
WorkingDirectory=/srv/app
ExecStart=/usr/bin/node server.js
Restart=on-failure
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
2. 운영 명령
systemctl daemon-reload
systemctl enable --now myapp
journalctl -u myapp -f # 실시간 로그
3. 보안·안정 옵션
NoNewPrivileges=true,ProtectSystem=strict,ReadWritePaths=로 쓰기 경로 최소화Restart=on-failure+RestartSec로 크래시 복구- 전용
User=로 실행 — root 금지
자주 묻는 질문
pm2가 꼭 필요한가요?
대부분 systemd로 충분합니다. 자동 재시작·부팅 실행·로그·격리를 표준으로 제공합니다. 클러스터 모드 등 특정 기능이 필요할 때만 pm2를 고려하세요.
유닛을 고쳤는데 반영이 안 돼요.
유닛 파일 변경 후엔 systemctl daemon-reload를 먼저 실행하고 restart해야 합니다.

댓글 0