digitalocean deploy python django deployment

python - deploy - ¿Se recomienda virtualenv para el servidor de producción django?



pythonanywhere (6)

Siempre he estado usando virtualenv para probar mi aplicación en localhost ya que tengo un entorno aislado y puedo probar de forma segura nuevos lanzamientos de paquetes.

Ahora llega el momento en que tengo que implementar mi aplicación en un servidor de producción. Me pregunto si también debería usar virtualenv para servidor de producción o simplemente lo debería hacer la instalación normal. Dado que es un servidor de producción, siempre puedo usar la versión correcta que probé en el servidor de desarrollo (en virtual-env)


¿Se recomienda virtualenv para el servidor de producción django?

Sí, hace que su proyecto no dependa de ciertos aspectos del entorno del sistema y también le permite hacer que el proceso de implementación sea más claro y configurable.

Uso fabric, pip y virtualenv para implementar todos mis proyectos de Django.



El uso de contenedores Docker para la implementación de desarrollo y producción es muy popular ahora, por lo que si está considerando seguir esta tendencia, ya no necesitará virtualenv.


En la mayoría de los casos, estoy de acuerdo en que es mejor tener un virtualenv incluso si no parece que lo necesita cuando configura el servidor por primera vez. Dicho esto, si estás utilizando algún tipo de servicio en la nube y haciendo funcionar los servidores para una tarea específica durante un tiempo corto, entonces no veo el sentido de usar un virtualenv.


Lo haría de esa manera si alguna vez crees que ejecutarás más de un proyecto en el servidor web. Tan pronto como tenga dos proyectos, correrá el riesgo de una futura actualización de cualquier paquete de Python que rompa el otro sitio.


Sí, creo que deberías usar virtualenv para implementarlo en producción. Hace las cosas mucho más fáciles y más limpias para usted, especialmente si planea implementar múltiples servicios, por ejemplo, sitios web basados ​​en django u otros proyectos de Python. No desea que cada uno de ellos esté contaminando el entorno python global con sus paquetes.

Creo que virtualenv te ayudará a administrar todas tus dependencias limpiamente.

Para actualizar su entorno de producción, todo lo que necesita hacer es:

pip -r name_of_your_requirements_file.txt

Utilizo virtualenvs en producción y puede usar uWSGI para servir las aplicaciones, con Cherokee como servidor web.

Para usar su virtualenv en producción, deberá agregar su ruta a su PYTHONPATH.

Por ejemplo, si su env tiene la ruta "/ home / www / my_project / env /", la ruta para agregar sería:

/home/www/env/lib/python2.7/site-packages/

Puede configurar esto de muchas maneras diferentes, pero si está generando su interfaz FCGI o uWSGI a través de manage.py, simplemente agregue lo siguiente en la parte superior de su manage.py (antes del resto):

import os my_virtualenv_path = "/home/www/my_project/env/lib/python2.7/site-packages/" # Add it to your PYTHONPATH os.path.append(my_virtualenv_path)

Puede adaptar esto a su configuración, en caso de que también pueda hacer lo siguiente en el shell:

export PYTHONPATH:$PYTHONPATH:/home/www/my_project/env/lib/python2.7/site-packages/

También necesitarás agregar el directorio que contiene tu archivo settings.py a PYTHONPATH, para que Django pueda descubrirlo. Simplemente proceda de una manera similar para hacerlo.