1.
aws 계정 생성 -> 인스턴스 생성(Ubuntu)로 인스턴스 시작 (+키 생성)
보안 포트 범위 설정 mongo db 포트와 react의 포트 번호, 그리고 nginx의 80번 설정( 내 경우엔 3000,5000,80 )
2.
윈도우는 주로 PUTTY를 사용하는 듯하다. PUTTYGen으로 private key file을 생성하고,
PUTTY로 키 파일 경로 찾아서 넣어주고, 호스트이름은 aws 해당 인스턴스에서 퍼블릭 IPv4 DNS를 확인한다.
ubuntu@퍼블릭 IPv4 DNS 로 key는 auth에 파일경로로 넣어주고, putty를 실행해준다. putty 사용법은 구글링하면 많이 나온다.
3.
✔ 우분투 명령어를 입력할수 있는 터미널이 정상적으로 작동하면 성공,
몽고디비 사이트에가도 document로 안내가 되어있지만, 내 경우엔 우분투 버전과 몽고디비 버전이 맞지 않아서 오류가 났다.
우분투 버전을 꼭!확인하여 mongodb 설치해야한다. (22.04 버전이 작동하는 명령어는 구글링해서 찾음)
https://itnixpro.com/install-mongodb-on-ubuntu-22-04/
Install MongoDB on Ubuntu 22.04 - itnixpro.com
This article is going to teach you how to Install MongoDB on Ubuntu 22.04. MongoDB is a document-oriented NoSQL database for storing large amounts of data.
itnixpro.com
우분투 버전(내 경우엔 22.04) 관련 이슈가 있어 다음 링크에 있는 명령어대로 해서 해결했다.
MongoDB Install Fails on Ubuntu 22.04 - Depends on libssl1.1 but it is not installable
Here are the standard installation instructions from the website: wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add - echo "deb [ arch=amd64,arm64 ] https://repo.
askubuntu.com
4.
몽고디비 설치를 확인함. mongo --version 를 입력해보면 된다. 정상적으로 확인되면
다음 명령어들을 통해 몽고 디비 실행 및 상태 확인
sudo service mongod start
sudo service mongod status
mongo : 쉘 실행 명령어이다.
5.
use admin 입력 후 관리자 계정 생성.
db.createUser({ user: "admin", pwd: "password", roles: ["userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase"] })
관리자 계정을 생성하는 명령어이다.
계정이 생성되고 나면 mongo 명령어 뒤에 아이디 및 비밀번호를 입력해야 몽고쉘이 실행된다.
mongo -u admin -p password
자기가 정한 계정이름과 패스워드를 입력하면 실행됨.
내 경우에는 로컬에서 이미 완성한 프로젝트가 있고, 해당 데이터베이스의 계정이 이미 있어서 해당 부분은 생략했다.
6.
서버 내부의 파일들을 관리하기 편하게 하려면 FileZilla를 활용하면 됨.이제 nginx로 프록시 서버를 만들어준다. 여기 링크를 참고해서 명령어들을 입력해줬다. nginx로 react 프로젝트를 실행하는 방법은 구글링하면 많이 나와있다.
https://kingso.netlify.app/posts/AWS-EC2-React-mongodb-deploy4/
Kingso's blog
Nginx로 프록시 서버 만들기 1. Nginx 설치 sudo apt-get install nginx EC2 인스턴스의 ‘IPv4 퍼블릭 IP’로 들어갔을 때, nginx 기본 페이지가 나온다면 정상적으로 설치 완료된 것입니다. 만약 나오지 않는다
kingso.netlify.app
여기서 중요한 것은, conf 파일 내에 아이피주소 설정이다. 다만 나는 listen 80에 server 또한 3000으로 프록시 설정을 했음에도 80 서버가 3000으로 보내지지 않는 문제점이 있다.😂
7.
sudo service nginx start
nginx를 실행시키고 난 다음, 정상적으로 실행되는지 체크해본다.
다음은 git clone '레포지토리 링크' 로 프로젝트를 clone해 오면 된다.
clone 한 다음은 cd 명령어로 해당 디렉토리 경로로 가서 npm install로 npm을 설치하면된다.
데이터베이스 안의 디렉토리들을 시각적으로 보고싶으면 위에서 언급한 filezilla를 활용하면된다.
개인적으로 filezilla를 활용은 하위 디렉토리 위치만 확인하는 용도로 썼고 모든 과정을 대부분 ubuntu 명령어로 했다.
8.
npm install 이 실행되지 않는다면 오류 메세지를 구글링 해보면 된다. package 관련 메세지는 apt update로 해결했고, 내 경우엔 node_modules 오류가 나서 npm이나 node js가 제대로 설치가 안되었다. 그래서 우선 디렉토리 내의 node_modules를 명령어로 삭제한 다음, nvm으로 필요한 node 버전을 찾아서 설치했다. nvm 관련 명령어는 다음 링크를 참조했다.
rm -rf node_modules
https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-ubuntu-22-04
How To Install Node.js on Ubuntu 22.04 | DigitalOcean
www.digitalocean.com
9.
여기까지 수행했다면 디렉토리에서 npm start로 프로젝트를 실행시키고 아이피주소로 가보자.
http://34.229.215.70:3000/
내경우엔 이런식으로 포트번호 위치로 가니 실행되었다.
이제 정말 마지막, pm2를 설치해서 mongo db 서버와 react 서버로 백그라운드에서 서버를 실행시키면 putty를 종료해도 서버가 종료되지 않는다. 로컬에서 본인이 서버를 실행하도록 설정해놓은 명령어를 확인해보면 된다(package json). 나는 로컬환경에서 개발할때 프록시로 node와 react 서버를 함께 동작 시켰는데, pm2에서도 동일하게 서버가 동작되도록 하니 로컬과 동일한 기능들이 오류없이 작동했다.
pm2 start npm --name "app name" -- start
pm2 list 를 하면 백그라운드에서 실행되고 있는 서버들이 출력된다.
https://kingso.netlify.app/posts/AWS-EC2-React-mongodb-deploy5/
Kingso's blog
(React + MongoDB), AWS 배포 - React 백그라운드 실행 (5) (React + MongoDB), AWS 배포 - EC2를 이용해서 서버호스팅 받기 (1) 위의 포스팅을 보면 Ubuntu Server로 생성했습니다. 백그라운드 실행 앞에 1탄, 2탄, 3탄,
kingso.netlify.app
위의 블로그에서 정말 많은 도움을 받았다. 이제 도메인만 구매하면 본인이 원하는 사이트명으로 작동시킬 수 있을 것이다.
'공부 > http' 카테고리의 다른 글
[http] 브라우저의 렌더링 과정 (0) | 2022.03.17 |
---|