← 전체 글로 돌아가기

서버 운영

서버에서 포트가 막혀있거나 로그가 안 보일 때 디버깅하기

배포 후 서버에서 애플리케이션이 실행되지 않거나 로그가 보이지 않을 때 단계별로 확인하는 방법입니다.

서버에 배포한 후 "왜 작동을 안 할까?" 하는 순간이 온다. 문제는 포트가 이미 사용 중이거나, 권한이 없거나, 로그가 유실되고 있을 수 있다. 체계적으로 확인해야 한다.

문제를 크게 보면 안 된다

"서버가 작동 안 한다"라고 하면 모든 파일이 의심스러워진다. 먼저 정확히 뭐가 안 되는지 파악한다. 프로세스가 실행되지 않는가, 실행되지만 포트가 안 열려 있는가.

포트 확인부터

첫 번째로 확인할 것은 포트다. 애플리케이션이 사용하려는 포트가 정말로 막혀 있는가.

sudo ss -lntp

이 명령어로 현재 열려있는 모든 포트와 해당 프로세스를 본다. 내가 실행하려는 포트에 이미 다른 프로세스가 들어앉아 있진 않은가.

시스템 리소스 확인

df -h

디스크 공간이 충분한가. 디스크가 거의 찼으면 프로세스가 시작되지 않을 수 있다. 메모리도 확인한다.

로그 확인

sudo journalctl -n 80

최근 80개의 시스템 로그를 본다. 애플리케이션이 시작되려고 했지만 실패한 기록이 있는지 확인한다.

직접 확인하는 명령

프로세스가 정말로 실행 중인가. ps 명령으로 확인한다. 로그 파일이 생성되고 있는가. 최근 파일 수정 시간을 본다.

권한 확인

애플리케이션을 실행하는 사용자의 권한이 충분한가. 포트 1024 이하는 root 권한이 필요하다. 특정 디렉토리에 쓰기 권한이 있는가.

수정 후 다시 확인

포트를 해제했다면 애플리케이션을 다시 시작한다. 이번에는 정상적으로 포트를 할당받는가. 로그가 생성되는가.

재발 방지

다음에 비슷한 증상이 나올 때를 대비해, 이번에 무엇이 문제였는지, 언제 시작됐는지 기록해둔다. 시간대별로 기록하면 나중에 추적하기 훨씬 쉽다.