Heroku에 Django 애플리케이션 배포: 전체 가이드

소개


당신은 Django로 응용 프로그램을 개발했습니다.너무 좋아요.너는 그것을 이 별의 모든 사람에게 보여줄 수 있어서 매우 흥분한다.이를 위해, 다른 사람들이 그것을 방문할 수 있도록 그것을 인터넷 어딘가에 두어야 한다.
네, 연구를 좀 해서 Heroku를 선택했어요.좋은 선택!👍
이제 응용 프로그램을 배치하고 인터넷에서 연구를 진행하기 시작했습니다. 현재 당신은 수백만 가지 방법을 제공할 수 있는 다양한 자원을 가지고 있습니다.
그래서 곤혹스럽고 낙담하며 렉이 걸려서 호스트에 어떻게 두어야 할지 모르겠지만, 그 후에 놀랍게도 CSS 파일이 표시되지 않았다.🤦‍♂️
좋아, 이제 우리가 너의 문제를 해결할게.이 글은 당신이 필요로 하는 모든 내용을 거의 포괄하고 있습니다.

노선도

  • 설치에 필요한 도구
  • 필요한 파일 만들기
  • Heroku 응용 프로그램 만들기
  • 설정을 편집합니다.py
  • 정적 파일 변경
  • 설치에 필요한 도구


    Heroku에 배포하려면 Heroku CLI(명령줄 인터페이스)를 설치해야 합니다.
    너는 여기에 올 수 있다: https://devcenter.heroku.com/articles/heroku-cli
    CLI는 로그인, 마이그레이션 실행 등의 기능을 사용할 수 있도록 하기 때문에 필요합니다.

    Heroku를 만드는 데 필요한 파일


    CLI를 설치한 후 Heroku에 필요한 모든 파일을 만듭니다.
    파일은 다음과 같습니다.

  • 요구txt 파일
    요구txt가 가장 간단합니다.명령만 실행하면
    pip freeze > requirements.txt 
    
    이 명령은 하나를 생성합니다.현재 Django 응용 프로그램에 필요한 모든 패키지를 포함하는 txt 파일입니다.
    참고: 패키지를 추가한 다음 이 명령을 다시 실행하면 파일이 새 패키지로 업데이트됩니다.
    수요의 용도는 무엇입니까?txt?
    보시다시피 응용 프로그램에 필요한 모든 의존 항목을 포함하고 있습니다.그래서 당신의 앱을 Heroku에 놓으면 Heroku가 어떤 패키지를 설치해야 하는지 알려 줍니다.

  • 프로그램 파일
    그 다음에 확장자를 추가하지 말고 새 파일 이름 Procfile을 만듭니다.Heroku가 필요한 파일입니다.
    Heroku에 따르면
    Heroku 프로그램은 프로그램이 시작할 때 실행하는 명령을 지정하는 Procfile을 포함합니다.Procfile을 사용하여 다음과 같은 다양한 프로세스 유형을 설명할 수 있습니다.
  • 응용 프로그램의 웹 서버
  • 다양한 공정
  • 단일 프로세스(예: clock
  • 실행할 작업before a new release is deployed
  • 응용 프로그램에 대해 우리는 다음과 같은 명령을 작성할 수 있다
    web: gunicorn name_of_your_app.wsgi —log-file -
    
    응용 프로그램 이름이 곤혹스러우면 wsgi로 가세요.py 파일, 응용 프로그램 이름을 찾을 수 있습니다.
    이를 위해, gunicorn을 설치하고 요구 사항에 추가해야 합니다.txt 파일
    설치가 간단합니다.너는 틀림없이 알아맞혔을 거야!
    pip install gunicorn
    

  • 실행 중.txt 파일
    그리고runtime라는 새 텍스트 파일을 만듭니다.txt에서 사용하고 있는python 버전을 다음 형식으로 작성합니다python-3.8.1이것이 바로 우리가 필요로 하는 모든 서류다.지금 우리는 우리의 설정을 편집하기 시작해야 한다.py 파일.
  • Heroku 응용 프로그램 만들기


    이것은 간단한 절차로 명령행이나 Heroku 사이트 두 가지 방식으로 완성할 수 있다.
    이제 Heroku 사이트를 사용합시다.
  • Heroku 계정을 만들면 새 응용 프로그램을 만드는 옵션을 볼 수 있습니다
  • 고유한 이름을 입력해야 합니다.클릭하고 시험적으로 사용하면 프로그램 계기판으로 리디렉션됩니다.
  • 선택할 수 있는 옵션이 많지만 설정 탭으로 이동한 다음 구성 변수 보이기
  • KEY write SECRET_KEY 및 In VALUE에서 설정 파일의 키를 붙여넣으면 키만 사용하므로 변경할 수 있습니다.
  • 지금 이 정도야.
  • 우리는 곧 다시 그것을 방문할 것이다.
  • 설정을 편집합니다.회사 명


    이 파일에는 많은 변경이 있을 것이다.
    시작합시다.
    첫 번째 변경 사항
    DEBUG = False
    
    허용된 호스트에서 Heroku 응용 프로그램의 도메인을 입력합니다.
    예.
    ALLOWED_HOSTS = ["your_app_name.herokuapp.com", "127.0.0.1"]
    
    SECRET\u KEY 변수를 다음 내용으로 바꿉니다. (이전 heroku에서 키를 설정한 경우)
    SECRET_KEY = os.environ.get('SECRET_KEY')
    
    이렇게 하는 목적은 환경에서 SECRET\u 키를 가져오는 것입니다.우리의 예에서, 우리는 Heroku에서 secret_키를 설정할 수 있으며, 환경 변수를 통해 여기에 키를 제공할 것입니다.

    정적 파일 설정


    설정 파일에서 찾을 수 있습니다
    STATIC_URL = '/static/' 
    
    다음 코드로 교체
    STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
    STATIC_URL = '/static/'
    
    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, 'static'),
    )
    
    기본적으로 이것은 static이라는 폴더를 만들 것입니다. 이 폴더는 모든 정적 파일, 예를 들어 CSS 파일을 저장합니다.
    만약 응용 프로그램이 위에 저장된 이미지를 포함하거나 사용자가 저장할 능력이 있다면, 다음 줄을 추가합니다
    MEDIA_URL = "/media/"
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    
    이것은 상술한 내용과 기본적으로 같다
    너는 또 한 가지 일을 해야 한다.
    미디어 파일이 있으면 Django가 서비스를 제공할 수 있도록 하려면 URL에 줄을 추가해야 합니다.프로젝트의 py 파일(최상위 URL 파일)
    from django.conf import settings
    from django.conf.urls.static import static
    
    urlpatterns = [
        # ... the rest of your URLconf goes here ...
    ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    
    나는 당신이 이 문서를 읽는 것을 강력히 건의합니다.
    https://docs.djangoproject.com/en/3.1/howto/static-files/
    생산에서 정적 파일에 가장 서비스를 제공하지 않아도 되는 것은 White Noise

    With a couple of lines of config WhiteNoise allows your web app to serve its own static files, making it a self-contained unit that can be deployed anywhere without relying on nginx, Amazon S3 or any other external service. (Especially useful on Heroku, OpenShift and other PaaS providers.) -WhiteNoise Documentation


    흰색 잡음 설치
    pip install whitenoise
    
    설정의 중간부품에 추가합니다.py 파일
    MIDDLEWARE = [
      # 'django.middleware.security.SecurityMiddleware',
      'whitenoise.middleware.WhiteNoiseMiddleware',
      # ...
    ]
    
    그 다음에 필요한 명령을 실행하는 것을 잊지 마십시오.txt 파일.회상하다
    문서 보기
    http://whitenoise.evans.io/en/stable/
    마지막으로 우리는 배치의 두 가지 가장 중요한 절차를 완성했다

    Github에 코드 추가


    새 Github Repo를 만들고 모든 코드를 추가합니다.
    그런 다음 Heroku로 이동하면 Deploy 탭에서 Github 연결 옵션을 볼 수 있습니다.
    Repo를 연결하면 deploy 단추를 눌러서 응용 프로그램을 배치할 수 있습니다.

    Heroku Postgres 사용


    뭐 공부 해요?저는 이미 SQLite를 사용하고 있습니다!


    문제는

    The Heroku filesystem is ephemeral - that means that any changes to the filesystem whilst the dyno is running only last until that dyno is shut down or restarted. Each dyno boots with a clean copy of the filesystem from the most recent deploy. This is similar to how many container-based systems, such as Docker, operate.
    In addition, under normal operations, dynos will restart every day in a process known as "Cycling".


    https://help.heroku.com/K1PPS2WM/why-are-my-file-uploads-missing-deleted
    기본적으로 저장된 모든 데이터는 24시간마다 삭제됩니다.
    이 문제를 해결하기 위해 Heroku는 AWS나 Postgres를 사용하는 것을 권장합니다.Heroku는 Postgres의 사용을 매우 간단하게 합니다.
    이렇게 하라고.
    응용 프로그램 대시보드로 이동해서 참고 자료 부분에서Postgres를 검색하세요.그것을 선택하면 너는 이런 결과를 얻을 수 있다

    설정 탭으로 이동하여 구성 변수 표시
    DATABASE\u URL 키가 표시됩니다.이것은 Heroku가 데이터베이스를 추가했다는 것을 의미하며, 현재 우리는 응용 프로그램에 이 데이터베이스를 사용하도록 알려야 한다.
    이를 위해서는 dj\u 데이터베이스\uurl이라는 다른 가방이 필요합니다.pip를 통해 설치하고 설정 맨 위에서 가져옵니다.py 파일
    현재 다음 코드를 설정 파일의 데이터베이스 아래에 붙여넣습니다
    db_from_env = dj_database_url.config(conn_max_age=600)
    DATABASES['default'].update(db_from_env)
    
    현재 당신의 데이터베이스는 이미 설정되어 있습니다
    현재 데이터베이스가 비어 있습니다. 데이터베이스를 채워야 할 수도 있습니다.
  • 개폐 단자
  • 형→ heroku login
  • 로그인 후 다음 명령 실행
  • heroku run python manage.py makemigrations
    heroku run python manage.py migrate
    heroku run python manage.py createsuperuser
    
    이제 애플리케이션을 배포할 준비가 되었습니다.
    임의의 사용
    git push heroku master
    
    (변경 사항을 제출한 후) 또는 Github를 통해 밀어넣습니다.
    자, 드디어 완성했습니다.이것은 좀 길지만, 아주 쉽게 할 수 있다. 왜냐하면 너는 작은 변화만 할 수 있고, 그리 크지 않기 때문이다.
    만약 어떤 개선이 있으면 평론에서 나에게 알려주세요.

    내 다른 글 보기


    내 블로그 방문


    https://theshubhagrwl.hashnode.dev/

    내 사이트를 방문하여 블로그와 소셜네트워크서비스(SNS)에서 나를 주목하다


    http://theshubhagrwl.netlify.app/

    좋은 웹페이지 즐겨찾기