콘텐츠로 이동

운영 서버 종합 점검표 (OS + Nginx + Node.js)

  • 운영 서버(Production Server) 를 실제 서비스에 투입하기 전 반드시 확인해야 하는 항목들을 체크리스트 형태로 정의함.
  • “이 서버가 운영에 적합한 상태인가”를 판정하기 위한 문서임.

❌ 하나라도 미충족 시
해당 서버는 Production 사용 불가 상태로 판단함.


0. 점검 전 기본 원칙

  • 모든 점검은 운영 사용자 계정 기준으로 수행함
  • 임시 조치(setenforce 0, 테스트용 포트 개방 등)는 불합격 처리
  • “지금은 괜찮아 보임”은 인정하지 않음
  • 재부팅 후 상태까지 포함하여 판정

1. OS 기본 상태 점검

  • Rocky Linux / AlmaLinux / RHEL 계열 사용
  • OS 보안 업데이트 최신 상태
  • Timezone 설정 완료 (Asia/Seoul 등)
  • swap 설정 존재
  • hostname / hosts 정리 완료

2. 사용자 / 권한 / SSH

  • root SSH 직접 로그인 차단
  • 운영 사용자 계정 존재
  • sudo 권한 정상 동작
  • SSH 포트 정책 적용
  • PasswordAuthentication 설정이 서버 노출 형태와 일치
  • 외부에 SSH가 노출되는 서버라면 Fail2ban 정상 동작

3. SELinux 상태 (필수)

  • SELinux Enforcing 상태
  • setenforce 0 사용 흔적 없음
  • Permissive 운영 ❌
  • 필요한 포트만 semanage 등록
  • audit 로그 무시한 흔적 없음

SELinux를 끈 서버는 무조건 불합격


4. Firewall 정책

  • 외부 허용 포트 명확 (80 / 443 등)
  • Node.js 포트 외부 미개방
  • 테스트용 포트 개방 흔적 없음
  • 불필요한 서비스 포트 없음

5. Nginx 기본 상태

  • nginx 서비스 정상 기동
  • nginx -t 통과
  • systemd LimitNOFILE 설정 적용
  • access / error log 경로 정상
  • SSL 설정 정상 (해당 시)

6. Nginx 보안 / 성능 정책

  • rate limit 설정 적용
  • connection limit 설정 적용
  • send_timeout / keepalive 정책 명확
  • proxy timeout 정책 확인
  • 불필요한 header 노출 없음

7. Node.js 설치 상태

  • Node.js 실행 경로 /usr/bin/node
  • npm 실행 경로 /usr/bin/npm
  • nvm 사용 흔적 없음
  • root nvm 공유 구조 없음
  • 운영 서버에서 npm install 수행 이력 없음

8. Node.js 실행 구조

  • /home/[User]/[ProjectName] 작업 경로 존재
  • 운영 실행 경로(/var/www) 분리
  • /var/www에서 개발 작업 수행 ❌
  • Node.js 직접 실행 금지
  • PM2 기반 실행만 사용

9. PM2 기본 상태

  • PM2 전역 설치 (root)
  • PM2 실행은 운영 사용자 계정
  • ecosystem.config.cjs 존재
  • CLI 단독 실행(pm2 start app.js) ❌
  • pm2 list 정상

10. PM2 startup (systemd)

  • pm2 startup systemd 완료
  • pm2-[User].service 존재
  • systemctl status pm2-[User].service 정상
  • pm2 save --force 완료
  • 서버 재부팅 후 자동 기동 확인

11. Nginx ↔ Node.js 연동

  • Node.js는 127.0.0.1 또는 내부 IP listen
  • Node.js 포트 외부 노출 ❌
  • proxy_pass 정상 동작
  • SELinux Enforcing 상태에서 502 없음
  • 필요 시 http_port_t semanage 적용

12. 로그 / 장애 대응

  • Nginx 로그 로테이션 설정
  • pm2-logrotate 설정 완료
  • 로그 권한 정상
  • 장애 시 확인 경로 명확
  • 로그 flush / kill 남용 흔적 없음

13. 금지 패턴 점검 (Do Not Do)

  • root로 Node.js 앱 실행 ❌
  • root로 PM2 운영 ❌
  • 운영 서버에서 npm install ❌
  • 운영 중 즉석 설정 변경 ❌
  • 문서 없는 설정 변경 ❌

14. 최종 판정

  • 모든 항목 충족

판정 결과

  • ✅ Production 투입 가능
  • ❌ Production 투입 불가

하나라도 체크되지 않았다면
이 서버는 운영 서버가 아니다.


15. 운영 원칙 요약

  • 운영은 “되게 하는 것”이 아니라 다시 살아나게 하는 것
  • 감이 아닌 구조와 체크로 판단
  • 운영 서버의 최종 관문

이 점검표를 통과한 서버만
Production Server라 부를 수 있다.