apt install uwsgi uwsgi-plugin-python3
apt install curl -y curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py python2 get-pip.py pip2.7 install uwsgi
[uwsgi] uid = www-data gid = www-data pidfile = /run/uwsgi/uwsgi.pid emperor = /etc/uwsgi/apps-enabled stats = /run/uwsgi/stats.sock chmod-socket = 660 emperor-tyrant = true #только для множества пользователей (у меня true не работает) cap = setgid,setuid plugin = python39,logfile
Права на папку в run
d /run/uwsgi 0775 www-data www-data
[Unit] Description=uWSGI Emperor After=syslog.target [Service] ExecStart=/usr/bin/uwsgi --ini /etc/uwsgi/uwsgi.ini #или так ExecStart=/usr/local/bin/uwsgi --ini /etc/uwsgi/uwsgi.ini # не нужно, иначе папка /run/uwsgi будет создана с правами root #RuntimeDirectory=uwsgi Restart=always KillSignal=SIGQUIT Type=notify StandardError=syslog NotifyAccess=all [Install] WantedBy=multi-user.target
Для логов организуем папку c подходящими правами
mkdir /var/log/uwsgi chown www-data:root /var/log/uwsgi chmod 770 /var/log/uwsgi
Ротация логов с помощью logrotate. По умолчанию логи хранятся в /var/log/uwsgi/app. Мы делаем без /app
"/var/log/uwsgi/*log" { missingok notifempty sharedscripts delaycompress postrotate /bin/systemctl reload uwsgi.service > /dev/null 2>/dev/null || true endscript }
Папка для конфигов: /etc/uwsgi/apps-enabled