복붙노트

[PYTHON] AWS 탄두에 구조화 된 Flask 앱을 ​​배치하는 방법

PYTHON

AWS 탄두에 구조화 된 Flask 앱을 ​​배치하는 방법

여기에 설명 된 단계를 사용하여 테스트 응용 프로그램을 성공적으로 배포 한 후 : http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_Python_flask.html

나는 다음과 같은 구조를 가진 실제 플라스크 애플리케이션을 배치하려고 시도했다.

myApp/
   runServer.py
   requirements.txt
   myApp/
      __init__.py
      helpers.py
      clean.sh
      static/
         myApp.css
      handlers/
         __init__.py
         views.py
      templates/
         layout.html
         viewOne.html
         viewTwo.html

views.py에는 내 URL 맵핑이 들어 있습니다.

myapp 모듈과 aws.push 내에서뿐 아니라 루트 디렉토리에서 eb 인스턴스를 초기화하려고했지만 AWS 대시 보드에서 다음 오류가 발생합니다. 오류 WSGIPath는 존재하지 않는 파일을 참조합니다. 응용 프로그램이 작동하지 않습니다 (모든 경로에 대해 404).

위의 Flask 응용 프로그램을 탄력있는 beanstalk에 어떻게 배포 할 수 있습니까?

해결법

  1. ==============================

    1..ebextensions / .config에 다음을 추가하십시오.

    .ebextensions / .config에 다음을 추가하십시오.

    option_settings:
      "aws:elasticbeanstalk:container:python":
        WSGIPath: myApp/handlers/views.py
    

    최신 정보:

    .ebextensions 디렉토리가 없다면 프로젝트를 위해 디렉토리를 생성하십시오. 컨테이너 구성과 관련하여 수행 할 수있는 작업에 대한 자세한 내용은 AWS Elastic Beanstalk Environments 사용자 정의 및 구성 안내서를 참조하십시오.

  2. ==============================

    2.Flask 응용 프로그램을 유사한 디렉토리 구조로 EB에 배치하는 비슷한 문제가 발생하여 다음 두 가지를 수행해야했습니다.

    Flask 응용 프로그램을 유사한 디렉토리 구조로 EB에 배치하는 비슷한 문제가 발생하여 다음 두 가지를 수행해야했습니다.

    이렇게하면 Elastic Beanstalk에서 응용 프로그램을 올바르게 호출 할 수 있습니다.

    이 내용은 공식 문서에서 간략하게 설명되며이 블로그 게시물에 자세히 설명되어 있습니다.

    편집 - 아래 프로젝트 구조 참조

  3. ==============================

    3.awsebcli 3.0부터는 eb config를 통해 WSGI 경로를 나타내도록 구성 설정을 실제로 편집 할 수 있습니다. 그러면 config 명령은 현재 구성 설정을 기반으로 편집 가능한 구성을 가져 와서 기본 명령 줄 텍스트 편집기 (예 : nano)에서 가져옵니다. 그런 다음 WSGI를 검색하고 경로를 그런 식으로 업데이트합니다. 파일을 저장하고 종료하면 WSGI 경로가 자동으로 업데이트됩니다.

    awsebcli 3.0부터는 eb config를 통해 WSGI 경로를 나타내도록 구성 설정을 실제로 편집 할 수 있습니다. 그러면 config 명령은 현재 구성 설정을 기반으로 편집 가능한 구성을 가져 와서 기본 명령 줄 텍스트 편집기 (예 : nano)에서 가져옵니다. 그런 다음 WSGI를 검색하고 경로를 그런 식으로 업데이트합니다. 파일을 저장하고 종료하면 WSGI 경로가 자동으로 업데이트됩니다.

  4. ==============================

    4.Beanstalk은 기본적으로 application.py를 찾기 때문에이 오류가 나타납니다. Beanstalk 웹 UI, Configuration> Software Configuration에서 확인하십시오. WSGIPath는 application.py에 매핑됩니다.

    Beanstalk은 기본적으로 application.py를 찾기 때문에이 오류가 나타납니다. Beanstalk 웹 UI, Configuration> Software Configuration에서 확인하십시오. WSGIPath는 application.py에 매핑됩니다.

    이전 응답에 표시된대로 WSGIPath를 업데이트하거나 application.py 파일로 이름을 바꿉니다.

  5. ==============================

    5.WSGI 구성은 나에게 고통 스러웠다. eb config 명령을 사용하여 WSCI 설정을 변경했지만 작동하지 않았습니다. 아래에서 5 단계로 쉽게 해결할 수 있습니다.

    WSGI 구성은 나에게 고통 스러웠다. eb config 명령을 사용하여 WSCI 설정을 변경했지만 작동하지 않았습니다. 아래에서 5 단계로 쉽게 해결할 수 있습니다.

    1 - app.py 함수를 디렉토리의 루트로 옮겼습니다 (여기서 eb init 명령을 실행했습니다).

    2- 또한 app.py라는 app.py로 이름이 바뀌었고 초기화 된 응용 프로그램에서 application = Flask (__ name__)이 아닌 app = Flask (__ name__)

    3-eb deploy는 (동일한 프로젝트에서)이 작업을하지 못했습니다. eb config를 사용하여 config를 수정하려고했으나 너무 털이있어서 그것을 정렬 할 수 없었습니다. 프로젝트에서 모든 .extension, .gitignore 등을 삭제하십시오.

    eb init을 사용하여 EB에서 프로젝트를 다시 초기화하고 프롬프트를 따르십시오. 배포가 완료되면 eb open이 webapp를 시작합니다 (잘하면!)

  6. ==============================

    6.이 문제가 발생했을 때 GUI를 사용하여 프로젝트 파일의 zip을 업로드했기 때문입니다. 처음에는 프로젝트 디렉토리의 압축 파일을 업로드하고이 오류가 발생했습니다.

    이 문제가 발생했을 때 GUI를 사용하여 프로젝트 파일의 zip을 업로드했기 때문입니다. 처음에는 프로젝트 디렉토리의 압축 파일을 업로드하고이 오류가 발생했습니다.

    그런 다음 모든 파일을 선택하여 압축 파일로 보내면 GUI 업로드 유틸리티가 아무 문제없이 내 application.py 파일을 찾을 수있었습니다.

  7. from https://stackoverflow.com/questions/20558747/how-to-deploy-structured-flask-app-on-aws-elastic-beanstalk by cc-by-sa and MIT license