Установка зависимостей для Python/Django Чтобы собрать mysqlclient (или использовать другие драйверы), нужны заголовочные файлы:

sudo apt install -y python3-dev libmariadb-dev pkg-config default-libmysqlclient-dev python3-pip python3-venv -y

  1. Клонирование проекта
    cd /var/www
    sudo git clone https://github.com/yourusername/yourproject.git
    sudo chown -R $USER:$USER yourproject
    cd yourproject
  2. Виртуальное окружение и зависимости
    python3 -m venv venv
    source venv/bin/activate
    pip install -r requirements.txt
    pip install gunicorn mysqlclient
    
    python manage.py migrate
    python manage.py collectstatic
    python manage.py createsuperuser  # если нужно
  3. Systemd-сервис для Gunicorn
    sudo nano /etc/systemd/system/gunicorn.service
    [Unit]
    Description=gunicorn daemon for Django
    After=network.target
    
    [Service]
    User=www-data
    Group=www-data
    WorkingDirectory=/var/www/yourproject
    ExecStart=/var/www/yourproject/venv/bin/gunicorn --access-logfile - --workers 3 --bind unix:/run/gunicorn.sock yourproject.wsgi:application
    
    [Install]
    WantedBy=multi-user.target
    sudo chown -R www-data:www-data /var/www/yourproject
    sudo systemctl daemon-reload
    sudo systemctl enable --now gunicorn
    Конфиг Nginx
    sudo nano /etc/nginx/sites-available/yourproject
    server {
        listen 80;
        server_name mysite.com www.mysite.com;
    
        location = /favicon.ico { access_log off; log_not_found off; }
    
        location /static/ {
            alias /var/www/yourproject/staticfiles/;
        }
    
        location /media/ {
            alias /var/www/yourproject/media/;
        }
    
        location / {
            include proxy_params;
            proxy_pass http://unix:/run/gunicorn.sock;
        }
    }
    Активируй сайт:
    sudo ln -s /etc/nginx/sites-available/yourproject /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl reload nginx
Views: 2