GCP 배포

Codren·2021년 5월 18일
0

Django 실전

목록 보기
11/12

Section 1. GCP 프로젝트 생성

1. GCP (Google Cloud Platform)

Goolgle의 클라우드 플랫폼 서비스




2. GCP 프로젝트 생성


    ① Compute Engine -> VM 인스턴스 메뉴 클릭 -> 프로젝트 생성


    ② 프로젝트 안에 인스턴스 생성

  • 리전 - 서울  /  시리즈 - N1  /  머신 유형 - f1-micro(vCPU 1개, 614MB)


    ③ 부팅 디스크 (운영체제) 설정

  • CentOS 7


    ④ 방화벽 설정

  • HTTP, HTTPS 트래픽 허용


    ⑤ Cloud 서비스로 VM 인스턴스(가상머신)가 실행됨




Section 2. GCP 서버 구성

1. 인스턴스 실행



2. GCP 서버 구성


    ① ius.io 설치
  • CentOS 7 에는 python 2.x 버전이므로 3버전 다운로드가 필요함
  • CentOS 7 yum 다운로드 패키지에는 python 3버전이 없음
  • 따라서 ius.io 라는 패키지 목록 정보를 가지고있는 것을 이용
sudo yum -y install epel-release
sudo yum -y install https://repo.ius.io/ius-release-el7.rpm
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm



    ② python 3.6 버전 설치 (django project는 3.7)

sudo yum -y install python36u python36u-devel python36u-pip

    ③ django_practice.zip 업로드 및 압축해제

sudo yum -y install unzip
unzip django_practice.zip 


    ④ virtualenv 가상환경 구축

sudo pip3 install virtualenv
python3 -m virtualenv virtualenv
source virtualenv/bin/activate

    ⑤ 필요 패키지 설치 (django, DRF)

pip install django==2.1.*
pip install djangorestframework==3.10.2

    ⑥ settings.py DB 설정

  • runserver 시에 error 발생
  • NAME 값이 str 형식으로 되어야 함

str(BASE_DIR / 'db.sqlite3')		# 또 다른 해결방법



Section 3. GCP 네트워크 구성

1. GCP 외부 IP

  • 외부에서 접근하기 위해서는 IP : 34.64.232.136 로 접속해야함



2. GCP runserver

  • 127.0.0.1 이 아닌 모든 IP 에서 접근할 수 있도록 아래와 같이 IP 를 지정하고 run
python3 manage.py runserver 0.0.0.0:8000



3. GCP CentOS 7 방화벽 설정

  • 방화벽 해제
sudo systemctl stop firewalld



4. GCP 클라우드 방화벽 설정

  • 내부 IP nic0 클릭

  • 허용 소스 IP 범위 0.0.0.0/0 (모든 IP/PORT 허용)



5. Django 배포 설정




Section 4. UWSGI

1. WSGI (Web Server Gateway Interface)

Python 의 표준 Gateway Interface

  • 웹 서버는 HTTP 형식의 요청을 받아서 처리한 뒤 응답해주는 기능 수행 (1차적인 수행 Nginx)
  • 서버에서 처리해야 할 작업이 있다면 Django와 같은 WAS(Web Application Server) 필요
  • 하지만 Django는 python으로 이루어져있기 때문에 HTTP 요청을 이해할 수 없음
  • 이를 지원하는 통신 규약 (Interface)을 명세한 것이 WSGI



2. UWSGI

WSGI 규칙을 따라서 만들어진 소프트웨어이며 정적인 웹 서버(Apache / Nginx)와 Python으로 작성된 Web Framework(Flask / Django) 사이의 통신을 지원



3. Djnago 동작 과정 (원리)

  • Client <-> Nginx <-> uWSGI <-> Django



4. uwsgi 설치

sudo yum -y install gcc
pip install uwsgi



5. 데몬 실행

  • 백그라운드에서 django 웹 애플리케이션이 실행될 수 있도록 아래 코드 실행
nohup uwsgi --http :8000 --home ~/virtualenv --chdir ~/django_practice --module django_practice.wsgi &



6. 접속 화면

  • IP : 34.64.232.136 -> 34.64.232.136 변경 (인스턴스 중간에 새로 생성함)
  • 8000번 포트가 아닌 80번 포트로 접속하기 위해서는 apache, nginx와 같은 웹 서버 프로그램과 연동해야함

0개의 댓글