check version
$ cat /etc/debian_version
$ apt-get update
$ apt-get -y install nginx
$ apt-get -y install uwsgi-plugin-python3
$ nginx -v
$ python3 --version
$ uwsgi --version
uwsgi settings
make directories for uwsgi
$ mkdir -p /etc/uwsgi/apps-available
$ mkdir -p /etc/uwsgi/apps-enabled
$ vim /etc/uwsgi/emperor.ini
[uwsgi]
emperor = /etc/uwsgi/apps-enabled
uid = www-data
gid = www-data
logto = /var/log/uwsgi/uwsgi.log
touch-logreopen = /var/log/uwsgi/touch-logreopen
master = true
vacuum = true
ignore-sigpipe = true
ignore-write-errors = true
disable-write-exception = true
$ vim /etc/uwsgi/apps-available/vhosts.ini
[uwsgi]
plugins = python3
chdir = /home/pi/%n/wsgi
module = wsgi:application
socket = /var/run/uwsgi/%n.sock
chmod-socket = 644
processes = %k
die-on-term = true
py-autoreload = 1
$ cd /etc/uwsgi/apps-enabled/
$ ln -s ../apps-available/vhosts.ini example.ddns.net.ini
service
$ vim /etc/systemd/system/uwsgi.service
[Unit]
Description=uWSGI Emperor
After=syslog.target
[Service]
ExecStartPre=-/bin/mkdir -p /var/log/uwsgi
ExecStartPre=-/bin/chown -R www-data:www-data /var/log/uwsgi
ExecStartPre=-/bin/mkdir -p /var/run/uwsgi
ExecStartPre=-/bin/chown -R www-data:www-data /var/run/uwsgi
ExecStart=/usr/bin/uwsgi --ini /etc/uwsgi/emperor.ini
RuntimeDirectory=uwsgi
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all
[Install]
WantedBy=multi-user.target
$ systemctl start uwsgi
$ systemctl status uwsgi
$ systemctl enable uwsgi
$ vim /etc/logrotate.d/uwsgi
"/var/log/uwsgi/*.log" "/var/log/uwsgi/app/*.log" {
copytruncate
daily
rotate 5
compress
delaycompress
missingok
notifempty
postrotate
touch /var/log/uwsgi/touch-logreopen
endscript
}
nginx settings
$ vim /etc/nginx/sites-available/example.ddns.net.conf
server {
listen 443 ssl;
server_name example.ddns.net;
root /home/pi/example.ddns.net;
location / {
try_files /resource/$uri @uwsgi;
}
location @uwsgi {
include uwsgi_params;
uwsgi_pass unix:///var/run/uwsgi/example.ddns.net.sock;
uwsgi_connect_timeout 600s;
uwsgi_read_timeout 600s;
}
ssl_certificate /etc/nginx/ssl/self_signed.crt;
ssl_certificate_key /etc/nginx/ssl/self_signed.key;
}
$ cd /etc/nginx/sites-enabled
$ ln -s ../sites-available/example.ddns.net.conf