Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код: Skills Начать
Рубрики
Linux Администрация

Как установить Django на хостинг-сервер: полное пошаговое руководство

Django — это высокоуровневый веб-фреймворк Python, разработанный для ускорения разработки и создания чистого, прагматичного дизайна. Он остается одним из самых популярных выборов для создания масштабируемых, безопасных и поддерживаемых веб-приложений — от простых блогов до сложных корпоративных платформ. В этом подробном руководстве мы проведем вас через каждый шаг, необходимый для установки Django на хостинг-сервер, от подготовки вашей среды Linux до запуска вашего первого проекта и его подготовки к производству.

Почему выбрать Django для вашего веб-приложения?

Прежде чем приступить к процессу установки, стоит понять, почему Django продолжает доминировать в ландшафте веб-разработки на Python:

  • Всё включено: Django поставляется со встроенной аутентификацией, панелью администратора, ORM, обработкой форм и функциями безопасности из коробки.
  • Масштабируемость: Django работает на высоконагруженных платформах, таких как Instagram и Pinterest.
  • Дизайн с приоритетом безопасности: Django защищает от распространённых уязвимостей, включая SQL-инъекции, XSS, CSRF и clickjacking по умолчанию.
  • Быстрая разработка: Его философия convention-over-configuration позволяет разработчикам быстрее выпускать функции.
  • Огромная экосистема: Тысячи переиспользуемых пакетов и большое сообщество означают, что решения почти для любой проблемы уже существуют.

Чтобы максимально использовать Django, вам понадобится надёжная серверная среда. План VPS Hosting даёт вам root-доступ, выделенные ресурсы и гибкость, которые требуют приложения Django.

Предварительные требования

Перед началом процесса установки убедитесь, что у вас есть следующее:

  • Хостинг-сервер, работающий на дистрибутиве Linux (рекомендуются Ubuntu 20.04/22.04 или Debian)
  • SSH доступ к серверу с привилегиями sudo
  • Python 3.8 или выше (рекомендуется Python 3.10+)
  • pip (менеджер пакетов Python) установлен
  • Базовое знакомство с командной строкой Linux

> Совет профессионала: Если вы запускаете production Django приложение, избегайте сред shared hosting. План 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 (рекомендуется для production для обеспечения совместимости):

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.py
  • manage.py — утилита командной строки для взаимодействия с вашим проектом Django.
  • settings.py — центральный файл конфигурации вашего проекта.
  • urls.py — конфигурация маршрутизации URL.
  • wsgi.py / asgi.py — точки входа для веб-серверов, совместимых с WSGI и ASGI.

Шаг 6: Настройка параметров базы данных

Откройте файл settings.py для настройки подключения к базе данных:

nano myproject/settings.py

По умолчанию: SQLite (только для разработки)

По умолчанию Django настроен на использование SQLite, который подходит для разработки и тестирования, но не рекомендуется для production:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

Вариант для production: PostgreSQL

PostgreSQL — это наиболее рекомендуемая база данных для Django в production. Сначала установите необходимые пакеты:

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',
    }
}

Вариант для production: 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 не подходит для production. Он однопоточный, не оптимизирован по производительности и не имеет защиты безопасности. Всегда используйте production-grade веб-сервер для развертывания на живых серверах.

Шаг 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-сертификат шифрует данные при передаче между вашим сервером и пользователями, защищает конфиденциальную информацию и требуется для современных индикаторов доверия браузера. 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, Регистрация доменов через AlexHost позволяет легко направить ваш домен на ваш сервер быстро, с полным управлением DNS включено.

Выбор правильного хостинга для вашего приложения Django

Среда хостинга, которую вы выбираете, оказывает значительное влияние на производительность, надежность и масштабируемость вашего приложения Django. Вот краткое руководство:

Вариант использованияРекомендуемый хостинг
Разработка и тестированиеShared Web Hosting
Приложения среднего размера в productionVPS Hosting
Приложения с высокой нагрузкой или ресурсоемкиеDedicated Servers
Django приложения с машинным обучением / AIGPU Hosting

Для большинства проектов Django, переходящих в production, план VPS Hosting предлагает идеальный баланс производительности, контроля и экономической эффективности. Вы получаете root доступ, возможность установки любого стека программного обеспечения и выделенные ресурсы, которые не может предоставить shared hosting.

Troubleshooting Common Django Installation Issues

pip: command not found

Установите pip вручную: sudo apt install python3-pip -y

django-admin: command not found

Ваше виртуальное окружение может быть не активировано. Запустите source venv/bin/activate и попробуйте снова.

Port 8000 Not Accessible

Проверьте правила брандмауэра вашего сервера. На Ubuntu с UFW:

sudo ufw allow 8000
sudo ufw reload

Database Connection Refused

Убедитесь, что ваш сервис базы данных запущен:

sudo systemctl status postgresql
# or
sudo systemctl status mysql

ALLOWED_HOSTS Error

Убедитесь, что IP-адрес или доменное имя вашего сервера указаны в параметре ALLOWED_HOSTS в settings.py.

Заключение

Вы успешно установили Django на сервер хостинга, настроили виртуальное окружение, установили базу данных и узнали, как подготовить приложение к производству. Богатый набор функций Django, надежные параметры безопасности по умолчанию и огромная экосистема делают его отличным выбором для веб-проектов любого масштаба.

Для развертывания в производстве всегда используйте надлежащий стек веб-серверов (Nginx + Gunicorn или Apache + uWSGI), установите DEBUG = False, защитите приложение с помощью SSL Certificate, и выберите среду хостинга, которая соответствует требованиям ресурсов вашего приложения. Независимо от того, начинаете ли вы новый проект или масштабируете существующий, VPS Hosting и планы Dedicated Server AlexHost обеспечивают производительность, надежность и гибкость, которых заслуживает ваше приложение Django.