정리

4-TIL 정리(flask와 aws를 이용한 서버세팅)-스파르타코딩클럽-

모_아이 2022. 4. 22. 01:31

●웹 서비스 런칭

필요한 것은

1) 컴퓨터가 항상 켜져있고 프로그램이 실행되어 있어야하고

2) 모두가 접근할 수 있는 공개 주소인 공개 IP 주소(Public IP Address)로 나의 웹 서비스에 접근할 수 있도록 해야해요.

 

-DNS란!

  • 우리가 접속하는 컴퓨터는 숫자로 되어있는 주소(IP 주소)가 붙어있다. 우리가 아는 URL 은 알아보기 쉽게 하는 등의 이유로 알파벳으로 바꾼 것이다. 이 일련의 변환 과정을 DNS라 부른다.
  • IP주소는 컴퓨터가 통신하기 위한 컴퓨터마다 가지고 잇는 고유 주소라고 생각! 서버는 하나의 주소를 가지고있다.
  • 포트는 항구라고 생각!(대한민국이란 ip에 부산항,인천항이란 포트)하나의 포트에 하나의 프로그램을 실행시킬 수 있습니다.

AWS EC2 서버 콘솔페이지

https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-2 

 

https://ap-northeast-2.console.aws.amazon.com/ec2/v2/home?region=ap-northeast-2

 

ap-northeast-2.console.aws.amazon.com

※EC2 서버 종료하는 방법 (1년 후 자동결제 방지!)

중지 또는 종료하는 법. 무료 기간(1년) 후 결제가 되기 전에, 이렇게 종료하세요!대상 인스턴스에 마우스 우클릭 > '인스턴스 상태' 를 클릭합니다. 중지 또는 종료 중 하나를 클릭하면 명령을 실행합니다.

-git bash를 이용한 AWS 접속

ssh -i 받은키페어를끌어다놓기 ubuntu@AWS에적힌내아이피

예시)

ssh -i /path/my-key-pair.pem ubuntu@13.125.250.20

-간단한 리눅스 명령어 ( 윗 화살표를 누르면 바로 전에 썼던 명령어가 뜬다!)

ls: 내 위치의 모든 파일을 보여준다.

pwd: 내 위치(폴더의 경로)를 알려준다.

mkdir: 내 위치 아래에 폴더를 하나 만든다.

cd [갈 곳]: 나를 [갈 곳] 폴더로 이동시킨다.

cd .. : 나를 상위 폴더로 이동시킨다.

cp -r [복사할 것] [붙여넣기 할 것]: 복사 붙여넣기

rm -rf [지울 것]: 지우기

sudo [실행 할 명령어]: 명령어를 관리자 권한으로 실행한다.
sudo su: 관리가 권한으로 들어간다. (나올때는 exit으로 나옴)

-filezilla를 통해 서버에 파일들을 업로드 할 수 있다.

간단한 설정!

-콘솔창으로 파이썬 실행해보기

# home 디렉토리로 이동
cd ~

# 실행. 콘솔창에 hellow world!가 뜨는 것을 확인 할 수 있습니다.
python3 test.py

-EC2세팅(강사님이 만들어 놓으셨다. 회사나 팀프로젝트시 인프라 엔지니어나 개발 팀장님이 하시는 경우가 많다고한다.)/나중에 공부해 봐야겠다.

강사님이 만들어 놓은 파일을 파일질라로 업로드 후 터미널에서 순서대로 입력

sudo chmod 755 initial_ec2.sh
./initial_ec2.sh

세팅하는법! 길어서 접어둠

더보기

한국시간 세팅

💡 EC2 컴퓨터의 시간대를 한국으로 맞추는 명령어

sudo ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

 

파이썬 (python3 → python)

💡 python3 명령어를 python으로 사용할 수 있게 하는 명령어

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10

 

pip (pip3 → pip)

한 줄 씩 복사 붙여넣기!

