장고 ALLOWED_HOSTS
이 문서에서는 Django 웹 사이트를 가져오고 공개 릴리스를 준비하고 ALLOWED_HOSTS
를 설정하고 Django를 사용하여 웹 배포 중에 예상되는 주요 문제를 수정하는 방법을 보여줍니다.
주요 배포 문제 수정 및 Django에서 ALLOWED_HOSTS
설정
안전한 웹사이트, 사용자 친화적인 웹사이트에서 안정적인 웹사이트를 가지려면 몇 가지 주요 설정을 구성해야 합니다. 오류 없이 수행하는 방법을 살펴보겠습니다.
이 URL example.domains
에 example
이라는 웹 사이트가 있고 해당 서버에 ssh
라고 가정합니다. 이 사용자의 홈 디렉토리에 기본 Django 프로젝트 인프라가 있습니다.
/home/example/exampledomains
이제 우리는 프로젝트 디렉토리 내에서 많은 변경 작업을 수행할 것이며 거기에 settings.py
파일이 있습니다. 그러면 SECRET_KEY
를 숨기고 설정하려는 첫 번째 구성 설정이 나타납니다.
settings.py
SECRET_KEY
내부를 따라가면 긴 문자, 숫자 및 기호 문자열과 같으므로 이 파일로 무엇을 할까요? 댓글에서 볼 수 있듯이(프로덕션용으로 안전하지 않음).
이제 우리는 뭔가 다른 것을 하고 싶고, 파일에서 SECRET_KEY
를 읽고 싶고, 아래 두 줄의 코드로 그렇게 할 수 있습니다. secret_key.txt
파일에 SECRET_KEY
를 복사한 다음 비밀 키가 포함된 프로젝트 디렉토리의 루트에 secret_key.txt
라는 파일을 생성합니다.
따라서 우리 시스템의 해당 경로로 이동하여 파일을 열고 비밀 키를 읽고 SECRET_KEY
변수에 할당합니다.
계속해서 해당 파일을 프로젝트 디렉터리의 루트에 저장하겠습니다.
with open(os.path.join(BASE_DIR, "secret_key.txt")) as f:
SECRET_KEY = f.read().strip()
settings.py
파일에 추가 HTTPS 설정을 추가해야 하므로 settings.py
파일을 열고 맨 아래로 스크롤합니다. 이 세 가지 변수를 추가하고 True
와 동일하게 설정해야 합니다.
SESSION_COOKIES_SECURE
는 CSRF 쿠키가 HTTPS를 통해 보호되고 제공되는 CSRF_COOKIES_SECURE
와 유사하게 쿠키가 HTTP를 통해 제공되는지 확인합니다. SECURE_SSL_REDIRECT
라는 세 번째 변수는 모든 트래픽이 HTTP에서 HTTPS로 리디렉션되도록 합니다.
SESSION_COOKIES_SECURE = True
CSRF_COOKIES_SECURE = True
SECURE_SSL_REDIRECT = True
다음으로 유사하게 일부 HSTS 설정을 settings.py
파일에 추가해야 합니다. HSTS에 익숙하지 않은 경우 HTTP 엄격한 전송 보안을 나타냅니다.
HSTS는 기본적으로 브라우저가 안전하지 않은 연결(예: HTTP)을 통해 웹 사이트에 연결해서는 안 되며 연결할 수 없다는 요청 헤더에 몇 가지 정보를 추가합니다.
settings.py
파일 하단에 있는 설정을 살펴보고 몇 가지 변수를 생성해 보겠습니다.
SECURE_HSTS_SECONDS
는 매우 큰 숫자를 저장합니다(아래는 1년). 우리는 해당 정보를 클라이언트에 대한 초기 요청 및 후속 요청에 입력해야 하며 브라우저는 이를 존중합니다.
내년에는 안전하지 않은 연결을 통해 귀하의 웹사이트에 연결할 수 없으므로 다행입니다.
하위 도메인이 없더라도 해당 요청 헤더에 포함하는 것이 좋기 때문에 SECURE_HSTS_PRELOAD
및 SECURE_HSTS_INCLUDE_SUBDOMAINS
를 True
로 설정하려고 합니다.
SECURE_HSTS_SECONDS = 31536000
SECURE_HSTS_PRELOAD = True
SECURE_HSTS_INCLUDE_SUBDOMAINS = True
계속 진행하면서 허용된 호스트 설정에 도메인 이름이 지정되었는지 확인하려고 합니다. 다시, 우리는 settings.py
파일에서 작업하고 ALLOWED_HOSTS
변수를 찾을 것입니다(이것은 여기에 이미 지정되어 있을 수 있으며 이것은 단지 도메인 이름 목록일 뿐입니다).
이 서버에 제공하거나 연결할 수 있는 호스트 이름은 Django 서버입니다. example.domains
로 작업할 때 도메인 이름과 www.example.domains
버전을 지정합니다.
ALLOWED_HOSTS = ["example.domains", "www.example.domains"]
다음으로 프로덕션 환경에서 디버깅을 해제해야 합니다. 동일한 True
와 False
디버깅의 차이점을 보여드리겠습니다.
settings.py
파일을 먼저 설정하여 DEBUG
가 False
로 설정되도록 합니다. 기본적으로 Django 프로젝트를 시작하면 True
입니다.
웹 브라우저에서 페이지로 이동하여 False
로 디버그하면 해당 페이지가 존재하지 않으면 사용자에게 친숙한 오류가 표시됩니다. DEBUG
가 True
와 같을 때 보이는 것보다 낫다는 것을 알고 있습니다.
DEBUG = False
계속해서 정적 파일을 정적 루트 디렉터리에 복사해야 합니다. 정적 파일은 Django 서버에 있는 이미지, CSS, JavaScript 및 HTML이 아닌 모든 PHP 파일을 의미합니다.
기본적으로 settings.py
파일에는 해당 주소에 정적 URL이 있습니다. 정적 루트를 추가하려고 합니다. 우리의 경우는 '/static/'
프로젝트의 기본 디렉토리에 있습니다.
Django에는 다음 명령을 사용하여 해당 파일을 정적 디렉토리에 복사하기 위해 실행할 수 있는 매우 편리한 기능이 있습니다.
python manage.py collectstatic
마지막으로 Django 자동 배포 체크리스트를 실행해야 합니다. 이것은 Django가 우리에게 제공하는 편리한 기능입니다.
프로젝트 디렉토리의 루트 안에 아래 코드를 입력해야 합니다.
python manage.py check --deploy
따라서 따라해 왔다면 이 시점에서 아무런 문제가 없어야 합니다. 이를 실행하기 전에 배포 전에 수정해야 하는 개별 문제를 보여주는 항목이 표시될 수 있습니다.
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn