728x90
나만무
EC2 서버와 RDS DB 연결하기
- EC2는 public / RDS는 private 인스턴스로 생성했다. - 보안 상의 이유
- 단순히 EC2 터미널에 접속해서 mysql 서버를 여는 건 성공했다.
- mysql -u [계정] -p -h [DB엔드포인트] → 이 명령어 쓰면 연결된다.
- 문제 : 우리는 로컬에서 작업을 해야한다. 로컬 작성 → 깃허브 업로드 → EC2 실행
- 1차 해결 : vs code에서 ssh 연결로 vs code에서 제공하는 UI로 테이블 작성 등이 가능해졌다.
- 문제 발생 : 결국 node.js 코드에서 CRUD를 하려면 mysql.connection에 성공해야한다. 이걸 어떻게 하냐
- 2차 해결 : 결국 RDS가 private에 있기 때문에 로컬 서버에서 연결하기는 불가능하다. gitHub Action이 다른 서버와 연결되어 있기 때문에 repo를 하나를 사용하는 지금은 함부로 건들 수가 없어서 EC2 터미널에서 git clone을 받아 서버를 실행했다. 이 단계에서 DB 연결 성공 로그 확인했다.
- 설치한 모듈 → sudo apt nodsjs, npm, mysql-server 등
- → npm i express, socket.io, mysql 등
- 문제 : 보안 상의 이유로 git에 올라가는 코드에 우리 endpoint나 pw 등을 직접 작성하면 안 됐다.
- 3차 해결 : EC2 터미널에서 nano [auth.sh](<http://auth.sh>) 라는 명령어로 환경변수로 endpoint, user, pw 등의 정보를 작성하고, 서버 코드에서 host: process.env.MYSQL_HOST 처럼 접근, 사용하면 됐다.
- 문제 : .sh 가 문제였는지 서버가 localhost로 DB에 연결을 시도했다. .sh가 있는 bin 폴더를 여기저기 옮겨봤지만 해결되지 않았다.
- 4차 해결 : EC2 터미널에서 touch .env 라는 명령어를 통해 .env 파일을 생성했다. nano .env 를 통해 중요한 정보를 파일에 작성해 주었다. 아래의 서버 코드와 같이 작성하여 dotenv 패키지를 불러오고 . env 파일을 로드해서 .env에 작성한 정보를 사용해서 서버를 실행했다.
- 설치한 모듈 → npm install dotenv
- const dotenv = require('dotenv'); dotenv.config();
- 문제 : 서버가 시작되고, DB연결이 성공했지만, 곧바로 연결을 닫는 문제가 생겼다.
- 5차 해결 : 현재 코드에서 모듈 로딩 시점에 데이터베이스 연결을 생성하고, 모듈 내보내기 직전에 연결을 종료하고 있는 코드를 수정했다.
pm2 사용
- PM2 : Node.js 애플리케이션을 관리하고 모니터링하기 위한 프로세스 관리도구
- 프로세스 관리
- node.js 애플리케이션을 백그라운드에서 실행하고, 재부팅 후에도 자동으로 실행할 수 있도록 관리
- 프로세스를 시작, 중지 재시작, 재로드, 삭제 등의 작업을 쉽게 수행할 수 있다.
- 모니터링 및 로깅
- 애플리케이션의 CPU, 메모리 사용량 등 시스템 리소스를 실시간으로 모니터링 한다.
- 자동 재시작
- 애플리케이션이 예기치 않게 종료되거나 오류가 발생한 경우 자동으로 재시작 한다.
- 프로세스 관리
- npm을 설치하고 시작한다.
- 접속 콘솔을 끄더라도 서버가 돌아갈 수 있도록 한다.
- sudo apt-get install npm
- npm start
- pm2를 설치한다.
- sudo npm install pm2 -g
- 설치가 완료되면 pm2를 이용해 서버 코드를 구동한다.
- pm2 start ./server/server.js
728x90
'Study > Project' 카테고리의 다른 글
나만무 슬레이어즈 13 (0) | 2024.05.10 |
---|---|
나만무 슬레이어즈 12 (0) | 2024.05.09 |
나만무 슬레이어즈 10 (0) | 2024.05.08 |
나만무 슬레이어즈 9 (0) | 2024.05.04 |
나만무 슬레이어즈 8 (0) | 2024.05.04 |