Привет, форки! 😁
Теперь, когда Heroku прекращает свой бесплатный уровень, разработчикам Django нужна альтернатива для развертывания их Django / DRF веб-приложения, чтобы сделать его живым!
В этом посте я собираюсь показать вам, как вы можете развернуть ваш проект Django или Django rest framework на Vercel за 7 простых шагов.
Необходимые условия:
- У вас уже есть работающий проект Django.
- Вы уже создали учетную запись vercel.
- У вас уже есть файл requirements.txt
django
djangorestframework
- В настоящее время Vercel не поддерживает dbsqlite3, если вы попытаетесь развернуть ваш проект с базой данных Django по умолчанию dbsqlite3, то это приведет к ошибке. Убедитесь, что вы закомментировали конфигурацию базы данных dbsqlite или переключились на другую базу данных (например, PostgreSQL).
Итак, давайте погрузимся!
Шаг 1
В корневом каталоге вашего проекта создайте новый файл и назовите его build_files.sh, а затем вставьте в него приведенный ниже код
# build_files.sh
pip install -r requirements.txt
python3.9 manage.py collectstatic --noinput
Этот файл содержит команды, которые мы хотим запускать во время сборки на vercel
«pip install -r requirements.txt» гарантирует, что все наши установленные пакеты, объявленные в файле requirements.txt, будут загружены и установлены на сервер vercel.
«python3.9 manage.py collectstatic —noinput» гарантирует, что наши статические файлы будут обслуживаться на нашем сервере (убедитесь, что добавили эту строку кода, даже если ваши статические файлы обслуживаются с внешнего сайта, потому что наша страница администратора содержит некоторые статические файлы).
Шаг 2
В корневом каталоге вашего проекта создайте новый JSON файл и назовите его vercel.json, затем вставьте в него код, приведенный ниже
{
"version": 2,
"builds": [
{
"src": "<projectname>/wsgi.py",
"use": "@vercel/python",
"config": { "maxLambdaSize": "15mb", "runtime": "python3.9" }
},
{
"src": "build_files.sh",
"use": "@vercel/static-build",
"config": {
"distDir": "staticfiles"
}
}
],
"routes": [
{
"src": "/static/(.*)",
"dest": "/static/$1"
},
{
"src": "/(.*)",
"dest": "<projectname>/wsgi.py"
}
]
}
Убедитесь, что вы заменили *<projectname>*
на реальное имя вашего проекта.
В разделе "builds", "src": "projectname/wsgi."
указывает на файл, содержащий декларацию приложения WSGI, который был создан Django для вас в каталоге ваших проектов.
"config": { "maxLambdaSize": "15mb", "runtime": "python3.9". }
увеличивает предельный размер нашего бандла (по умолчанию 5MB), а runtime указывает версию python, которую мы хотим использовать, в данном случае мы используем python 3.9.
"routes": [ ... ] переписывает все маршруты ("src": "/(.*)")
к нашему WSGI-приложению ("dest": "projectname/wsgi.py")
для обработки.
Шаг 3
Перейдите в файл setting.py вашего проекта и вставьте код ниже
STATICFILES_DIRS = [BASE_DIR/'static',]
STATIC_ROOT = BASE_DIR/'staticfiles'
Шаг 4
Если вы используете dbsqlite3, то закомментируйте его следующим образом. Поскольку это будет производственная среда, я настоятельно рекомендую вам перейти на другую базу данных, например, PostgreSQL.
DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': BASE_DIR / 'db.sqlite3',
# }
}
Если вы закомментировали свою базу данных, как показано выше (т.е. вашему приложению не нужна база данных для хранения чего-либо), то пропустите этот шаг и перейдите к шагу 5.
Шаг 4.5
Но если вы последовали моему совету и перешли на другую базу данных (т.е. PostgreSQL), то выполните в терминале следующие команды
python manage.py makemigrations
python manage.py migrate
Создает новую миграцию и переносит ваш проект Django в вашу базу данных. Это необходимо для того, чтобы статические файлы обслуживались на сервере vercel.
Шаг 5
Следующий шаг — перейти в файл settings.py и обновить ALLOWED_HOST, чтобы разрешить vercel.app быть допустимым именем хоста для вашего приложения Django, как показано ниже.
ALLOWED_HOSTS = ['.vercel.app', '.now.sh']
Шаг 6
Перейдите в ваш файл wsgi.py, созданный для вас Django в директории проекта, и вставьте строку кода ниже
app = application
Это укажет переменную приложения, которую будет искать vercel, на ваш проект.
Шаг 7
Наконец, загрузите ваш код в репозиторий GitHub и подключите вашу учетную запись GitHub с указанным репозиторием к вашей приборной панели vercel.
Импортируйте проект.
При желании вы можете изменить название проекта по умолчанию на другое, но все остальные настройки оставьте по умолчанию.
Затем нажмите на кнопку развернуть, и через пару секунд ваш проект будет успешно развернут на vercel.
Наконец, перейдите в QuesMaker, чтобы посмотреть пример проекта на моей странице GitHub.
Заключение
Следуя приведенным выше шагам, вы получите ваш проект Django или Django rest framework, размещенный на vercel. Как всегда, спасибо за прочтение, если у вас есть вопросы, мысли или вы столкнулись с ошибками при выполнении описанных выше шагов, оставьте комментарий ниже, и мы постараемся помочь.