내가 만든 프로젝트를 서버에 배포해보기
웹 서비스를 런칭하기 위해 클라이언트의 요청에 항상 응답할 수 있는 서버에 프로젝트를 실행할 예정임
✔클라의 요청에 항상 응답하려면
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) 결과물
숙제로도 제출하고 남자친구 놀린다고 팬페이지도 만들어줬다...ㅎㅎ 생각보다 재밌는 듯 하다
'개발 > 개발 일지' 카테고리의 다른 글
스파르타 코딩클럽 후기: 웹개발 5주차 수업 완료(feat. 내일배움카드) (3) | 2022.12.20 |
---|---|
4주차 개발일지: Flask, POST, GET등 (1) | 2022.12.19 |
3주차 개발일지: Python (0) | 2022.12.19 |
2주차 개발일지 Javascript (1) | 2022.12.04 |
1주차 개발일지: HTML, CSS, Javascript 기본 (1) | 2022.12.02 |
댓글