region
: 가까운 지역인 서울로 설정.
인스턴스 시작
클릭
이름
: 내가 원하는 이름 작성,
운영체제
: Ubuntu / 프리티어
새 키 페어 생성
: RSA 와 .pem 선택
ssh 는 기본으로 설정되어있고,
보안 그룹 규칙 추가
클릭 해서 보안 그룹 규칙 3개 추가
1. HTTP
2. HTTPS
3. MYSQL/Aurora
원본
: 0.0.0.0/0
작성 후 인스턴스 시작
으로 인스턴스 생성.
인스턴스가 생성되었고, 체크
후 연결
버튼 클릭
SSH 클라이언트
탭에서
예:
아래의 명령어 복사
아까 발급받은 pem 키를 프로젝트 폴더에 넣고 터미널에 복사한 명령어 실행
위사진 처럼 ⚠️ 포트 22에 관한 문구가 뜨면 위에서 했던 보안 그룹 규칙에서 ssh를 추가하면 된다.
복사한 명령어를 실행하면 인스턴스 연결이 된다.
EC2 인스턴스 연결
탭에서 연결
버튼을 눌러도 연결 가능.
sudo apt-get update
sudo apt-get install mysql-server
sudo mysql -u root -p
명령어 순서대로 입력 / Enter Password:
는 엔터하면 된다.
mysql>
로 접속이되면,
create database 이름
: 데이터베이스 생성
show databases
: 생성되었는지 확인
create user '유저 이름'@'%' identified by '사용할 비밀번호'
: 유저 생성
grant all on 데이터베이스이름.* to '유저이름'@'%'
: 유저 권한 설정
show grants for '유저이름'
: 권한 설정 확인
권한 확인하고 exit
후 sudo service mysql restart
mysql -u admin -p
로 접속되는지 확인후 exit
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
로 파일에 접근해
bind-address
를 0.0.0.0
으로 바꾼다.
바꾼 후 , sudo service mysql restart
Hostname
: EC2 인스턴스 퍼블릭 IPv4 DNS 복사 후 입력
Username
: 위에서 생성한 유저 이름 입력
Store in Vault
클릭 후, Test Connection
클릭하여 Success 확인 후 OK
git init
git remote and origin "원격저장소 주소"
: 원격저장소 연결
git pull origin master
ls -a
로 파일들이 잘 들어왔는지 확인.
sudo apt-get update
sudo apt-get install -y build-essential
sudo apt-get install curl
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash --
sudo apt-get install -y nodejs
명령어 순서대로 입력, 중간에 나오는 창은 엔터
설치 후, node-v
,npm-v
로 버전확인
cd backend/
로 package.json 파일이 있는곳으로 이동 후 npm i
로 모듈 설치
vi .env
로 env에 적혀있는 정보와 mysql 정보가 일치하는지 확인 후, npm start
했을 때, 연결 성공하고
mysql 워크벤치에 테이블이 생성되면 👍
EC2 - 탄력적IP 에서 탄력적 IP 주소 할당
클릭 후 다른 설정 없이 할당
클릭
할당된 탄력적 ip를 클릭 후, 탄력적 IP 주소 연결
클릭
인스턴스
선택 후 , 연결
클릭
연결을 하면
EC2 인스턴스의 탄력적 IP 주소가 할당된걸 확인할 수 있고,
mysql 워크벤치 커넥션의 Hostname 을 해당 IP로 바꿔줘야 한다.
리버스 프록시로, 서버 앞에 위치하여 클라이언트가 서버에 요청을 하면 리버스 프록시가 호출되고 리버스 프록시는 서버에게 요청해서 응답을 받고 클라이언트에 전송한다.
리버스 프록시를 사용하면
-1. SSL/TLS 암호화 처리 가능
-2. 공격자로 부터 서버 보안 강화
-3. 로드밸런싱, 캐싱
등이 있다.
sudo apt install nginx
: nginx 설치
sudo service nginx start
: nginx 시작
sudo service nginx status
: nginx 상태 확인
sudo service nginx stop
: nginx 종료
nginx를 설치하면 cd /etc/nginx/sites-enabled/ 경로에
웹사이트 호스팅을 할 때 설정에 대한 값인 default 파일이 생성이 되는데
설정을 해줘야한다.
해당 경로로 이동 후, sudo vi default
로 설정할 수 있다.
server_name
: 내가 요청을 보낼 도메인
try files ~
: # 으로 주석처리
proxy_set_header HOST $host;
,
proxy_pass http://127.0.0.1:8080;
추가 후 :wq! 로 저장 후 나오기.
설정파일을 수정했으니 sudo nginx -t
로 문법에 오류가 있는지 체크.
원래 경로로 돌아와서 cd ~
nginx 재실행 sudo service nginx restart
Route 53에서 레코드 생성
클릭하여 위와 같이 작성하면
레코드가 추가된다.
npm start
로 서버를 열고, 설정한 도메인(api.jaeyeong.site)로 접속하면 요청이 간다.
⚠️ 레코드를 설정했다고 바로 설정되지않고, 어느 정도 시간이 지나야 설정이 된다. 나는 1시간 넘게 걸림😭
설치 명령어
sudo snap install core
sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot/usr/bin/certbot
sudo certbot --nginx
를 입력하면, 이메일과 도메인을 입력하라고 함.
sudo service nginx restart
: nginx 재시작
sudo certbot renew
: 3개월 마다 인증서 재발급 해주는 명령어
npm i pm2
로 설치 후, backend package.json 파일의 start 부분을 pm2 start app.js로 변경
변경 후, npm start
하면
백그라운드에서 서버가 동작하는걸 확인할 수 있다.
npx pm2 kill
: 서버 종료
npx pm2 list
: 서버 리스트 확인
https://"A 레코드 설정한 도메인"
ex) https://api.jaeyeong.site