Публикация Django-приложения на сервере
Публикация Django-приложения на сервере включает в себя несколько шагов, начиная с подготовки самого приложения и заканчивая его настройкой на сервере для production. Вот пошаговое руководство по развертыванию Django-приложения.
1. Подготовка приложения
Убедитесь, что у вас настроено Django-приложение и установлены все необходимые зависимости. Если проект еще не создан, выполните следующие шаги:
1. Установите Django:
pip install django
2. Создайте проект:
django-admin startproject myproject
3. Перейдите в директорию проекта:
cd myproject
4. Создайте файл `requirements.txt`:
pip freeze > requirements.txt
2. Настройка приложения для production
1. Настройки проекта:
В файле `settings.py` измените следующие параметры:
- DEBUG: Убедитесь, что в production режиме `DEBUG = False`.
- ALLOWED_HOSTS: Укажите список доменных имен или IP-адресов, на которых будет доступно ваше приложение.
- STATIC_ROOT: Укажите путь для сбора статических файлов:
STATIC_ROOT = os.path.join(BASE_DIR, ‘static/’)
2. Сбор статических файлов:
Выполните команду для сбора всех статических файлов в одно место:
python manage.py collectstatic
3. Настройка базы данных:
Убедитесь, что ваша база данных настроена для production. Если используете PostgreSQL:
- Установите драйвер:
pip install psycopg2-binary - Обновите `DATABASES` в `settings.py`:
DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.postgresql’,
‘NAME’: ‘your_db_name’,
‘USER’: ‘your_db_user’,
‘PASSWORD’: ‘your_db_password’,
‘HOST’: ‘localhost’,
‘PORT’: ‘5432’,
}
}
3. Развертывание на сервере
1. Установка Gunicorn
Gunicorn — это WSGI-сервер, который будет обслуживать ваше Django-приложение.
pip install gunicorn
2. Запуск приложения с Gunicorn
Перейдите в директорию проекта и выполните:
gunicorn —workers 3 myproject.wsgi:application
3. Настройка NGINX
NGINX будет выступать в качестве обратного прокси-сервера, перенаправляя запросы на Gunicorn.
1. Установите NGINX, если он еще не установлен:
sudo apt update
sudo apt install nginx
2. Настройте конфигурационный файл для вашего сайта. Создайте файл в `/etc/nginx/sites-available/myproject`:
server {
listen 80;
server_name your_domain_or_IP;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /static/ {
alias /path/to/your/project/static/;
}
}
3. Активируйте конфигурацию и перезапустите NGINX:
sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled
sudo nginx -t
sudo systemctl restart nginx
4. Настройка Systemd для автоматического запуска Gunicorn
Создайте `systemd` сервисный файл, чтобы Gunicorn автоматически запускался при старте системы:
1. Создайте файл `/etc/systemd/system/gunicorn.service`:
[Unit]
Description=gunicorn daemon for Django project
After=network.target
[Service]
User=youruser
Group=www-data
WorkingDirectory=/path/to/your/project
ExecStart=/path/to/your/venv/bin/gunicorn —workers 3 —bind unix:/path/to/your/project/myproject.sock myproject.wsgi:application
[Install]
WantedBy=multi-user.target
2. Запустите и активируйте сервис:
sudo systemctl start gunicorn
sudo systemctl enable gunicorn
5. Тестирование и завершение
После настройки убедитесь, что все работает корректно. Вы можете проверить логи NGINX и Gunicorn для отладки возможных проблем.
Тест Python. Публикация на сервере.
Таким образом, ваше Django-приложение будет успешно развернуто и доступно для пользователей.