[ 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
명령어까지 설치해준다.
- 서버코드 클론 받기
깃에서 레포지토리 포크하여 클론받는것과 똑같이 우분투 환경에서도 똑같은 명령어를 작성해준다.이때 유저네임과 비밀번호까지 작성하는 칸이 같이나온다.
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 를 해주면 제대로 작동한다!
Author And Source
이 문제에 관하여([ 08.12 ] AWS - EC2 인스턴스 상에서 서버 실행하기.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@22soook00/08.12-AWS-S3저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)