Notice
Recent Posts
Recent Comments
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Día de Ruru

20230325 TIL 본문

항해99/TIL

20230325 TIL

공대루루 2023. 3. 25. 22:19

EC2 이용해서 서버에 배포하기

AWS에 가입하고 인스턴스 생성은 다 되어있다는 가정하에 정리해보는 API 배포하기!!!

1. AWS EC2에 접속하기

window는 git bash 프로그램으로 EC2에 접속해야 한다.. 아래의 명령어를 입력하면 git bash로 내 인스턴스에 접속가능

ssh -i 받은키페어를끌어다놓기 ubuntu@AWS에적힌내아이피

※ 접속 끊을 때는 exit 명령어를 입력하면 된다

node 설치하기

curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -

sudo apt-get install -y nodejs

☆git Bash에서 사용할 수 있는 리눅스 명령어★

ls: 내 위치의 모든 파일을 보여준다.
mkdir: 폴더 생성
cd 폴더이름: 폴더이동
cd .. : 상위 폴더로 이동
rm -rf 파일 또는 폴더이름: 지우기

2. Git Hub에 있는 Repo Clone해오기

내 repo에서 code 버튼 누르면 나오는 창
내 repo에서 code 버튼 누르면 나오는 창

위의 그림처럼 배포하려고 하는 repo의 코드를 HTTPS 링크로 복사한다. 복사한 링크를 사용해서 git clone으로 EC2 컴퓨터에 폴더를 생성할 예정이다. 아래의 코드를 git bash에 입력한다.

git clone 복사한 링크

git hub에는 .gitignore 에 해당하는 파일과 폴더를 업로드 되지 않는다. 대표적으로 node_module 폴더나 .env 파일이 있다. 하지만 이 파일들이 없으면 코드가 정상적으로 작동하지 않기 때문에 EC2 에도 내 로컬 환경과 똑같이 만들어주어야 한다.

npm install

우선 package-lock.json에 해당하는 라이브러리들을 설치해야한다. git clone으로 받아온 폴더에 package-lock.json와 package.json이 있으면 위의 명령어를 입력해서 EC2에도 해당하는 라이브러리들을 모두 설치할 수 있다.

ls 명령어를 사용하면 현재위치에 node_module 폴더가 생성된것을 확인할 수 있다. 이제 환경변수를 관리해주는 .env 파일을 만들어야 한다. 아래의 명령어를 git bash에 입력하면 빈 창이 생성된다. 이제 여기에 환경변수를 입력해주면 됨

vim .env

하지만 아무리 입력하려고 해도 입력이 되지않는다.. 입력 모드로 들어가야 한다. i 를 입력해서 입력모드로 들어간다.

i    //입력모드로 전환
:q    // 종료한다
:q!	 //저장하지 않고 강제로 종료
:wq	 //저장하고 종료한다.

입력 모드에서 원래 내 컴퓨터의 .env 파일에 있던 환경변수 내용을 입력해준 후 esc를 입력해서 입력모드에서 빠져나온다. :wq를 입력하면 저장하고 종료할 수 있다. .env 파일은 앞에 점이 붙어있기 때문에 ls 라는 명령어로는 확인할 수 없다.

ls -a  // 숨김파일도 확인할 수 있다
cat 파일이름  //파일에 작성된 내용을 확인할 수 있다.

위의 명령어로 .env가 제대로 생성되었는지 확인하고 넘어가면 된다.

3. iptables 규칙 변경 명령어

주소뒤에 붙은 포트 넘버를 없애고 바로 접속하고 싶을 때 아래의 명령어를 사용하면 된다. 아래 명령어는 80번 포트로 들어오는 요청을 3000번 포트로 넘겨주겠다는 명령어이다.

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

80번 포트는 우리가 브라우저로 접속하는 기본 포트이다. www.naver.com이라는   는 주소로 접속을 하더라도 뒤에 :80이 숨겨져 있을 뿐 우리는 항상 80번 포트로 접속하고 있는 것이다.

그러면 포트가 없는 주소를 만들기 위해서는 80번으로 들어가면 되겠다!!!! 근데 우리가 사용하는 포트는 3000번인데?? 그럼 80번으로 들어오는 요청을 3000번으로 연결되게 하면되지뭐! 이런 개념이다

4. 영원히 꺼지지 않는 서버 실행 프로그램 PM2

우리가 그냥 git bash에서 node app.js 를 실행하게되면 git bash가 켜져있는 동안만 실행이 되고 git bash를 끄면 서버가 꺼진다.... 하지만 평생 git bash를 켜둘수는 없기 때문에 PM2라는 프로그램을 사용하여 git bash를 종료해도 작동하게 해볼 예정이다. pm2를 설치하거나 실행할 때에는 관리자 권한이 필요하기 때문에 아래 명령어로 관리자 모드를 실행후 그 아래 명령어를 사용해서 전역에 pm2 프로그램을 설치한다.

sudo -s
npm install -g pm2 //전역에 프로그램을 설치한다

☆PM2 명령어★

pm2 start app.js  //app.js 실행
pm2 list //현재 돌아가는 서비스 목록 출력
pm2 delete 0 //목록에 있는 0번 서버 종료
pm2 log //실행한 서비스들의 로그를 출력

'항해99 > TIL' 카테고리의 다른 글

20230405 TIL  (0) 2023.04.06
20230328 TIL  (0) 2023.03.29
20230324 TIL  (1) 2023.03.25
20230323 TIL  (0) 2023.03.23
20230320 TIL  (0) 2023.03.21
Comments