💡1) pip3 설치

   2) pip3 명령어를 pip으로 사용할 수 있게 하는 명령어

# pip3 설치 sudo apt-get update sudo apt-get install -y python3-pip # pip3 대신 pip 라고 입력하기 위한 명령어 sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1

 

1.mongoDB 공식자료를 참고해서 정리했습니다. (링크) 한 줄 한 줄이 무슨 뜻인지는 지금 굳이 알 필요 없어요!

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

 

2. mongoDB 실행하기

# 실행. 아무 반응이 없으면, 잘 실행된 것!
# 리눅스는 보통 잘 되면 아무것도 안나와요!^^;
sudo service mongod start

 

3. mongoDB 접속 계정 생성하기

mongo

 

좌측에 '>' 표시가 나오면 성공적으로 MongoDB에 접속한 것입니다! 다음 명령어를 순차적으로 입력해주세요. 눈치 채셨겠지만, test, test 자리에 내가 넣고 싶은 아이디/비밀번호를 넣으면 됩니다. (영어로..!)

# admin으로 계정 바꾸기
use admin;

# 계정 생성하기
db.createUser({user: "test", pwd: "test", roles:["root"]});

 

아래와 같은 화면을 보면 완성!

# 나오기
exit

# MongoDB 재시작
sudo service mongod restart

 

4. mongoDB를 외부에 열어주기

mongoDB는 디폴트로 내부에서만 접속을 허용하고 있습니다. 이 작업은 외부에서 접근이 가능하도록 잠금을 풀어주는 것입니다. 리눅스 자체 에디터(고급 메모장 정도로 생각!)인 Vim이 등장합니다.

a 를 눌러야 입력 모드가 되고, :wq 를 눌러야 저장하고 나올 수 있습니다.

sudo vi /etc/mongod.conf

# sudo: 관리자(SuperUser) 권한으로 다음을 실행
# => "관리자 권한으로 /etc 폴더 아래 mongod.conf 파일을 Vim으로 켜줘!"라는 뜻입니다

위 명령어를 실행하신 후, 아래 방향 화살 키를 누르시면 다음과 같은 내용이 보입니다.

# 입력 모드 전환
i

위 붉은 박스의 내용을 아래와 같이 바꿔주세요!

# 내용 저장하고 에디터 종료하기. esc 누르고 다음 입력.
:wq

# 재시작
sudo service mongod restart

 

●flask서버 실행

-pip를 이용한 패키지 설치

pip install flask
pip install pymongo

-AWS에서 포트 열어주기! (접어둠)

더보기
http://내아이피:5000 → 잘 작동하는 것을 확인할 수 있습니다.

 

●페이지 업로드를 위한 Robo3T를 이용 내컴퓨터 → 서버에 있는 mongoDB에 접속하기

접는글

●포트 포워딩 개념

 

 

●nohup 설정을 이용한 서버 계속 켜두기

현재 상황

Git bash 또는 맥의 터미널을 종료하면 (=즉, SSH 접속을 끊으면) 프로세스가 종료되면서, 서버가 돌아가지 않고 있습니다. 그러나 우리가 원격접속을 끊어도, 서버는 계속 동작해야겠죠?

 

-원격 접속을 종료하더라도 서버가 계속 돌아가게 하기

# 아래의 명령어로 실행하면 된다
nohup python app.py &

-서버종료하기 (강제종료법)

# 아래 명령어로 미리 pid 값(프로세스 번호)을 본다
ps -ef | grep 'app.py'

# 아래 명령어로 특정 프로세스를 죽인다
kill -9 [pid값]

●gabia를 이용해 도메인 구입후 적용(DNS)

 

●OG 태그 넣기

 

<meta property="og:title" content="내 사이트의 제목" />
<meta property="og:description" content="보고 있는 페이지의 내용 요약" />
<meta property="og:image" content="{{ url_for('static', filename='ogimage.png') }}" />
반응형