[ 08.12 ] AWS - EC2 인스턴스 상에서 서버 실행하기.

ssh 까지 생성된 상태를 전제로 시작해보겠음
(ssh 생성 및 연결은 이전블로그에 작성 🙌🏻)

1. 서버실행 개발환경 구축하기

요상태. 현재 나는 우분투 컴퓨터를 한대 빌린상태라고 보면 된다.
이 상태에서 nvm 을 설치해야 하는데 지금 내 로컬상태가 아니다보니까 별도의 설치를 해줘야 한다.

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash

bash: source ~/.bashrc

출처 https://github.com/nvm-sh/nvm#install--update-script

그 다음

nvm install node 로 node 

를 설치해준 후 npm 명령어가 정상적으로 입력이 안될때를 대비하여

sudo apt install npm 

명령어까지 설치해준다.

  1. 서버코드 클론 받기
    깃에서 레포지토리 포크하여 클론받는것과 똑같이 우분투 환경에서도 똑같은 명령어를 작성해준다.이때 유저네임과 비밀번호까지 작성하는 칸이 같이나온다.
git clone 레포지토리주소


내가 받은 레포지토리를 ls 로 까보니 app.js 과 그외 패키지들이 있다.
npm install 까지 받은 후 그냥 npm start 가 아닌, 반드시 관리자권한의

sudo npm start

로 서버를 열어주도록 한다.

2. 보안그룹 설정하기


이 상태에서는 보안그룹을 설정해주지 않았기 떄문에 제대로 요청이 되지 않았을 것이다.
보안그룹 메뉴바에서 해당되는 보안그룹 ID 를 선택한다.

해당 되는 보안그룹의 인바운드 규칙을 수정해야 한다. edit inbound rules 클릭!
여기서 보안규칙을 적용하는 이유는
가상의 컴퓨터, EC2 에서 http 에 접근하는것을 허용하기 위해서이다.

여기서 유형은 모든 TCP , 소스는 anywhere ipv4 로 지정한다.
0.0.0.0/0 이란뜻도 모든곳에서 허용된다는 뜻이다.


제대로 요청이 되었는지 확인하기 위해서 퍼블릭 IPv4 주소 또는 퍼블릭 IPv4 DNS 주소를 복사하여 포스트맨이나 새로운 주소창에 쳐본다.
이때 반드시 http:// 는 붙여주도록 한다!

"hello world" 우분투 서버에도 잘 연결 됨을 확인했다!.

3. PM2

그런데 만약 ssh 터미널을 실수든 고의든 종료했다고 치자. 일반 개발환경에서는 EC2 상의 node 까지 다 종료될것이고 node 로 돌아가던 웹서비스도 종료되게 된다. 하지만 ssh 를 종료한 상태에서도 node.js 환경이 돌아가게끔, 프로세스를 관리하는 프로그램 PM2을 사용하므로서 node 프로세스가 상시 실행될 수 있다.

EC2 가 돌아가는 환경에서 pm2 설치한다.

npm install pm2 -g 

처음 pm2로 어떤 파일을 실행시킬땐 관리자 권한명령어를 다운받아야 한다.
앞서 sudo 명령어를 붙였던것처럼 pm2 에서는 authbind 패키지를 추가로 받아야 한다. (좀 많음.)

sudo apt-get update
sudo apt-get install authbind
sudo touch /etc/authbind/byport/80
sudo chown ubuntu /etc/authbind/byport/80
sudo chmod 755 /etc/authbind/byport/80
authbind --deep pm2 update

네.. 이모든 코드를 다 터미널에 쳐야한다 ㅋㅋ 또는 복붙.
절대못외움. 그러니 나중에 받을때도 이 블로그 참고할 예정.

여튼 이 상태에서 관리자 권한패키지를 받고
pm2 start app.js(파일명) 을 치면 제대로 연결된다!
추가적으로 pm2 의 현재 상황(?) 즉 깃으로 따지면 git status 같은역할을 하는것이 pm2 ls 이다.

status online 굿굿.
app.js 파일이 제대로 연결됨을 확인할 수 있다.
더 자세한 로그를 보기위해 (git log 같은 역할인듯)
pm2 log 를 치면

뭐가 어쩌고저쩌고 여태까지의 로그가 많이 나옵니다.

🧐 만약 status 부분에 에러가 뜬다면?

status 에 error 라고 빨간글씨가 뜰때가 있다.(캡쳐를 못함;)
이것저것 만지다보면서 하니 정확하게 왜 에러가 떴는지 모르겠지만 아마 권리자권한 전에 프로세스를 리스트에 올려놔서 그랬던것 같다.

이럴땐 app.js 를 지워주고 다시 start 를 해줘야 한다.

pm2 delete app.js

authbind 를 설치안했다면 다시 설치를 해주고, 해줬다면.. 난 그래도 또 해줬다. 혹시몰라섴ㅋㅋㅋㅋ

authbind --deep pm2 start app.js

앞에 authbind --deep 을 붙이고 다시 pm2 start app.js 를 해주면 제대로 작동한다!

좋은 웹페이지 즐겨찾기