Skip to content

Instantly share code, notes, and snippets.

@koji
Last active May 1, 2019 00:31
Show Gist options
  • Save koji/afbcc615cb95aa011f3fc239b0d8a404 to your computer and use it in GitHub Desktop.
Save koji/afbcc615cb95aa011f3fc239b0d8a404 to your computer and use it in GitHub Desktop.
raspberry pi and nginx
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment