<commit_before>---
layout: post
title: 구글엔진으로 장고 배포하기 - 1. 배포 전 준비
categories: [Google News Lab]
tags: [Google News Lab, django]
description: 
---

오늘 포스팅은 오랜만에 삽질하며 구글 클라우드 플랫폼으로 장고 프로젝트를 성공했기에, 그 방법을 다시 한번 숙지할 겸 공유하고자 한다. 

<br>

현재 구글 뉴스랩 프로그램에 개발자로 참여하여 뉴스컨텐츠 제작 작업을 진행하고 있다. 뉴스랩 활동에 대해서는 프로그램이 끝나고 따로 포스팅할 예정이다 :) (블로그 활동이 뜸한 이유는 바로 이것때문!ㅋㅋ)

<br>

## 시작 전 구상하기

AWS로 배포를 한번 해봤던 터라 배포과정은 대략적으로 다음과 같이 구상했다. 

`장고 프로젝트 생성(데이터베이스 포함)` > `웹서버 구축` > `도커이미지 생성` > `구글 엔진에 이미지 배포`

하지만 AWS와 구글 엔진 작동 원리는 좀 달랐다. 
구글의 기본 스탠다드/플렉시블 엔진을 사용할 경우 배포 설정이 담긴 `app.yaml`와 `requirements.txt`만 있으면 배포가 된다. 

도커 이미지를 배포하려면 다른 엔진을 써야했는데,  
처음에는 컴퓨트 엔진에 바로 도커이미지를 태울까 생각도 했었지만 장고의 도커이미지를 올리는 데 `Kubernete` 엔진이 적합하다는 튜토리얼의 문구를 믿고(...선택의 여지가 없었다. 문서가 너무 빈약함) 따라해보기로 했다. 

<a href="https://cloud.google.com/python/django/kubernetes-engine" target="_blank">문서 바로가기 - Deploying Djnago with Kubernetes Engine</a>

<br>

## 1. 장고 프로젝트 생성

먼저 배포할 장고 프로젝트를 생성한다. 생성하는 방법은 <a href="http://juliahwang.kr/django/2017/09/07/%EC%9E%A5%EA%B3%A0%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%84%B8%ED%8C%85%ED%95%98%EA%B8%B0.html" target="_blank">여기</a>에 따로 설명해놓았는데, 주의할 점은 `pyenv`를 사용하지 않고 `virtualenv`를 사용할 것이기 때문에 가상환경 설정은 따로 설명한다. 

프로젝트를 만든 후 파일구조는 다음과 같다. 

```powershell
./django_app 
.
├── README.md
├── __init__.py
├── article
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   ├── models.py
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── config
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
├── static
└── templates
```

<br>

## 2. 가상환경 설정하기
<commit_msg>add github link<commit_after>---
layout: post
title: 구글엔진으로 장고 배포하기 - 1. 배포 전 준비
categories: [Google News Lab]
tags: [Google News Lab, django]
description: 
---

오늘 포스팅은 오랜만에 삽질하며 구글 클라우드 플랫폼으로 장고 프로젝트를 성공했기에, 그 방법을 다시 한번 숙지할 겸 공유하고자 한다. 

<br>

현재 구글 뉴스랩 프로그램에 개발자로 참여하여 뉴스컨텐츠 제작 작업을 진행하고 있다. 뉴스랩 활동에 대해서는 프로그램이 끝나고 따로 포스팅할 예정이다 :) (블로그 활동이 뜸한 이유는 바로 이것때문!ㅋㅋ)

<br>

## 시작 전 구상하기

AWS로 배포를 한번 해봤던 터라 배포과정은 대략적으로 다음과 같이 구상했다. 

`장고 프로젝트 생성(데이터베이스 포함)` > `웹서버 구축` > `도커이미지 생성` > `구글 엔진에 이미지 배포`

하지만 AWS와 구글 엔진 작동 원리는 좀 달랐다. 
구글의 기본 스탠다드/플렉시블 엔진을 사용할 경우 배포 설정이 담긴 `app.yaml`와 `requirements.txt`만 있으면 배포가 된다. 

도커 이미지를 배포하려면 다른 엔진을 써야했는데,  
처음에는 컴퓨트 엔진에 바로 도커이미지를 태울까 생각도 했었지만 장고의 도커이미지를 올리는 데 `Kubernete` 엔진이 적합하다는 튜토리얼의 문구를 믿고(...선택의 여지가 없었다. 문서가 너무 빈약함) 따라해보기로 했다. 

<a href="https://cloud.google.com/python/django/kubernetes-engine" target="_blank">문서 바로가기 - Deploying Djnago with Kubernetes Engine</a>

<br>

## 1. 장고 프로젝트 생성

먼저 배포할 장고 프로젝트를 생성한다. 생성하는 방법은 <a href="http://juliahwang.kr/django/2017/09/07/%EC%9E%A5%EA%B3%A0%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%84%B8%ED%8C%85%ED%95%98%EA%B8%B0.html" target="_blank">여기</a>에 따로 설명해놓았는데, 주의할 점은 `pyenv`를 사용하지 않고 `virtualenv`를 사용할 것이기 때문에 가상환경 설정은 따로 설명한다. 

`Github`에 <a href="https://github.com/juliahwang/pilter_web/tree/master/" target="_blank">소스코드</a>를 올려놓았다.
프로젝트를 만든 후 파일구조는 다음과 같다. 

```powershell
./django_app 
.
├── README.md
├── __init__.py
├── article
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations
│   ├── models.py
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── config
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
├── static
└── templates
```

<br>

## 2. 가상환경 설정하기

{'fraction_non_alphanumeric': 0.15824508320726172, 'fraction_numerical': 0.022390317700453858, 'mean_word_length': 3.338582677165354, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 27, 'https://': 3, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2278815', 'n_tokens_mistral': 2491, 'n_tokens_neox': 3105, 'n_words': 497}