¿Cómo configurarías un servidor web Python con múltiples hosts virtuales?
-
22-08-2019 - |
Pregunta
Me han dicho que wsgi es el camino a seguir y no mod_python.Pero más específicamente, ¿cómo configuraría su entorno de servidor de múltiples sitios web?¿Elección del servidor web, etc.?
Solución
Apache + mod_wsgi es una opción común.
Aquí hay un simple ejemplo host virtual, configuración de un seguimiento riguroso de las solicitudes de / wsgi / algo para la aplicación (que pueden releer PATH_INFO para elegir una acción, o como lo está haciendo su despacho). La URL raíz '/' también se encamina a la aplicación 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>
Puede usar la directiva WSGIProcessGroup para separar los controladores para diferentes dominios virtuales si lo desea. Si necesita guiones VHosts' para ser ejecutado bajo diferentes usuarios a los que tendrá que utilizar WSGIDaemonProcess en lugar del intérprete de Python incrustado.
application.py sería, cuando se ejecuta, deje su WSGI exigible en la variable global ‘aplicación’. También puede agregar un pie de página run-as-principal para la compatibilidad con CGI de la vieja escuela:
#!/usr/bin/env python
from mymodule import MyApplication
application= MyApplication()
if __name__=='main':
import wsgiref.handlers
wsgiref.handlers.CGIHandler().run(application)
Otros consejos
Me gustaría recomendar Nginx para el servidor web. Rápido y fácil de configurar.
probablemente querrá tener un usuario UNIX por host virtual - por lo que cada directorio principal tiene su propia aplicación, el medio ambiente pitón y la configuración del servidor. Esto le permite reiniciar una aplicación particular, con seguridad, simplemente matando procesos de trabajo que posee su host.
Sólo un consejo, creo que sirve.
Se puede usar Apache y mod_wsgi . De esa manera, todavía puede utilizar el soporte integrado de Apache para vhosts.