[Linux] systemd 서비스 등록
🔧 유닛 파일
ini
[Unit]
Description=jh-chat API
After=network.target
[Service]
# 경로 문제 해결: nvm 설치된 Node 절대경로 사용
ExecStart=/home/jeonghun/.nvm/versions/node/v22.20.0/bin/node /home/jeonghun/jh-chat/api/server/index.js
WorkingDirectory=/home/jeonghun/jh-chat/api
Restart=always
User=jeonghun
# 로그 관리 추가 (선택사항)
StandardOutput=append:/var/log/jh-chat.log
StandardError=append:/var/log/jh-chat-error.log
[Install]
WantedBy=multi-user.target✅ 주요 수정 사항
- 섹션명 정정: [Services] → [Service]
- 경로 문제 해결:
- ~ 사용 불가 → 절대경로로 변경
- nvm 설치된 Node 명시적 지정
- 대소문자 수정: Restart=Always → Restart=always
- 추가 개선사항:
- After=network.target 추가 (네트워크 준비 후 실행)
- 로그 파일 지정 (/var/log/ 경로 권장)
- 작업 디렉토리 명시
⚙️ 적용 절차
bash
# 1. 유닛 파일 생성
sudo nano /etc/systemd/system/jh-chat.service
# 2. 문법 검증 (오류 없으면 출력 없음)
sudo systemd-analyze verify /etc/systemd/system/jh-chat.service
# 3. 적용 및 실행
sudo systemctl daemon-reload
sudo systemctl enable jh-chat
sudo systemctl start jh-chat
# 4. 상태 확인
sudo systemctl status jh-chat
# 5. 로그 모니터링 (실시간)
journalctl -u jh-chat -f🔍 대체 설정 방법 (PATH 사용)
ini
[Service]
Environment="PATH=/home/jeonghun/.nvm/versions/node/v22.20.0/bin:/usr/bin:/bin"
ExecStart=node /home/jeonghun/jh-chat/api/server/index.js
...- 장점: Node 버전 변경 시 PATH만 수정
- 단점: 전체 경로보다 검증이 복잡
📌 문제 해결 팁
-
실행 권한 확인:
bashchmod +x /home/jeonghun/jh-chat/api/server/index.js -
로그 확인:
bashsudo journalctl -u jh-chat --since "5 min ago" -
의존성 검사:
bashsystemd-analyze dot jh-chat.service | dot -Tsvg > deps.svg
📊 서비스 관리 명령어 요약
mermaid
graph TD
A[서비스 등록] --> B[daemon-reload]
B --> C[enable]
C --> D[start]
D --> E[status]
E --> F{문제 있음?}
F -->|Yes| G[journalctl 로그 확인]
F -->|No| H[서비스 정상 실행]최종 점검 사항:
- 절대경로 사용 ✔️
- systemd-analyze verify 오류 없음 ✔️
- 서비스 상태 active (running) 확인 ✔️
댓글을 불러오는 중...