렌더링을 위해 기존 DJANGO 프로젝트를 배포하는 방법
11571 단어 rendercloudpythonprogramming
소스 코드는 githubhere에서 사용할 수 있습니다.
그리고 라이브 사이트here
전제 조건
타기 전에 render에 계정을 만들고 가상 환경과 시에 대해 이해하고 시에 대해 자세히 알아보십시오here.
1단계 시작하기
렌더링할 애플리케이션 배포를 진행하기 전에 시(종속성 및 환경 관리를 위한 Python 패키지)를 설치해야 합니다.
시를 설치하려면 터미널에서 다음 코드를 실행하십시오.
리눅스/macOS/gitbash용
껍데기
curl -sSL https://install.python-poetry.org | python
Powershell의 Windows:
껍데기
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | python
설치를 확인하려면 터미널에서 다음 명령을 실행하십시오.
껍데기
poetry --version
업데이트:
껍데기
poetry self update
2단계 배포 설정
배포할 Django 앱의 폴더 구조는 다음과 같습니다.
스니펫 디렉토리는 프로젝트 디렉토리이고 스니펫 API는 애플리케이션 디렉토리입니다.
pyproject.toml 파일 만들기
가상 환경이 활성화되어 있고 프로젝트의 루트에 있는지 확인하십시오.
터미널에서 다음 명령을 실행합니다.
껍데기
poetry init
프롬프트를 입력합니다.
껍데기
Package name [snipets-api]: #leave blank and tap enter
Version [0.1.0]: #leave blank and tap enter
Description []: #leave blank and tap enter
Author [okputu julius <[email protected]>, n to skip]: #leave blank and tap enter
License []: #leave blank and tap enter
Compatible Python versions [^3.10]: #leave blank and tap enter
Would you like to define your main dependencies interactively? (yes/no) [yes] no #enter no
Would you like to define your development dependencies interactively? (yes/no) [yes] no #enter no
모든 프롬프트를 채운 후
pyproject.toml이라는 파일이 프로젝트의 루트에 생성됩니다.
pyproject.toml
#this file contains details and dependencies of the particular project
[tool.poetry]
name = "snipets-api"
version = "0.1.0"
description = ""
authors = ["okputu julius <[email protected]>"]
[tool.poetry.dependencies]
python = "^3.10"
[tool.poetry.dev-dependencies]
[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
pyproject.toml에 종속성 추가
종속성을 개별적으로 추가하려면 다음을 수행하십시오.
껍데기
poetry add <package name>
프로젝트에 이미 requirements.txt 파일이 있는 경우
터미널에서 다음 코드를 실행합니다.
껍데기
poetry add `cat requirements.txt`
참고: Windows의 경우 PowerShell 또는 gitbash를 사용하십시오.
설치된 종속 항목의 세부 정보가 포함된 poem.lock 파일이 생성됩니다.
시.잠금
[[package]]
name = "asgiref"
version = "3.5.2"
description = "ASGI specs, helper code, and adapters"
category = "main"
optional = false
python-versions = ">=3.7"
[package.extras]
tests = ["mypy (>=0.800)", "pytest", "pytest-asyncio"]
[[package]]
name = "certifi"
version = "2022.6.15"
description = "Python package for providing Mozilla's CA Bundle."
category = "main"
optional = false
python-versions = ">=3.6"
......
환경 변수 설정 및 빌드 스크립트 추가
settings.py로 이동하여 다음을 추가합니다.
파일 시작 부분에 os를 가져오는 것을 잊지 마십시오.
settings.py
import os
...
ALLOWED_HOSTS = ['*']
SECRET_KEY = os.environ.get('SECRET_KEY', default='your secret key')
DEBUG = os.environ.get('DEBUG',default=True,cast=bool)
프로젝트의 루트에 build.sh 파일을 생성합니다. 여기에는 앱을 빌드하는 명령이 포함됩니다.
build.sh
#!/usr/bin/env bash
# exit on error
set -o errexit
poetry install
python manage.py collectstatic --no-input
python manage.py migrate
git에 체크인하기 전에 스크립트가 실행 가능한지 확인하십시오.
껍데기
chmod a+x build.sh
gunicorn을 사용하여 프로젝트를 실행하고 프로젝트에 종속성을 추가할 것입니다.
껍데기
poetry add gunicorn
데이터베이스 및 정적 파일 구성
다음 패키지 추가
껍데기
poetry add dj-database-url psycopg2-binary #for database config
poetry add 'whitenoise #for static files config
settings.py 파일 상단에 import dj-database-url
아래 스니펫으로 데이터베이스 사전을 업데이트하고 SecurityMiddleware 바로 뒤에 WhiteNoise 미들웨어를 추가합니다.
settings.py
import dj_database_url
...
DATABASES = {
'default': dj_database_url.config( # Feel free to alter this value to suit your needs. default='', conn_max_age=600 )}
...
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware', ... #new
]
정적 파일이 구성된 섹션에서 다음과 같이 수정합니다.
settings.py
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/4.0.6/howto/static-files/
# This setting tells Django at which URL static files are going to be served to the user.
# Here, they will be accessible at your-domain.onrender.com/static/...
STATIC_URL = '/static/'
# Following settings only make sense in production and may break development environments.
if not DEBUG: # Tell Django to copy statics to the `static files` directory
# in your application directory on Render.
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
# Turn on the WhiteNoise storage backend that takes care of compressing static files
# and creating unique names for each version so they can safely be cached forever.
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
프로젝트를 온라인 버전 관리(GitHub/GitLab)로 푸시
3단계 렌더링을 위해 배포
렌더링 데이터베이스 및 웹 서비스 설정
렌더링 대시보드로 이동하여 새 Postgresql을 클릭합니다.
새 데이터베이스에 대한 세부 정보를 입력한 다음 내부 데이터베이스 URL을 복사합니다.
렌더링 대시보드로 이동하여 새 웹 서비스를 클릭하고 배포하려는 리포지토리를 연결합니다(액세스할 수 있는 렌더링 권한을 부여해야 함). 그런 다음 앱에 대한 구성 세부 정보를 입력하라는 메시지가 표시됩니다.
서비스에 고유한 이름을 입력하세요.
빌드 명령을 다음으로 설정
./build.sh
시작 명령
gunicorn <your-project-directory>.wsgi:application
고급에서 다음 환경 변수를 설정합니다.
DATABASE_URL : The internal database URL for the database you created above
SECRET_KEY : Click Generate to get a secure random value
PYTHON_VERSION : the python version of your project eg 3.10.6
WEB_CONCURRENCY : 4
그게 다입니다. 빌드가 완료되면 .onrender.com에서 앱을 사용할 수 있게 됩니다.
Reference
이 문제에 관하여(렌더링을 위해 기존 DJANGO 프로젝트를 배포하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/okputu_julius/how-to-deploy-existing-django-projects-to-render-32eo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)