1. express를 이용해 서버를 배포하고, 인스턴스 환경에 접속한다.
2. 포트 포워딩(80 => 3000)
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
3. pm2 설치
npm install -g pm2
4. 인증서 설치 준비
app.js가 설치된 디렉터리로 이동(같은 위치)
// 인증서 설치
sudo apt-get install letsencrypt
4.2 인증서를 받을 폴더 생성
// 폴더 생성
mkdir public
mkdir -p .well-known/acme-challenge
5. app.js 수정
// 코드 추가
app.use(express.static('public'));
6. 깃허브 푸시 후 인스턴스에서 풀 하여 파일 동기화
7. 서버 실행
sudo -s
pm2 start app.js
exit
8. 인증서 생성
certbot certonly --webroot -w ./public -d (내 도메인)
EC2 서버 /etc/letsencrtpy/live 경로에 내 도메인 이름으로 폴더 생성 + 폴더 내부에 인증서 생성!
9. https 포트 열어주기
https는 기본으로 443 포트를 사용
10. 인증서 적용
// app.js 내 코드 추가
const fs = require('fs');
const http=require("http");
const https=require("https");
const options = {
ca: fs.readFileSync('/etc/letsencrypt/live/내 도메인 네임/fullchain.pem'),
key: fs.readFileSync('/etc/letsencrypt/live/내 도메인 네임/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/내 도메인 네임/cert.pem')
};
http.createServer(app).listen(3000);
https.createServer(options, app).listen(443);
app.js 내에 코드를 추가하고, 기존의 app.listen(port, () => {}는 주석처리
11. 깃허브에 푸시 후 인스턴스에서 깃 풀 하여 코드 동기화
12. 서버 재시작
sudo -s
sudo pm2 restart app.js
exit
sudo를 사용해 강제 시작하는 이유는 인증서 파일에 접근이 불가하여 강제로 접근해서 열어준다.
이 부분은 좋은 방향은 아니어서 추가적인 설정이 필요하다고 한다.
13. 도메인 접속시 https://도메인 으로 접속
끝
아래 방법은 하다가 실패
'coding > Node.js' 카테고리의 다른 글
Sequelize Op like - 검색 기능 (0) | 2022.08.23 |
---|---|
페이지네이션 (0) | 2022.08.23 |
비밀번호 암호화 - bcrypt (0) | 2022.08.17 |
swagger 설치 및 설정 기본 사용법 (0) | 2022.08.17 |
CORS 사용방법 (0) | 2022.08.14 |