Come si impostare un server web pitone con più vhosts?
-
22-08-2019 - |
Domanda
Mi è stato detto è la strada da percorrere e non mod_python. Ma più specificamente, come è possibile impostare l'ambiente multi sito web server? Scelta del server web, ecc?
Soluzione
Apache + mod_wsgi è una scelta comune.
Ecco un semplice esempio vhost, l'installazione fino a mappare eventuali richieste di / WSGI / qualcosa per l'applicazione (che possono poi guardare PATH_INFO di scegliere un'azione, o comunque si sta facendo il dispacciamento). L'URL radice '/' è anche indirizzato all'applicazione WSGI.
LoadModule wsgi_module /usr/local/lib/mod_wsgi.so
...
<VirtualHost *:80>
ServerName www.example.com
DocumentRoot /www/example/htdocs
WSGIScriptAliasMatch ^/$ /www/example/application.py
WSGIScriptAlias /wsgi /www/example/application.py
</VirtualHost>
È possibile utilizzare la direttiva WSGIProcessGroup per separare i gestori per diverse vhosts, se volete. Se avete bisogno di script vhosts' essere eseguito con diversi utenti è necessario utilizzare WSGIDaemonProcess al posto del interprete Python integrato.
application.py sarebbe, quando eseguito, lasciare la vostra WSGI richiamabile nella variabile globale ‘applicazione’. È inoltre possibile aggiungere un piè di run-as-principale per la compatibilità con CGI vecchia scuola:
#!/usr/bin/env python
from mymodule import MyApplication
application= MyApplication()
if __name__=='main':
import wsgiref.handlers
wsgiref.handlers.CGIHandler().run(application)
Altri suggerimenti
Mi consiglia di Nginx per il server web. Veloce e facile da configurare.
Si sarebbe probabilmente desidera avere un utente unix per ogni vhost - così ogni directory home tiene la propria applicazione, l'ambiente di pitone e la configurazione del server. Questo consente di riavviare una particolare applicazione in modo sicuro, semplicemente uccidendo i processi di lavoro che il vostro vhost possiede.
Solo un consiglio, spero che aiuta.
Si potrebbe utilizzare Apache e mod_wsgi . In questo modo, è ancora possibile utilizzare il supporto built-in di Apache per vhosts.