Настройка сервера для веб-сайта на Django или Flask в директории /var/www/

(5.0 | 4 голоса)

Веб-приложения на Django и Flask требуют правильной настройки сервера для обеспечения производства. В этом руководстве мы обсудим, как настроить сервер для работы с Django или Flask в директории /var/www/, используя Nginx и Gunicorn.

Перед установкой убедитесь, что ваша система обновлена:

sudo apt update && sudo apt upgrade

Установите Python и необходимые библиотеки:

sudo apt install python3 python3-pip python3-venv

Создайте директорию для вашего веб-приложения в /var/www/:

sudo mkdir /var/www/myproject

Клонируйте ваше приложение или создайте его с помощью:

cd /var/www/myproject
git clone https://github.com/yourusername/yourproject.git .

Создайте виртуальное окружение и активируйте его:

python3 -m venv venv
source venv/bin/activate

Установите зависимости вашего проекта:

pip install -r requirements.txt

Установите Gunicorn:

pip install gunicorn

Запустите ваше приложение, чтобы проверить, работает ли Gunicorn правильно:

gunicorn --bind 0.0.0.0:8000 wsgi:application
Замените wsgi:application на имя вашего WSGI приложения.

Создайте конфигурационный файл для вашего приложения в /etc/nginx/sites-available/myproject:

sudo nano /etc/nginx/sites-available/myproject

Добавьте следующую конфигурацию:

server {
    listen 80;
    server_name your_domain.com www.your_domain.com;

    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 /var/www/myproject/static;
    }

    location/media {
        alias /var/www/myproject/media;
    }
}

Сделайте символическую ссылку в sites-enabled:

sudo ln -s /etc/nginx/sites-available/myproject /etc/nginx/sites-enabled/

Проверьте, чтобы убедиться, что в конфигурации Nginx нет ошибок:

sudo nginx -t

Перезапустите Nginx, чтобы применить изменения:

sudo systemctl restart nginx

Создайте файл службы systemd для Gunicorn:

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

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

[Install]
WantedBy=multi-user.target

Запустите службу Gunicorn и настройте ее на автоматический запуск:

sudo systemctl start gunicorn
sudo systemctl enable gunicorn

Теперь ваш сервер настроен для работы с веб-приложением на Django или Flask. Убедитесь, что все пути и конфигурации соответствуют вашему проекту. Вы можете добавить SSL для повышения безопасности, используя Let's Encrypt.

Настройка логов Gunicorn

Для логирования успешных запросов и ошибок Gunicorn добавьте следующие команды в вашу конфигурацию службы (/etc/systemd/system/gunicorn.service):

[Service]
...
ExecStart=/var/www/myproject/venv/bin/gunicorn --access-logfile /var/log/gunicorn/myproject_access.log --error-logfile /var/log/gunicorn/myproject_error.log --workers 3 --bind unix:/var/www/myproject/myproject.sock wsgi:application

Создайте директорию для логов и дайте необходимые права:

sudo mkdir /var/log/gunicorn
sudo chown your_user:www-data /var/log/gunicorn

После внесения изменений в конфигурацию Gunicorn перезапустите службу:

Логи Nginx

Для просмотра логов доступа и ошибок Nginx используйте следующие команды:

tail -f /var/log/nginx/myproject_access.log
tail -f /var/log/nginx/myproject_error.log

Логи Gunicorn

Чтобы просмотреть логи Gunicorn, выполните:

tail -f /var/log/gunicorn/myproject_access.log
tail -f /var/log/gunicorn/myproject_error.log

Комментарии

Пока нет комментариев. Будьте первым!