====== Lighttpd, uwsgi e Bottle ======
Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **// 13/06/2023 - 18:22 //** // //
Le mie esperienze sulla configurazione di Lighttpd per l'esecuzione di script python con il framework Bottle.
La struttura della nostra cartella del progetto :
conf.ini main.py touch_for_reload.txt
Il file main.py contiene il nostro script principale, conf.ini la configurazione di uwsgi e touch_for_reload.txt invece un file vuoto che ci serve per riavviare il server uwsgi senza spegnerlo, basta ''touch touch_for_reload.txt ''
Ricordarsi di installare uwsgi e il plugin per il python
===== main.py =====
La nostra applicazione vera e propria che fa uso del framework Bottle.
#!/usr/bin/env python
from bottle import Bottle, run
app = Bottle()
@app.route('/')
def hello():
return "Hello World!"
@app.route('/page')
def page():
return "A blank page
"
@app.route('/bello')
def page():
return "Bello!
"
@app.route('/cane/gatto')
def page():
return "Cane e gatto
"
===== conf.ini =====
Il file di configurazione di uwsgi.
[uwsgi]
socket = 127.0.0.1:3031
chdir = /srv/python/
file = main.py
processes = 4
threads = 2
plugins = python
master = true
module= main
callable= app
touch-reload=/srv/python/touch_for_reload.txt
Da notare che **callable=** punta ad **app**, la nostra applicazione di Bottle ( //app = Bottle()//) in main.py
==== Creare la unit di systemd per avviare uwsgi ====
Io ho fatto così.
**/etc/systemd/system/myApps.service**
[Unit]
Description=Python apps service (Fabio Di Matteo)
[Service]
Type=simple
User=http
ExecStart=/usr/bin/uwsgi /srv/python/conf.ini
#ExecStop=
[Install]
WantedBy=multi-user.target
avviamo la unit con systemctl enable --now myApps
==== Configurazione di lighttpd ====
**/etc/lighttpd/lighttpd.conf**
...
#uwsgi
server.modules += ( "mod_scgi" )
scgi.protocol = "uwsgi"
scgi.server = (
"/apps" => (( "host" => "127.0.0.1", "port" => 3031, "check-local" => "disable" )),
)
...
riavviamo lighttpd
systemctl restart lighttpd