Node.js / MongoDB로 작업한 프로젝트를 AWS EC2를 이용해 배포하고자 한다. 우선 연결 과정부터 보도록 하자.
EC2 대시보드에 들어가서 인스턴스 시작 버튼을 누른다.
사용하고자 하는 AMI를 선택 해준다.
프리 티어 사용 가능(12개월 무료)인 것으로 선택.
키 페어 생성
AWS에서 가상 서버에 접근하려면 개인키(private key)와 공개키(public key)로 구성된 키 페어(key pair)가 필요하다. 공개키는 AWS에 업로드되어 가상 가상 서버에 삽입되고, 개인키는 자신이 소유하지만 훨씬 더 안전하다. 기존에 만든 키 페어가 있다면 기존의 것으로 선택한다.
보안그룹
보안그룹은 aws에서 임대한 가상 방화벽이다. 인바운드 규칙과 아웃바운드 규칙을 설정하여 여러 가지 트래픽을 제어 할 수 있다.
HTTPs, HTTp 트래픽을 허용해 주었다. 인스턴스 생성하고 보안그룹에서 인바운드 규칙 편집으로 바꿔주어도 된다.
설정을 마친 뒤에 인스턴스 시작 버튼을 누른다.
1) 터미널을 키고 생성한 키 페어.pem가 있는 경로로 이동한다.
cd {pemkey 경로}
2)key파일에 대한 권한 설정 변경
chmod 400 {pemKey이름}.pem
이 명령을 실행하여 키를 공개적으로 볼 수 없도록 한다. 400은 나에게만 읽기 권한을 부여함.
3) ssh 접속
sudo ssh -i {pemKeyName}.pem ec2-user@{퍼블릭 IPv4 DNS}
Amazon linux에서 mongodb 설치
Ubuntu에서 mongodb 설치
위의 문서대로 설치 해준다.
1) 패키지 관리 시스템 구성
sudo vi /etc/yum.repos.d/mongodb-org-5.0.repo
안에 이 내용을 넣어준다.
[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/amazon/2/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc
2) mongoDB 패키지 설치
linux는 yum / ubuntu는 apt-key
sudo yum install -y mongodb-org
3) mongodb 시작
sudo service mongodb start //시작
sudo service mongodb restart //재시작
sudo service mongodb stop //중지
sudo service mongodb status //상태확인
4) db 계정 생성
mongo
use admin //루트 계정
db.createUser({user: "아이디", pwd: "비밀번호", roles: ["root"]});
use customdb //다른 계정 생성
db.createUser({user: "아이디", pwd: "비밀번호", roles: ["readWrite"]});
5) mongodb config 변경
sudo vi /etc/mongod.conf
모든 곳에서 접속할 수 있도록 하기 위해서 bindIp를 0.0.0.0 으로 수정.
security 주석도 풀어주고 authorization: enabled로 수정.
esc + : wq!(저장하고 나가기)
*security 주석 풀고나서 db 계정 추가하는데 에러가 났다. 다시 주석 처리하고 계정을 추가하자.
6) sudo service mongodb restart
다시 시작 해주자.
Test를 통해 연결 되는지 확인
저장하고 연결.
aws에 node.js 설치
위 링크에 나온 대로 하면 됨.
node.js 설치하면서 최신 버전 v18.3.0으로 설치가 되었다.
node -v 해도 not found가 나오길래 구글링 해보니 V16.15.1 LTS로 사용하면 된다고 한다. nvm install 16.15.1로 설치해주고 nvm use 16.15.1로 하니까 잘 됐다.
node -v / npm -v 확인
Amazon Linux 2에서는 yum을 통한 nginx 설치가 지원되지 않는다.
Amazon Linux에서 사용하는 nginx가 따로 있다.
1) 설치
sudo amazon-linux-extras install -y nginx1
2) 설치 확인
nginx -v
3) 서비스 시작
sudo service nginx start
Redirecting to /bin/systemctl start nginx.service
4) 상태확인
sudo servive nginx status //상태확인
퍼블릭 주소로 브라우저로 들어가면 이 화면이 나온다. 다른 블로그에 나온 welcome nginx 화면이 아니라서 연결이 안되었나 생각했다. nginx 서비스 종료하고 들어가보니 연결이 끊긴다.