Django의 쇼핑백 사용(6부) - Heroku에 배포

13819 단어 webdevdjangopython

소개하다.


last part 이전에 사용자 인증부터 CRUD 작업과 날짜 필터까지 웹 응용 프로그램을 완성했습니다.만약 당신이 어떤 부분을 놓쳤다면 블로그 시리즈here를 볼 수 있습니다.이 부분 (마지막 부분) 에서, 우리는 Heroku에 우리의 웹 응용 프로그램을 배치할 것이다.

Heroku에 의하면-

Heroku는 회사가 응용 프로그램을 구축하고 납품하며 감시하고 확장할 수 있는 클라우드 플랫폼이다. 우리는 아이디어에서 URL까지의 가장 빠른 방식으로 모든 인프라 시설의 난제를 빙빙 돌았다.


Heroku에 프로그램을 배치하려면 프로젝트를 변경해야 합니다.우선 히로쿠에 무료 계좌를 만들어야 한다.heroku.com로 가서 계정을 만듭니다.계정을 만들면 계속할 수 있습니다.

Heroku 응용 프로그램 설정


Heroku 계정에 로그인하면 비슷한 화면의 환영을 받을 수 있습니다.pywisher 프로그램을 무시합니다.

새 단추를 누르고 새 앱 만들기를 누르십시오.응용 프로그램 이름을 입력하고 응용 프로그램 만들기 버튼을 클릭합니다.이름을 사용할 수 있는지 확인합니다.

설정 탭을 클릭하여 Buildpacks로 아래로 스크롤합니다.AddBuildPack 버튼을 클릭하고 Python을 추가합니다.

이 프로그램은 데이터베이스가 필요하기 때문에, 참고 자료에 Postgres 데이터베이스를 추가할 것입니다. (Heroku에서 무료로 제공합니다.)자원 탭을 클릭하여 검색창에서 댓글을 검색하세요.검색 결과에서 Heroku Postgres를 선택하고 Submit order form을 클릭하여 리소스에 추가합니다.

만약 우리가 첫 번째 부분에서 프로젝트를 세운 곳을 기억한다면, 우리는 환경 변수를 만들었다.히로쿠에 그것들을 추가해야 합니다. 왜냐하면 히로쿠가 없으면 프로그램이 작동하지 않기 때문입니다.설정 탭을 클릭하고 구성 변수로 스크롤한 다음 를 클릭하여 구성 변수를 표시합니다.다음과 같이 프로젝트에서 파일을 열고 구성 변수에 복사하여 붙여 넣습니다.

현재 .envDEBUG로 설정했기 때문에 배치 과정에서 발생한 모든 오류를 복구할 수 있습니다.나중에 True로 변경합니다.

Github 저장소 설정


Github을 사용하여 응용 프로그램을 배치할 것입니다. 이것은 우리의 임무를 더욱 쉽게 할 것입니다.만약 Github 계정이 없다면, 자신을 위해 here을 만들어 주십시오.Github 계정이 있으면 계정에 로그인하십시오.로그인하면 다음과 같은 화면이 표시됩니다.

New 버튼을 클릭하여 새 저장소를 생성합니다.저장소 이름을 입력하고 를 클릭하여 저장소를 만듭니다.라이브러리를 만들면 다음과 같은 페이지가 표시됩니다.

시스템의 항목으로 이동합니다.시스템에 Git가 설치되어 있는지 확인합니다.없으면 here에서 설치합니다.프로젝트에서 터미널을 열고 다음 명령을 작성합니다.
$ git init
$ git remote add origin <your-repository-url-here>
$ git add .
$ git commit -m "Initial commit"
$ git push origin master
False를 Github에서 제공하는 URL로 바꿉니다.다음 그림을 참조하십시오.

위 명령을 실행한 후 페이지를 다시 로드합니다.비슷한 출력을 볼 수 있습니다.

항목 변경


