Решён
Как опубликовать сайт на Django на хостинге?

IoT_Ninja Python
4.1k
7

Написал сайт на Django (Python 3.11, Django 4.2) локально на компе, все работает на python manage.py runserver. Теперь нужно залить его на реальный хостинг чтобы был доступен из интернета.

Пробовал загрузить файлы по FTP на обычный PHP-хостинг, но там ничего не работает. Понял что для Django нужен специальный хостинг с поддержкой Python.

Вопросы:

  1. Какой хостинг выбрать для Django? (желательно недорогой)
  2. Как правильно развернуть проект? Какие команды выполнять?
  3. Нужен ли отдельный веб-сервер типа Nginx или Apache?
  4. Как настроить базу данных? У меня SQLite локально.

Бюджет около 500 руб/мес. Посещаемость будет маленькая, учебный проект.

Решение
109
Участник • 2 ответа

Для учебного проекта с таким бюджетом вариантов немного.

Хостинг:

  1. PythonAnywhere (бесплатный тариф) - самый простой для новичков. Есть встроенная поддержка Django, веб-интерфейс для настройки. Минус - домен будет вида username.pythonanywhere.com.

  2. Beget (от 200 руб/мес) - российский хостинг с SSH и Python. Нужно настраивать вручную.

  3. VPS (Timeweb, REG.RU от 200 руб/мес) - полный контроль, но сложнее в настройке.

Базовый алгоритм деплоя на VPS (Ubuntu):

# 1. Обновить систему
sudo apt update && sudo apt upgrade -y

# 2. Установить Python и виртуальное окружение
sudo apt install python3-pip python3-venv nginx -y

# 3. Создать папку проекта
mkdir /var/www/myproject
cd /var/www/myproject

# 4. Создать виртуальное окружение
python3 -m venv venv
source venv/bin/activate

# 5. Установить зависимости
pip install django gunicorn psycopg2-binary

# 6. Загрузить код проекта (через git или scp)
git clone https://github.com/username/myproject.git .

# 7. Применить миграции
python manage.py migrate
python manage.py collectstatic

# 8. Создать systemd сервис для Gunicorn
sudo nano /etc/systemd/system/gunicorn.service

Содержимое gunicorn.service:

[Unit]
Description=gunicorn daemon
After=network.target

[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/myproject
ExecStart=/var/www/myproject/venv/bin/gunicorn --workers 3 --bind unix:/var/www/myproject/gunicorn.sock myproject.wsgi:application

[Install]
WantedBy=multi-user.target

Запуск:

sudo systemctl start gunicorn
sudo systemctl enable gunicorn

Настройка Nginx:

server {
    listen 80;
    server_name your-domain.com;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /var/www/myproject;
    }

    location / {
        proxy_pass http://unix:/var/www/myproject/gunicorn.sock;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Важно:

  • SQLite не подходит для продакшена. Переключись на PostgreSQL или MySQL.
  • В settings.py установи DEBUG = False и настрой ALLOWED_HOSTS.
  • Для SSL сертификата используй Let's Encrypt (бесплатно).

Если хочешь попроще - используй PythonAnywhere. Там все настраивается через веб-интерфейс за 10 минут.

Аватар IoT_Ninja

Огромное спасибо за подробный ответ! Попробую сначала PythonAnywhere, потом если все получится перееду на VPS.

32
Участник • 2 ответа

Я в свое время бился с деплоем Django три дня. Перепробовал кучу хостингов.

Реально рабочий вариант для новичков - это Heroku или Railway. Там просто привязываеш репозиторий GitHub, и они сами собирают проект из requirements.txt и Procfile. Никаких SSH, Nginx и прочей боли.

Правда Heroku убрал бесплатный тариф, теперь от $5/мес. Railway дает 500 часов бесплатно в месяц, потом тоже платно.

Если хочешь вообще бесплатно - только PythonAnywhere или потратить время на настройку VPS.

53
Участник • 1 ответ

ВНИМАНИЕ! Ни в коем случае не используй SQLite на продакшн-сервере! Это файловая база данных, она не поддерживает конкурентные запросы и при любой нагрузке начнет выдавать ошибки "database is locked".

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

И второй критичный момент - никогда не оставляй DEBUG = True в settings.py на публичном сервере. Это огромная дыра в безопасности, будут видны все внутренности проекта включая пароли от БД.

0
Участник • 5 ответов

Зачем вообще возиться с хостингами? Подними Docker-контейнер с Django и Nginx, залей на любой VPS за 200 рублей и все. Один docker-compose up -d и проект работает. Это же 2026 год, кто сейчас руками конфиги правит?

16
Участник • 1 ответ

У нас на работе все Django проекты крутятся на Gunicorn + Nginx связке на Ubuntu серверах. Это стандарт индустрии.

Можешь конечно заюзать всякие PaaS решения типа PythonAnywhere, но там ты привязан к их инфраструктуре и ограничениям. Если проект вырастет, придется все равно мигрировать на VPS.

Лучше сразу потратить пару дней на изучение правильного деплоя. Один раз разберешься - потом на автомате будешь разворачивать за полчаса.

7
Участник • 1 ответ

я пробовал pythonanywhere но там какието ограничения на бесплатном тарифе, типо нельзя внешние апи вызывать или чтото такое, не помню уже точно, в итоге взял впс на тайм веб за 150р и все настроил сам по гайдам с ютуба

Написать ответ

Премодерация гостей

Вы отвечаете как гость. Ваш ответ будет скрыт до проверки модератором. Чтобы ответ появился сразу и вы получали репутацию — войдите в аккаунт.

Будьте вежливы и соблюдайте правила платформы.