Summary#5 AWS Cloud Service EC2 (mongoDB connection fail-issue)
외부 서버(EC2)에 연결하기 위한 순서
1. AWS EC2 서버 구매하기(LTS Ver.)
- 서버 구매 후 포트 추가 설정하기(80, 5000, 27017 Port)
- 터미널을 통해 EC2에 접속하기
keypair의 접근권한 바꿔주기
sudo chmod 400 keypair file drag & drop
SSH로 접속하기
ssh -i keypair file drag & drop ubuntu@IP in AWS
예시)
- filezilla 설정하기
- drag & drop으로 파일 업로드 가능
- 서버환경 세팅하기(업그레이드, DB설치, 명령어 통일 등)
- initial_ec2.sh 파일 생성
# UTC to KST
sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
# python3 -> python
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
# pip3 -> pip
sudo apt-get update
sudo apt-get install -y python3-pip
pip3 --version
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
# port forwarding
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
# MongoDB - install
wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo mkdir -p /data/db
# MongoDB - run
sudo service mongod start
sleep 7
netstat -tnlp
# MongoDB set user, set conf file
mongo admin --eval 'db.createUser({user: "pearl", pwd: "pearl", roles:["root"]});'
sudo sh -c 'echo "security:\n authorization: enabled" >> /etc/mongod.conf'
sudo sed -i "s,\\(^[[:blank:]]*bindIp:\\) .*,\\1 0.0.0.0," /etc/mongod.conf
sudo service mongod stop
sudo service mongod start
sleep 5
netstat -tnlp
- filezilla에 ~.sh 파일 업로드 후 터미널에서 접속하기
sudo chmod 755 initial_ec2.sh
./initial_ec2.sh
- EC2 서버 시간대 한국으로 맞추기
sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime
- python3 명령어 -> python
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
- pip3 -> pip
sudo apt-get update
sudo apt-get install -y python3-pip
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
mongoDB (with issue)
- 설치
wget -qO - https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
sudo apt-get update
sudo apt-get install -y mongodb-org
- 실행
sudo service mongod start
- 접속계정 생성(기본값 test)
mongo
use admin;
db.createUser({user: "test", pwd: "test", roles:["root"]});
createUser가 안된다면, mongoDB 삭제 후 재설치
exit
sudo service mongod restart
- 외부에 열어주기
sudo vi /etc/mongod.conf
i 입력모드
ESC 버튼으로 전환 후
:wq 입력 후 Enter 하면 저장 후 나오기
아래와 같이 변경하면 완료
:wq
sudo service mongod restart
- robo3T로 EC2 서버의 mongoDB 접속하기
여기서 mongoDB createUser로 설정한 user, pw 입력
- 포트 포워딩(80 -> 5000)
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
- flask, pymongo 패키지 설치 후 접속
pip install flask
pip install pymongo
- filezilla에 static, templates, app.py 업로드 후 접속
python app.py
- 주소창에 http://[my EC2 IP]:5000/ 접근하여 홈페이지 확인
http 요청에서는 기본 80포트를 사용, 5000 포트로 전달하게 하는 포트 포워딩 세팅을 통해서 포트번호를 떼도 홈페이지가 동작함
- nohup 설정
터미널 종료시(SSH 접속 끊으면), 서버가 돌아가지 않는 현상 방지
nohup python app.py &
파일 변경사항이 있을 경우 강제종료 후 다시 nohup을 설정해야함
- 강제종료하기
ps -ef | grep 'app.py'
kill -9 [pid값]
pid값 = 프로세스 번호
- 도메인 연결(가비아 DNS)
- 도메인 구입 후 DNS 설정 - 도메인 연결하기
- 호스트 이름 : @
- IP주소 : EC2에서 설정한 IP
도메인으로 접속가능!
http://pearlkim.shop/
- html meta tag를 활용하여 og tag 만들기
<meta property="og:title" content="내 사이트의 제목" />
<meta property="og:description" content="보고 있는 페이지의 내용 요약" />
<meta property="og:image" content="{{ url_for('static', filename='ogimage.png') }}" />
og 태그는 한번 등록하면 수정되지 않기 때문에 수정을 원할 시에는
초기화가 필요!
- 페이스북 og 태그 초기화 하기: https://developers.facebook.com/tools/debug/
- 카카오톡 og 태그 초기화 하기: https://developers.kakao.com/tool/clear/og
END
Author And Source
이 문제에 관하여(Summary#5 AWS Cloud Service EC2 (mongoDB connection fail-issue)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lovvepearl/Summary5저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)