Mettere nowiki pare facile, l’ho scritto io e manco sapevo come si faceva, quindi mo socializzo.
Installa
apt-get install nginx-full python-virtualenv git uwsgi uwsgi-plugin-python uwsgi-plugin-syslog
cd /var
git clone git://github.com/boyska/nowiki
cd nowiki
sudo -u nowiki virtualenv --no-site-packages venv
source venv/bin/activate
pip install -r requirements.txt
deactivate
cd nowiki
cp nowiki.example.cfg nowiki.cfg
Configurazione
Configurare nowiki
Il file nowiki.cfg permette di cambiare alcuni settaggi base.
E’ poi importante mettere i permessi con accuratezza, in modo che uwsgi possa soltanto leggere i file di nowiki, con l’eccezione di /data/ per cui ci deve essere possibilita’ di scrittura.
chown nowiki:nogroup /var/nowiki -R
chmod g-w /var/nowiki -R
chmod o-rwx /var/nowiki -R
chown nobody /var/nowiki/nowiki/data -R
chmod ug+rwX /var/nowiki/nowiki/data -R
Configurare uwsgi
In /etc/uwsgi/apps-enabled/uwsgi-nowiki:
[uwsgi]
socket = /run/uwsgi/nowiki.sock
chdir = /var/nowiki/nowiki
virtualenv = /var/nowiki/venv
module = nowiki
callable = app
uid = nobody
gid = nogroup
chmod = 600
chown-socket = www-data
plugins = python,syslog
log-syslog = uwsgi-nowiki
In /etc/uwsgi/emperor.ini basta mettere
[uwsgi]
emperor = /etc/uwsgi/apps-enabled
uid = nobody
gid = nogroup
chown-socket = www-data
master = true
Bisogna poi configurare systemd per gestire l’avvio di uwsgi, mettendo questo in /etc/systemd/system/emperor.uwsgi.service. Nota: uwsgi potrebbe partire con il socketactivation (vedi ListenStream), ma non ho capito se c’e’ un modo decente di farlo senza dover elencare tutte le socket coinvolte dentro l’emperor.uwsgi.socket . Quindi non l’ho fatto, non mi pareva pulito.
[Unit]
Description=uWSGI Emperor
After=syslog.target
[Service]
ExecStart=/usr/bin/uwsgi --ini /etc/uwsgi/emperor.ini
ExecStartPre=/bin/mkdir -p /run/uwsgi
ExecStartPre=/bin/chown nobody:nogroup /run/uwsgi
Restart=always
Type=notify
StandardError=syslog
NotifyAccess=main
[Install]
WantedBy=multi-user.target
Configurare nginx
server {
listen 80;
rewrite ^/nowiki$ /nowiki/ permanent;
location /nowiki { #try_files $uri @nowiki; }
#location @nowiki {
include uwsgi_params;
uwsgi_param SCRIPT_NAME /nowiki;
uwsgi_modifier1 30;
uwsgi_pass unix:/run/uwsgi/uwsgi.sock;
}
}