Как установить Django на хостинг-сервер: полное пошаговое руководство
Django — это высокоуровневый веб-фреймворк Python, разработанный для поощрения быстрой разработки и чистого, прагматичного дизайна. Он остается одним из самых популярных выборов для создания масштабируемых, безопасных и поддерживаемых веб-приложений — от простых блогов до сложных корпоративных платформ. В этом подробном руководстве мы проведем вас через каждый шаг, необходимый для установки Django на хостинг-сервер, от подготовки вашей среды Linux до запуска вашего первого проекта и подготовки его к производству.
Почему выбрать Django для вашего веб-приложения?
Перед тем как приступить к процессу установки, стоит понять, почему Django продолжает доминировать в ландшафте веб-разработки на Python:
- Все включено: Django поставляется со встроенной аутентификацией, панелью администратора, ORM, обработкой форм и функциями безопасности из коробки.
- Масштабируемость: Django питает высоконагруженные платформы, такие как Instagram и Pinterest.
- Дизайн, ориентированный на безопасность: Django защищает от распространенных уязвимостей, включая SQL-инъекции, XSS, CSRF и clickjacking по умолчанию.
- Быстрая разработка: Его философия соглашения вместо конфигурации позволяет разработчикам быстрее выпускать функции.
- Огромная экосистема: Тысячи переиспользуемых пакетов и большое сообщество означают, что решения для почти любой проблемы уже существуют.
Чтобы максимально использовать Django, вам нужна надежная серверная среда. План VPS Hosting дает вам корневой доступ, выделенные ресурсы и гибкость, которые требуют приложения Django.
Предварительные требования
Перед началом процесса установки убедитесь, что у вас есть следующее:
- Хостинг-сервер, работающий на дистрибутиве Linux (рекомендуются Ubuntu 20.04/22.04 или Debian)
- SSH-доступ к серверу с привилегиями sudo
- Python 3.8 или выше (рекомендуется Python 3.10+)
pip(менеджер пакетов Python) установлен- Базовое знакомство с командной строкой Linux
> Совет профессионала: Если вы запускаете производственное приложение Django, избегайте сред общего хостинга. План VPS Hosting или Dedicated Server даст вам контроль и производительность, которые нужны вашему приложению.
Шаг 1: Подключитесь к вашему серверу через SSH
Откройте ваш терминал и установите SSH-соединение с вашим хостинг-сервером:
ssh username@server_ipЗамените username на ваше фактическое имя пользователя системы и server_ip на публичный IP-адрес вашего сервера. Если вы используете пользовательский SSH-порт или файл аутентификации на основе ключей, отрегулируйте команду соответственно:
ssh -i /path/to/your/key.pem username@server_ipПосле подключения у вас будет интерфейс командной строки вашего сервера, где вы можете начать процесс настройки.
Шаг 2: Обновите вашу систему и установите Python и pip
Обновление пакетов вашей системы — это критический первый шаг как для безопасности, так и для совместимости.
Обновите индекс пакетов
sudo apt update && sudo apt upgrade -yУстановите Python 3 и pip
Большинство современных дистрибутивов Ubuntu и Debian поставляются с предустановленным Python 3. Сначала проверьте вашу версию Python:
python3 --versionЕсли Python 3 не установлен или вам нужен pip, установите их с помощью:
sudo apt install python3 python3-pip -yПроверьте установки:
python3 --version
pip3 --versionВы должны увидеть номера версий, подтверждающие, что оба инструмента доступны.
Шаг 3: Установите виртуальную среду Python
Использование виртуальной среды — это не просто рекомендация, это считается лучшей практикой для каждого проекта Python. Виртуальные среды изолируют зависимости вашего проекта от системной установки Python и от других проектов на том же сервере, предотвращая конфликты версий и поддерживая вашу среду в чистоте.
Установите virtualenv
sudo pip3 install virtualenvАльтернативно, вы можете использовать встроенный модуль venv Python (доступен в Python 3.3+):
sudo apt install python3-venv -yСоздайте каталог вашего проекта и виртуальную среду
Перейдите в каталог, где вы хотите разместить ваш проект, или создайте новый:
mkdir myproject
cd myprojectТеперь создайте виртуальную среду внутри каталога вашего проекта:
virtualenv venvИли, используя встроенный модуль venv:
python3 -m venv venvАктивируйте виртуальную среду
source venv/bin/activateПосле активации ваша командная строка изменится, чтобы показать имя виртуальной среды, например:
(venv) username@server:~/myproject$Все команды pip install, выполняемые при активной виртуальной среде, будут устанавливать пакеты только в этой изолированной среде. Чтобы деактивировать ее в любое время, просто запустите:
deactivateШаг 4: Установите Django
С активной виртуальной средой установите Django с помощью pip:
pip install djangoЧтобы установить конкретную версию Django (рекомендуется для производства, чтобы обеспечить совместимость):
pip install django==4.2Проверьте установку:
django-admin --versionВы должны увидеть номер установленной версии Django, выведенный в терминал.
Шаг 5: Создайте новый проект Django
Используйте встроенный инструмент командной строки django-admin Django для создания нового проекта:
django-admin startproject myproject .> Примечание: Конечная точка (.) говорит Django создать файлы проекта в текущем каталоге, а не создавать вложенный подкаталог. Это более чистая структура для большинства развертываний.
Ваш каталог проекта теперь будет содержать следующую структуру:
myproject/
├── manage.py
└── myproject/
├── __init__.py
├── asgi.py
├── settings.py
├── urls.py
└── wsgi.pymanage.py— утилита командной строки для взаимодействия с вашим проектом Django.settings.py— центральный файл конфигурации вашего проекта.urls.py— конфигурация маршрутизации URL.wsgi.py/asgi.py— точки входа для веб-серверов, совместимых с WSGI и ASGI.
Шаг 6: Настройте параметры базы данных
Откройте файл settings.py для настройки подключения к базе данных:
nano myproject/settings.pyПо умолчанию: SQLite (только для разработки)
По умолчанию Django настроен на использование SQLite, который подходит для разработки и тестирования, но не рекомендуется для производства:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}Вариант для производства: PostgreSQL
PostgreSQL — это наиболее рекомендуемая база данных для Django в производстве. Сначала установите необходимые пакеты:
sudo apt install postgresql postgresql-contrib libpq-dev -y
pip install psycopg2-binaryЗатем обновите параметр DATABASES в settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '5432',
}
}Вариант для производства: MySQL / MariaDB
Если вы предпочитаете MySQL или MariaDB, установите необходимый адаптер:
sudo apt install default-libmysqlclient-dev -y
pip install mysqlclientЗатем настройте параметр DATABASES:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'localhost',
'PORT': '3306',
}
}Настройте ALLOWED_HOSTS
Находясь в settings.py, также обновите параметр ALLOWED_HOSTS для включения IP-адреса или имени домена вашего сервера. Это требуется для Django для обслуживания запросов в режиме без отладки:
ALLOWED_HOSTS = ['your_server_ip', 'yourdomain.com', 'www.yourdomain.com']Шаг 7: Примените миграции базы данных
Django использует систему миграций для управления изменениями схемы базы данных. Запустите начальные миграции для создания всех необходимых таблиц базы данных:
python manage.py migrateВы увидите вывод, в котором перечислены все применяемые миграции. Успешная миграция выглядит так:
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
...Создайте суперпользователя (опционально, но рекомендуется)
Создайте учетную запись администратора для доступа к встроенному интерфейсу администратора Django:
python manage.py createsuperuserВам будет предложено ввести имя пользователя, адрес электронной почты и пароль.
Шаг 8: Запустите сервер разработки Django
Теперь вы можете запустить встроенный сервер разработки Django для проверки вашей установки:
python manage.py runserver 0.0.0.0:8000Эта команда привязывает сервер разработки ко всем доступным сетевым интерфейсам на порту 8000. Откройте ваш веб-браузер и перейдите на:
http://your_server_ip:8000Вы должны увидеть страницу приветствия Django — ракету с сообщением «The install worked successfully! Congratulations!»
Для доступа к панели администратора перейдите на:
http://your_server_ip:8000/admin> Важно: Встроенный сервер разработки Django не подходит для производства. Он однопоточный, не оптимизирован для производительности и не имеет усиления безопасности. Всегда используйте веб-сервер производственного уровня для живых развертываний.
Шаг 9: Подготовьте Django к производству (рекомендуется)
Для производственных развертываний вам нужно настроить надлежащий стек веб-сервера. Наиболее распространенная и рекомендуемая установка — это Nginx + Gunicorn.
Установите Gunicorn
С активной виртуальной средой:
pip install gunicornПротестируйте, что Gunicorn может обслуживать ваше приложение:
gunicorn --bind 0.0.0.0:8000 myproject.wsgiУстановите и настройте Nginx
sudo apt install nginx -yСоздайте файл конфигурации блока сервера Nginx:
sudo nano /etc/nginx/sites-available/myprojectДобавьте следующую конфигурацию:
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/username/myproject;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
}Включите конфигурацию и перезагрузите Nginx:
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginxСоберите статические файлы
Обновите settings.py с каталогом статических файлов:
STATIC_ROOT = BASE_DIR / 'staticfiles'Затем соберите все статические файлы:
python manage.py collectstaticЗащитите ваше приложение с помощью SSL
Для любого производственного приложения Django HTTPS является обязательным. SSL Certificate шифрует данные при передаче между вашим сервером и вашими пользователями, защищает конфиденциальную информацию и требуется для современных индикаторов доверия браузера. AlexHost предлагает SSL-сертификаты, которые легко интегрируются с вашей хостинг-средой.
Дополнительные соображения для производства
Переменные окружения для конфиденциальных параметров
Никогда не кодируйте жестко конфиденциальные значения, такие как SECRET_KEY, пароли базы данных или ключи API в settings.py. Вместо этого используйте переменные окружения:
pip install python-decoupleВ settings.py:
from decouple import config
SECRET_KEY = config('SECRET_KEY')
DEBUG = config('DEBUG', default=False, cast=bool)Установите DEBUG в False в производстве
DEBUG = FalseЗапуск с DEBUG = True в производстве раскрывает подробные страницы ошибок и конфиденциальную информацию о конфигурации потенциальным злоумышленникам.
Настройте имя домена
Если вы еще не зарегистрировали домен для вашего проекта Django, Domain Registration через AlexHost облегчает быстрое получение вашего домена, указанного на ваш сервер, с полным управлением DNS включено.
Выбор правильного хостинга для вашего приложения Django
Хостинг-среда, которую вы выбираете, оказывает значительное влияние на производительность, надежность и масштабируемость вашего приложения Django. Вот краткое руководство:
| Вариант использования |
|---|
on All Hosting Services