우선, 우리는 가상 환경에 의존 항목을 설치해야 한다.활성화되었는지 확인하세요.
$ pip install gunicorn dj-database-url whitenoise psycopg2

  • Gunicorn은 UNIX용 Python WSGI HTTP 서버

  • dj 데이터베이스 URL은 Heroku 구성 변수에서 데이터베이스 URL을 가져오는 데 사용됩니다.

  • whitenoise는 정적 파일을 제공하는 데 사용합니다

  • pyscopg2는 Postgres 데이터베이스에 사용
  • 상기 의존항을 설치한 후 <your-repository-url-here> 파일에 추가합니다.다음 명령을 사용하여 자동으로 생성할 수 있습니다.
    $ pip freeze > requirements.txt
    
    다음에 requirements.txt 파일을 만들고 Python 버전을 추가합니다. 다음과 같습니다.
    python-3.9.7
    
    또한 runtime.txt 파일을 만들고 다음을 추가합니다.
    # Django #
    *.log
    *.pot
    *.pyc
    __pycache__
    media
    db.sqlite3
    
    # Backup files # 
    *.bak 
    
    # If you are using PyCharm # 
    .idea/**/workspace.xml 
    .idea/**/tasks.xml 
    .idea/dictionaries 
    .idea/**/dataSources/ 
    .idea/**/dataSources.ids 
    .idea/**/dataSources.xml 
    .idea/**/dataSources.local.xml 
    .idea/**/sqlDataSources.xml 
    .idea/**/dynamic.xml 
    .idea/**/uiDesigner.xml 
    .idea/**/gradle.xml 
    .idea/**/libraries 
    *.iws /out/ 
    
    # Python # 
    *.py[cod] 
    *$py.class 
    
    # Distribution / packaging 
    .Python build/ 
    develop-eggs/ 
    dist/ 
    downloads/ 
    eggs/ 
    .eggs/ 
    lib/ 
    lib64/ 
    parts/ 
    sdist/ 
    var/ 
    wheels/ 
    *.egg-info/ 
    .installed.cfg 
    *.egg 
    *.manifest 
    *.spec 
    
    # Installer logs 
    pip-log.txt 
    pip-delete-this-directory.txt 
    
    # Unit test / coverage reports 
    htmlcov/ 
    .tox/ 
    .coverage 
    .coverage.* 
    .cache 
    .pytest_cache/ 
    nosetests.xml 
    coverage.xml 
    *.cover 
    .hypothesis/ 
    
    # Jupyter Notebook 
    .ipynb_checkpoints 
    
    # pyenv 
    .python-version 
    
    # celery 
    celerybeat-schedule.* 
    
    # SageMath parsed files 
    *.sage.py 
    
    # Environments 
    .env 
    .venv 
    env/ 
    venv/ 
    ENV/ 
    env.bak/ 
    venv.bak/ 
    
    # mkdocs documentation 
    /site 
    
    # mypy 
    .mypy_cache/ 
    
    # Sublime Text # 
    *.tmlanguage.cache 
    *.tmPreferences.cache 
    *.stTheme.cache 
    *.sublime-workspace 
    *.sublime-project 
    
    # sftp configuration file 
    sftp-config.json 
    
    # Package control specific files Package 
    Control.last-run 
    Control.ca-list 
    Control.ca-bundle 
    Control.system-ca-bundle 
    GitHub.sublime-settings 
    
    # Visual Studio Code # 
    .vscode/* 
    !.vscode/settings.json 
    !.vscode/tasks.json 
    !.vscode/launch.json 
    !.vscode/extensions.json 
    .history
    
    이것은 Git에게 이 파일들을 무시하라고 알려 줍니다.
    Heroku의 설정 탭으로 이동하여 Heroku 응용 프로그램 URL을 가져옵니다.

    URL에서 .gitignorehttps://를 삭제합니다.예를 들어 내 URL은 slash(/) 변경된 후에 내 URL은 다음과 같다: https://grocery-bag-ashutosh.herokuapp.com/.grocery-bag-ashutosh.herokuapp.com. 파일을 열고 다음과 같이 GroceryBag/settings.py 목록에 URL을 추가합니다.
    DEBUG = config('DEBUG', default=False, cast=bool)
    
    ALLOWED_HOSTS = ['127.0.0.1', 'localhost', 'grocery-bag-ashutosh.herokuapp.com']
    
    다음과 같이 Whitenoise 중간부품을 ALLOWED_HOSTS 목록에 추가합니다.
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        # Add Whitenoise middleware here
        'whitenoise.middleware.WhiteNoiseMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
    
    whitenoise 중간부품은 MIDDLEWARE 다음에 포함되어 있음을 주의하십시오
    다음에 django.middleware.security.SecurityMiddleware 사전 뒤의 데이터베이스 구성을 다음과 같이 업데이트합니다.
    import dj_database_url
    db_from_env = dj_database_url.config(conn_max_age=500)
    DATABASES['default'].update(db_from_env)
    
    또한 정적 루트를 다음과 같이 업데이트합니다.
    STATIC_URL = '/static/'
    STATIC_ROOT = BASE_DIR / 'staticfiles' # Add this line
    
    STATICFILES_DIRS = [
        BASE_DIR / "static",
    ]
    
    응용 프로그램의 루트 디렉토리에 Procfile을 생성하고 다음 행을 추가합니다.
    web: gunicorn GroceryBag.wsgi --log-file -
    
    이것은 프로세스 형식 DATABASES 과 실행에 필요한 명령을 설명합니다.이 이름web은 여기서 매우 중요하다.이 프로세스 형식은 Heroku의 HTTP routing 창고에 추가되며, 배치할 때 웹 데이터를 수신합니다.Procfile 파일의 확장자는 없습니다.
    이제 Github 저장소에 커밋하고 전달할 수 있도록 다음 명령을 사용하도록 충분한 변경 작업을 수행했습니다.
    $ git add .
    $ git commit -m "Ready for deployment"
    $ git push origin master
    

    Heroku에 배포


    현재 우리는 이미 Heroku에 우리의 응용 프로그램을 배치할 준비가 완전히 되었다.Heroku 응용 프로그램을 열고 Deploy 탭을 클릭합니다.페이지의 배포 방법 에서 Github 를 선택합니다.저장소를 검색하고 연결 을 클릭하여 선택합니다.

    연결이 완료되면 Deploy branch라는 버튼이 표시됩니다.버튼을 클릭하면 배포 프로세스가 시작됩니다.

    Heroku는 설치 요구 사항에 언급된 모든 의존 항목을 설치합니다.txt 파일이며, 실행할 때 언급한 Python 버전을 사용합니다.txt 파일.프로세스가 완료되면 다음 성공 메시지가 표시됩니다.

    우리의 응용 프로그램은 이미 성공적으로 배치되었다!!
    하지만 아직 한 걸음 더 가야 한다.만약 우리가 데이터베이스에 대해 어떤 변경을 할 때마다 데이터베이스를 이전해야 한다는 것을 기억한다면, 우리는 데이터베이스를 이전해야 합니다.마찬가지로 여기서도 데이터베이스를 옮겨야 한다."추가"를 누르고 실행 컨트롤러에서 bash를 실행합니다.

    일단 그것을 클릭하면 텍스트 상자를 발견할 수 있습니다.여기에 다음 명령을 작성합니다.

    이 명령을 실행하면 데이터베이스 이전이 일어나는 것을 볼 수 있습니다.이것만 있으면, 당신의 응용 프로그램은 이미 성공적으로 배치되었고, 당신은 이미 그것을 테스트할 준비가 되어 있습니다.

    어플리케이션 테스트


    적용 열기 버튼을 클릭하여 적용을 봅니다.

    결론


    이것은 이 시리즈에서 우리가 응용 프로그램을 성공적으로 배치한 마지막 블로그이다.이 시리즈의 모든 블로그를 찾을 수 있습니다: https://iread.ga/series/11/grocery-bag-application-using-django
    Github 저장소: https://github.com/ashutoshkrris/Grocery-Bag
    배포된 어플리케이션 링크: https://grocery-bag-ashutosh.herokuapp.com/
    만약 당신에게 어떤 문제가 있으면 언제든지 아래에서 평론을 발표하세요!

    좋은 웹페이지 즐겨찾기