본 글은 Node.js를 이용하여 개발한 앱을 Dynamic 호스팅 서비스를 이용하지 않고, 로컬 머신(개인 PC)을 이용하여 퍼블릭으로 배포하는 방법에 관한 내용을 다룬다.
배포 순서
- 개발이 끝난 앱의 루트 디렉토리에
npm install -g pm2
를 통해 pm2 패키지 다운로드 - (선택)pm2 환경을 설정 파일을 통해 설정(
ecosystem.config.js
)
module.exports = {
apps: [
{
name: 'your-app-name',
script: './app.js',
instances: 0, // CPU 코어 수에 맞게 자동 설정
autorestart: true,
watch: false, // 프로덕션 환경에서는 false 권장
max_memory_restart: '1G', // 메모리 사용 패턴에 따라 설정
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
}
]
};
- 메인 앱인
app.js
파일에 포트포워딩 설정 시 필요한 Listening port 지정(여기서는 8080) - 공유기의 관리자 설정 페이지에 접속
- iptime의 경우, http://192.168.0.1
- Public IP인 외부 IP 확인
- iptime의 경우, 기본 설정 -> 시스템 요약 정보 탭 내 외부 IP 주소
- 포트포워딩 설정 페이지로 이동 후, 자신의 내부 IP와
app.js
에서 지정한 Listening port를 외부 IP 및 특정 포트(여기서는 8080)와 맵핑하여 외부에서 http://<Public_Ip>:<Port> 로의 접속 요청 시, http://<Private_IP>:8080로 요청의 포워딩이 이뤄지도록 설정- 포트포워딩 설정 페이지: iptime의 경우, 고급 설정 -> NAT/라우터 관리 -> 포트포워드 설정
- 내부 IP(Private IP) 확인: windows의 경우, cmd에서 ipconfig를 통해 확인
- 설정이 완료되면 로컬 머신에서
pm2
를 통해 웹서버를 실행- pm2 환경 설정 시 처음 시작 명령어:
pm2 start ecosystem.config.js --env production
그 이후부터는pm2 start [app-name]
- pm2 환경 설정 시 처음 시작 명령어:
- (선택) 외부IP는 ISP에서 부여하는데 이는 일정 기간이 지나면 IP주소가 바뀌게 된다. 그리고 내부 IP는 공유기에 의해 할당되고 이또한 DHCP 서버의 임대기간이 끝나면 바뀌게 된다. 따라서 외부IP는
DDNS
를 통해 자신의 외부 IP와 도메인을 맵핑시켜, 외부 IP가 바뀌어도 도메인에 자동 적용되도록 하고, 내부 IP는 특정 IP로 고정시키도록 한다.- 외부 IP와 도메인 맵핑: iptime의 경우, 고급 설정 -> 특수기능 -> DDNS 설정을 통해 설정
- 특정 디바이스의 내부 IP 고정: iptime의 경우, 고급 설정 -> 네트워크 관리 -> DHCP 서버 설정을 통해 설정.

windows의 경우 만약 위의 설정을 하여도 접근이 안된다면, 방화벽 설정을 확인하여 인바운드 규칙에 8080 포트를 허용하도록 추가한다.
'InfoSec Log > WEB' 카테고리의 다른 글
[WEB] DNS & HTTP 통신 과정 (1) | 2024.08.20 |
---|