본문 바로가기
개발/개발 일지

5주차 개발일지: 프로젝트 서버 배포(AWE EC2, 리눅스 우분투, 파일질라, 가비아 등)

by 부산청년1 2022. 12. 20.

 내가 만든 프로젝트를 서버에 배포해보기 

웹 서비스를 런칭하기 위해 클라이언트의 요청에 항상 응답할 수 있는 서버에 프로젝트를 실행할 예정임 

 

✔클라의 요청에 항상 응답하려면 

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

2) 모두가 접근할 수 있는 공개 ip주소로 나의 웹 서비스에 접근할 수 있어야함 

➡ 이러한 한계점때문에 보통은 클라우드 서버를 활용함 

 

AWS클라우드 서비스에서 항상 컴퓨터를 켜둘수 있는 EC2사용권을 구매하여 리눅스 우분투로 설정하여 서버를 배포해볼 예정임 

 

1) AWS EC2에서 인스턴스 만들기 : OS로 리눅스의 ubuntu를 활용함 

** '리눅스'는 윈도우, 맥OS와 같은 운영체제이며 윈도우와 맥OS가 GUI를 통해 실행하는 반면, 리눅스는 명령어를 통해서 실행하는 운영체제임 

**주의: EC2 무료기간 1년 후에 결제가 되기에 과금을 원치않으면 해당 컴퓨터를 종료하거나 반납해야함 

인스턴스 상태를 중지(컴퓨터를 끄는 것) OR 종료(컴퓨터를 반납)로 설정

 

2) Git bash에서 리눅스 우분투 사용(명령어 입력하여 세팅) 

 

**리눅스 기본 명령어

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

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

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

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

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

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

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

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

 

**EC2세팅하기 

```jsx
# 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

# port forwarding
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000

 

3) filezilla를 통해 프로젝트한 파이썬 파일 업로드 

왼쪽이 내 컴퓨터이고 오른쪽에 AWS EC2를 통해 구입한 컴퓨터

git bash에서 정상 업로드 되었는지 파이썬 파일 실행해보기 

python test.py

 

4) 리눅스 우분투 명령어를 활용해 패키지 설치 

flask, pymongo 등 패키지 설치 필요

pip install flask
pip install pymongo 
pip install pymongo dnspython
* 순서대로 설치

 

5) AWS에서 5000포트 열어주기 

EC2관리 콘솔에서 보안그룹>launch-~~>edit inbound rules > 5000포트와 80포트 추가 (Anywhere-IPv4로 설정)

 

6) git bash를 종료(=SSH접속 종료)해도 서버가 돌아가게 만들기 

** 아래 명령으로 실행하면 SSH접속이 종료되어도 서버는 계속 돌아감 

nohup python app.py &

 

** 서버 종료 명령어

ps -ef | grep 'python app.py' | awk '{print $2}' | xargs kill

 

7) 도메인과 연결하기 (feat.가비아) 

**참고: 도메인과 DNS란? 

각 사이트에는 숫자로 이루어진 IP주소가 할당됨. 해당 사이트에 접속할 때마다 IP주소를 외우고 입력할 수는 없기에 직관적으로 해당 사이트임을 인식할 수 있는 도메인 주소가 따로 있음

DNS(Domain Name System)는 IP주소에게 도메인 이름을 등록해주는 과정이고 등록 대행 업체들을 통해서 진행함 (EX. 가비아, 카페24 등) 

 

EX.

  도메인 ip주소
네이버 naver.com 223.130.200.107
구글 google.com 142.250.199.110

 

 

가비아에서 550원에 도메인 등록을 할 수 있는 이벤트를 진행중임 

원하는 도메인 주소 넣고 결제 후, DNS설정해줌 

http://내AWS아이피/ -> http://내도메인/ 으로 접속 가능함을 확인함 

 

8) OG태그 설정

카톡, 페이스북, 슬랙에 공유했을 때, 예쁘게 나올 수 있도록 OG태그 설정함 

<meta property="og:title" content="내 사이트의 제목" />
<meta property="og:description" content="보고 있는 페이지의 내용 요약" />
<meta property="og:image" content="이미지URL" />

 

9) 결과물 

숙제로도 제출하고 남자친구 놀린다고 팬페이지도 만들어줬다...ㅎㅎ 생각보다 재밌는 듯 하다

댓글