AWS 서버 배포

박재현·2022년 3월 27일
0
post-custom-banner
--서버 배포--

1. AWS 서버 실행
 - RSA

2.powershell 우분투 접속
ssh -i 받은키페어를끌어다놓기 ubuntu@AWS에적힌내아이피
(ec2-user@AWS에적힌내아이피)

3. node js 설치
https://github.com/nodesource/distributions 에서
14.0x 버전 설치

ls현재 상태 목록
cd 폴더 명

관리자 권한 싱행 sudo-s

mysql 설치
https://luji.tistory.com/7
https://ppost.tistory.com/entry/%EC%9A%B0%EB%B6%84%ED%88%AC-1804%EC%97%90-%EC%84%9C%EB%B2%84%ED%99%98%EA%B2%BD-nodemysql%EA%B5%AC%EC%B6%95%ED%95%98%EA%B8%B0


4
1) 몽고디비 공식 사이트에서 설치 

1,3,4 그대로
2번 ubuntu18.04 설치

5.sudo service mongod start
 mongo
 use admin;
db.createUser({user: "test", pwd: "test", roles:["root"]});
exit
sudo service mongod restart
sudo vi /etc/mongod.conf
-> i, 파일 수정 후: esc 누른 후 : w q 
binIp: 0.0.0.0
security  주석처리
sudo service mongod restart

security: 
enabled

6.파일 질라 실행
사이트 관리자..
프로토콜: SFTP - SSH file~
호스트: 사이트 도메인
포트: 22
로그온 유형: 키파일
사용자: ubuntu
키파일: 업로드

8. cd 파일명

7. node modules 제거
sudo rm -rf node_modules
 npm i, npm install bcrypt --save


9. sudo -s (관리자 권한 실행)

10. npm install -g pm2 (pm2 설치) (pm2 눌러서 설치 확인)

11.pm2 start index.js(파일명)

 pm2 delete 0

12.pm2 ls

13 80포트를 3000번 포트로 보내기

80포트, mysql포트 열어주기

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000

포트 포워딩 죽이는 법
https://srzero.tistory.com/entry/Ubuntu-Iptable-nat-%EC%A1%B0%ED%9A%8C-%EB%B0%8F-%EC%84%A4%EC%A0%95-%EC%82%AD%EC%A0%9C

sudo iptables -t nat -L --line-numbers 포트포워드 목록

sudo iptables -t nat -D 

sudo -s

npm install -g pm2

pm2 start app.js --watch

pm2 log 

npm install -g nodemon

이미지 파일 업로드 필요할 시 
pm2 start main.js --watch --ignore-watch="data/* sessions/*"


AWS EC2에 접속하기

  • Mac OS: Mac은 ssh가 있어서, 명령어로 바로 접근 가능!
    • 터미널을 열기 (spotlight에 terminal 입력)
    • 방금 받은 내 Keypair의 접근 권한을 바꿔주기
      sudo chmod 400 받은키페어를끌어다놓기 
    • SSH로 접속하기
      ssh -i 받은키페어를끌어다놓기 ubuntu@AWS에적힌내아이피
      예) 아래와 비슷한 생김새!
      ssh -i /path/my-key-pair.pem ubuntu@13.125.250.20
  • Window: ssh가 없으므로, git bash라는 프로그램을 이용!
    • gitbash를 실행하고, 아래를 입력!
      ssh -i 받은키페어를끌어다놓기 ubuntu@AWS에적힌내아이피
      예) 아래와 비슷한 생김새!
      ssh -i /path/my-key-pair.pem ubuntu@13.125.250.20
    • Key fingerprint 관련 메시지가 나올 경우 Yes를 입력해주세요!
    • git bash를 종료할 때는 exit 명령어를 입력하여 ssh 접속을 먼저 끊어주세요.

EC2에 Node.js 설치 및 몽고디비 설치

  • [코드스니펫] Node.js 설치 명령어 01
    curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
  • [코드스니펫] Node.js 설치 명령어 02
    sudo apt-get install -y nodejs
👉 설치가 완료되면 `node -v` 명령어와 `npm -v`를 통해, 현재 EC2에 설치된 Node.js의 버전을 확인 할 수 있습니다.


