20.02.01 ec2 생성, 접근하기

sykim·2020년 2월 1일
0

1. 아마존에 가입 후 ec2 탭 클릭

아마존 웹서비스에서 컴퓨터를 빌리기는 개념. 그 컴퓨터를 내 서비스의 서버용으로 만든다.

2. 우분투 서버 선택

image.png

3. 계속 다음 누르다 보안 그룹에서 HTTP, HTTPS 규칙을 넣어줘야 프론트에서 접근이 가능

image.png

4. 인스턴스 생성까지 가면 pem 파일을 다운 받을 수 있고

이 파일을 프로젝트 루트 폴더에 넣어준다 (중요! .gitignore에 반드시 추가하기)
image.png

5. 연결 탭을 눌러 ssh 주소를 루트 폴더에 실행

image.png

  • 각 서버에 ip가 부여되는데 이 주소는 껐다 켰다 할 때마다 바뀌기 때문에 탄력적 IP를 생성하는 게 편하다.
  • IP 두 개를 받아서 각각 FRONT BACK 인스턴스에 연결
    image.png

6. 고정 ip로 바뀐 인스턴스의 ssh 명령어(front/back 두 개)를 gitbash 로 두 개의 터미널을 열어준다

image.png

7. 우분투 서버에 node, mysql, git clone 하기

front용 설치

sudo su (root로 변경)
apt-get update (리눅스 패키지 최신화)
apt-get install -y build-essential
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash --
apt-get install -y nodejs

back용 설치

sudo su (root로 변경)
apt-get update (리눅스 패키지 최신화)
apt-get install -y build-essential
curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash --
apt-get install -y nodejs
apt-get install -y mysql-server
mysql_secure_installation
(mysql 비밀번호 설정 후)
mysql -uroot -p 실행하면 아래와 같이 mysql 문으로 이동

image.png

git clone 나의 프로젝트 깃
ls (폴더 열어보기)
rgProfect-react# cd front (경로로 들어가서 sudo npm i)
rgProfect-react# cd back (경로로 들어가서 sudo npm i)

8. 백그라운드 서버 구동을 위한 로컬 프론트 백엔드 pm2 각각 설치

npm i -g pm2
npm i pm2

로컬 프론트 package.json 명령어 수정

  "scripts": {
    "dev": "nodemon",
    "build": "cross-env ANALYZE=true next build",
    "prestart": "npm run build",
    "start": "cross-env NODE_ENV=production PORT=80 pm2 start server"
  },

로컬 백엔드 package.json 명령어 수정

  "scripts": {
    "dev": "nodemon",
    "start": "pm2 start index"
  },

pm2의 역할은 콘솔창에서 서버를 종료하더라고 백그라운드에서 분리된 서버가 계속 구동할 수 있도록 한다.

pm2 유용한 명령어

pm2 list : 구동 중인 서버 리스트 보여줌
pm2 monit : 모니터링의 기능으로 접속, 로그인 등 로그를 보여줌
pm2 kill : pm2가 실행 중인 서버 전체 종료
pm2 reload all : pm2 재실행

image.png


9. 아마존 프론트 백엔드 서버에 vim 설치

로컬에서 수정 후 깃으로 푸시를 하면
아마존 터미널(우분투 서버)에서 깃 풀 받는 방식이다.

> apt-get install vim (shell에서 돌아가는 에디터)
> vim .env
> vim 모드에서 쿠키와 같은 설정을 .env 파일에 기재되어있는대로 입력해주고 
:wq (저장 후 vim 모드 종료)

10. 로컬 프론트 server.js 배포용 포트 추가

    server.listen(prod ? process.env.PORT : 3000, () => {
        console.log(`next+express running on ${process.env.PORT}`);
    });

아마존 프론트 서버 실행

> NODE_ENV=production PORT=80 node server

image.png

10-1. 아마존 백엔드 서버 실행시 mysql password 에러

>mysql -uroot -p
>ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysql비밀번호(개발할 때 back>.env 파일에 적었던 비밀번호)';
>flush privileges;
>exit
  • 예전 버전으로 mysql 비밀번호 설정하기

10-2. 아마존 백엔드 서버 실행시 unknown database

>npm i -g sequelize-cli
>sequelize db:create
profile
블로그 이전했습니다

0개의 댓글