GAE standard 환경에서 Python3 + Django로 서버 구축

아무래도. 첫 기사입니다. 긴장합니다.

GAE standard 환경에서 python3을 사용할 수있게되었습니다!



오랫동안 GAE의 표준 환경에서는 python2 만 사용할 수있었습니다.
python3으로 만들려면 flexible 환경을 사용해야 했지만 2018 년 7 월 python3 대응했습니다!
htps : // c ぉ dp t t rm. 오 g b b g. 이 m / 2018 / 07 / b 린긴 g - ぇ - st - 오 - r ゔ ぇ r ぇ s -. HTML

그것의 무엇이 대단한가요?
htps : // 이 m/도 k 같다/있어 ms/77f44551b8d219cfb370

이번에는 그 python3을 사용하여 장고를 움직이는 곳까지 할 것입니다.
구축 완료 후에 비늘 기억으로 쓰고 있으므로 빠져있는 곳이 아마 있습니다. 용서를.

1. 사전 준비



1-1. GAE 설정



python2 standard 환경에서의 장고 구축 방법은 공식 페이지에 기재되어 있으므로 보러 갑니다.
사전 준비는 python3에서도 변하지 않으므로 공식에 따라 체크박스를 채워 갑시다.
Google Cloud SQL API를 사용하도록 설정해야 합니다.
htps : // c ぉ d. 오, ぇ. 코 m / py 텐 / d 쟈고 / 아펜 기네? hl = 그럼

기본 흐름은 python2와 동일합니다. 망설이면 공식입니다!

1-2. 파이썬 개발 환경 구축



물론 파이썬도 설치해 둡시다. 이것도 공식이 쓰고있어!
h tps : // c ぉ d. 오, ぇ. 코 m/py 텐/세츠 p? hl = 그럼

1-3. 샘플 다운로드



'앱 다운로드 및 실행' 에서 샘플을 얻을 수 있다고 합니다.
가져와 보자. 리포지토리를 clone!
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git

... 어!

flexible과 standard와 함께, python3의 샘플 앱도 있다! (그 외는 python2의 샘플 앱 다요)
어느 것 ...



미안해!!
standard(python2)은 가득 찼는데 ...
hello_world의 내용을 보면 flask의 최소 구조였다. 하지만 릴리즈 했을 뿐이다, 어쩔 수 없다.

이번에는 이 hello_world와 python2 Django의 샘플 앱을 참고로 구축해 보겠습니다.
/python-docs-samples/appengine/standard_python37/hello_world/python-docs-samples/appengine/standard/django

2. Django의 새로운 앱 만들기



불필요한 불순물이 섞이지 않도록 Django를 설치하고 Django 명령에서 앱 만들기
pip install Django==2.1.1
django-admin.py startproject my_app ./

3. 파일 구성



샘플 앱 /python-docs-samples/appengine/standard/django필요한 파일을 복사하거나 같은 최종 필요한 파일 구성은 아래에.
├── [app_name]
│   ├── settings.py
│   ├── urls.py
│   ├── views.py
│   └── wsgi.py
├── app.yaml
├── manage.py
└── requirements.txt

샘플 앱에서 가져오는 파일은 아래.
  • settings.py ... DB (cloud sql)에 연결하기위한 정보
  • app.yaml ... GAE에 배포하기위한 정보
  • requirements.txt ... 필요한 파이썬 라이브러리 정보

  • 3-1. app.yaml


    runtime: python37
    entrypoint: gunicorn -b :$PORT [app_name].wsgi:application
    
    handlers:
    - url: /static
      static_dir: static/
    - url: .*
      script: [app_name].wsgi.application
    

    해설


  • handlers는 기존에 남아 있습니다.
  • runtimepython27 => python37 로 변경.
  • api_version, threadsafe, skip_files는 python37에서는 대응하지 않기 때문에 처마 줄거리 삭제. (skip_files는 조금 예외가 있음)
    이것이 있으면 deploy 오류가 발생합니다.
    공식 참조를 보면 python37의 runtime에서는 지원하지 않아!
    h tps : // c ぉ d. 오, ぇ. 코 m / 아펜 기네 / 도 cs / s 단지 rd / py 텐 3 / 곤후 g / 아 뿌레 f
  • entrypoint를 기술한다. 이 설정을 보면 GAE가 앱의 시작 지점을 결정합니다.
    무엇 그것? 자세한 것은 이쪽.
    htps : // c ぉ d. 오, ぇ. 코 m/아펜기네/도 cs/fぃぃbぇ/py 텐/룬치메? hl = 그럼 # 아 p ぃ 카치온 _ s r p

  • 3-2. requirements.txt


    PyMySQL
    Django>=2.1.1
    gunicorn
    

    변경점


  • gunicorn 추가app.yaml 에서 추가한 entrypoint 설정에 필요합니다. 그렇지 않으면 배포 중에 오류가 발생합니다.
  • 장고 버전 지정
    현재 다운로드한 최신 버전 이상의 버전을 지정합니다.

  • 3-3. 눈가리 gs. py



    django 명령으로 앱을 만들면 데이터베이스 연결이 sqlite가됩니다.
    물론 cloud sql로 합시다.
    sqlite를 삭제하고 setting.py를 공식적으로 변경하십시오.
    h tps : // c ぉ d. 오, ぇ. 코 m / py 텐 / d 쟈고 / 아펜 기네? hl = 그럼 # 어서 rs 응 ぢ g_

    여기에서는 거의 공식 페이지 을 참고로 하면 OK입니다만, 일단 간단하게 써 둡니다.

    4. 로컬에서 실행 확인


    virtualenv env
    source env/bin/activate
    manage.py migrate
    python manage.py runserver
    

    종료시
    deactivate
    

    공식:
    h tps : // c ぉ d. 오, ぇ. 코 m / py 텐 / d 쟈고 / 아펜 기네? hl = 그럼 # 루 _ ぇ _ 아 p_ 온 _ r_

    5. GAE에 deploy


    gcloud auth login
    python manage.py collectstatic
    gcloud app deploy
    

    공식:
    htps : // c ぉ d. 오, ぇ. 코 m / py 텐 / d 쟈고 / 아펜 기네? hl = 그럼,

    좋은 웹페이지 즐겨찾기