EC2 몽고디비 설치하기

    1. [코드스니펫] mongoDB 설치 코드

      👉 mongoDB 공식자료를 참고해서 정리했습니다. [(링크)](https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/) 한 줄 한 줄이 무슨 뜻인지는 지금 굳이 알 필요 없어요!
      wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
      
      echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
      
      sudo apt-get update
      
      sudo apt-get install -y mongodb-org
    1. mongoDB 실행하기

      # 실행. 아무 반응이 없으면, 잘 실행된 것!
      # 리눅스는 보통 잘 되면 아무것도 안나와요!^^;
      sudo service mongod start
    1. mongoDB 접속 계정 생성하기

      👉 우리가 만든 mongoDB를 외부에 열어주기 전에, 접속에 필요한 아이디와 비밀번호를 세팅해봅시다! (설정 안하면 누구나 DB정보를 볼 수 있다는..!)
      mongo
      👉 좌측에 '>' 표시가 나오면 성공적으로 MongoDB에 접속한 것입니다! 다음 명령어를 순차적으로 입력해주세요.

      눈치 채셨겠지만,
      test, test 자리에 내가 넣고 싶은 아이디/비밀번호를 넣으면 됩니다. (영어로..!)

      # admin으로 계정 바꾸기
      use admin;
      
      # 계정 생성하기
      db.createUser({user: "test", pwd: "test", roles:["root"]});
      👉 아래와 같은 화면을 보면 완성!

      # 나오기
      exit
      
      # MongoDB 재시작
      sudo service mongod restart
    1. mongoDB를 외부에 열어주기

      👉 mongoDB는 디폴트로 내부에서만 접속을 허용하고 있습니다. 이 작업은 외부에서 접근이 가능하도록 잠금을 풀어주는 것입니다.

      리눅스 자체 에디터(고급 메모장 정도로 생각!)인 Vim이 등장합니다.
      a 를 눌러야 입력 모드가 되고, :wq 를 눌러야 저장하고 나올 수 있습니다.

      sudo vi /etc/mongod.conf
      
      # sudo: 관리자(SuperUser) 권한으로 다음을 실행
      # => "관리자 권한으로 /etc 폴더 아래 mongod.conf 파일을 Vim으로 켜줘!"라는 뜻입니다

      위 명령어를 실행하신 후, 아래 방향 화살 키를 누르시면 다음과 같은 내용이 보입니다.

      # 입력 모드 전환
      i

      위 붉은 박스의 내용을 아래와 같이 바꿔주세요!

      # 내용 저장하고 에디터 종료하기. esc 누르고 다음 입력.
      :wq
      
      # 재시작
      sudo service mongod restart
    1. Robo3T를 이용해서, "내 컴퓨터에서"→"서버에 있는 mongoDB"에 접속하기
    • 좌측 상단 빨간 상자 내 아이콘을 클릭합니다.
    • Create 클릭!
    • 접속 정보를 세팅합니다.
    • 상단 Authentication 탭을 클릭합니다.
      1. Perform authentication 체크박스를 클릭합니다.

      2. 생성한 계정의 아이디와 비밀번호를 입력하고, 'save'를 클릭합니다.

        👉 하지만, EC2 인스턴스 자체에서 27017 포트 대문을 아직 열지 않았기 때문에, 접속이 완료되지 않습니다. 일단 이 상태로 둔 다음, 챕터 9에서 EC2 포트 설정 후 다시 접속해봅니다.

프로젝트 업로드 후 실행하기, PM2

  • FTP 서버를 통해 프로젝트 업로드 하기

👉 그런 다음, 이미지와 같이 프로젝트 파일을 FTP 서버로 끌어다 놓습니다.

👉 명령어로 접속했던 검은화면속 EC2 서버 터미널에서, `ls -al` 명령어를 쳐보면 방금전 옮겼던 프로젝트가 확인됩니다. 그럼 해당 프로젝트로 들어가봅니다.

cd sparta-node-basic (여러분 프로젝트 이름으로)

👉 파일 옮길 경우 크기도 크기때문에 node_modules는 빼고 옮겨줌 그다음 npm i, npm install bcrypt 를 통해 bcrypt 따로 설치 ( 그냥 설치 시 오류 많이 남)

👉 프로젝트로 들어간 다음, npm install 명령어를 쳐줍니다.
프로젝트 도구들은 node_modules에 들어 있지만, 옮기는 과정에서 누락됐을 경우를 고려하여 다시한번 재설치해줍니다.(이미 설치가 제대로 되어 있으면, 덮어씁니다)

영원히 꺼지지 않는 서버 실행기, PM2

👉 EC2서버에서는 약간 다른 방식으로 프로젝트를 실행시켜야 합니다. 죽지 않은 실행 방식으로 프로젝트 서버를 실행시켜야, 여러분들의 컴퓨터를 닫아도 Node.js 서버는 살아 있을겁니다.

이를 위해 PM2라는 도구를 사용합니다.
해당 명령어를 사용하면, Node.js 프로젝트 서버를 직접 끄지 않은 이상, 컴퓨터를 닫아도 계속 실행됩니다.

이 밖에도 PM2 도구는 서버 실행과 운영을 위해 유용하고 다양한 기능을 제공하고 있으니 추후에 확인해보시기 바랍니다.

PM2 문서 확인

PM2 도구는 서버 컴퓨터의 관리자 권한을 취득 한 후 사용할 수 있기 때문에, 관리자 권한 취득 명령어를 먼저 실행 한 후 설치합니다.

EC2 인스턴스 관리자 권한 취득

sudo -s

PM2 설치

👉 그럼 다음, `pm2 start app.js` 명령어로 서버를 켜봅시다! 다음과 같이 익숙한 화면이 나오면 성공적으로 실행한겁니다.

포트 포워딩

sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
post-custom-banner

0개의 댓글