====== 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