[Node.js] Port 번호에 대한 짧은 고찰
nginx 를 사용하면서 여러 개의 프로젝트를 서버에 띄울 때 port 번호가 이미 사용중이라는,
> next -p 9999
Port 9999 is already in use.
위와 같은 오류가 뜨곤 했다. 이 에러 문구는 node 가 잘못 종료되었을 때도 소켓이 꼬여서 발생할 수 있다고 한다. (방금 겪음 🙂)
port 설정과 관련해서 몇 번 개고생을 했는데 앞으로 고생하지 않기 위해 간단하게 적어두어야겠다는 생각이 들었다.
** 참고 문서 : 로컬호스트와 포트 번호
#08 What is localhost & port? (로컬 호스트& 포트란 무엇인가?)
#08 What is localhost & port? (로컬 호스트& 포트란 무엇인가?)
velog.io
port 는 임의로 설정할 수 있다.
보통 pc local 은 localhost:9999 로 설정하고, 서버에 띄우는 건 3000 으로 설정하는 것 같다. 암묵적으로 그게 편해서 그런 건지를 최근에 알았다는 사실 . . 4235 로 해도 되고 1925 로 해도 된다. 다만 불편하니까 ~ ,,
단, 유의해야 할 점은 위 문서를 보면 알 수 있듯이 임의로 설정할 수 있는 포트 번호 범위가 정해져있다. 그 안에서 맘껏 자유롭게 수영 가능 (?) 햐 햐
port 가 사용 중이라면 일단 죽인다.
이 부분의 명령어를 앞으로도 알아서 참고하기 위해 이 글을 쓰게 됐다.
lsof // 활성화 된 프로세스 리스트 출력
lsof -i // 그 중 특정 포트를 사용 중인 프로세스만 출력
lsof -i TCP:9999 // TCP 9999 포트 사용 중인 프로세스 출력
🚨 단, 로컬에서 (mac의 경우) npm run dev 실행 시
Port 3000 is in use, trying 3001 instead.
위와 같은 문구가 뜰 경우 터미널을 열어서 sudo 걸고 port 관련 명령어를 처리해야 한다.
리스트를 출력하면 테이블 형식의 정보들이 초ㅏ라락 나오는데, PID 값이 찾고자 하는 포트 프로세스의 아이디고,
kill -9 57259 (PID 값)
위와 같이 그 아이디를 가지고 해당 포트를 죽인다. (?) 🔪
lsof -i TCP:9999
위의 명령어를 다시 입력했을 때, 잘 처리했다면 아무것도 뜨지 않는다.
그리고 다시 해당 포트를 통해 실행시키고자 했던 프로젝트를 run 한다.
단, kill 을 할 때는 해당 포트에서 실행 중이었던 프로젝트가 꼬였거나 그 프로젝트 대신 다른 프로젝트를 그 포트에서 실행시키고자 할 때 진행한다. 여러 개의 프로젝트를 띄우고 싶다면 첫 번째에 언급한 것처럼 포트 번호를 다르게 설정해주면 된다.
끝 !