Esta vía de despliegue está basada en una forma genérica de dejar publicada en diferentes hosting aplicaciones Django, sobre *fastcgi*. Para este caso tomaremos como referencia el famoso hosting HostGator.
Esta vía de despliegue está basada en una forma genérica de dejar publicada en diferentes hosting aplicaciones Django, sobre fastcgi. Para este caso tomaremos como referencia el famoso hosting HostGator.
1. El primer paso es establecer una conexión ssh con el servidor en cuestión.
ssh usuario@servidor –p puerto
2. Crearemos nuestro entorno virtual
virtuanenv nombre_entorno #nombre_entorno es el nombre que queremos darle al entorno virtual.
3. Una vez creado el entorno, podemos instalarle los paquetes python que necesitemos para el despliegue, en nuestro caso Django.
cd nombre_entorno #entramos al directorio del entorno virtual source bin/activate #activamos el entorno virtual pip install django #instalamos Django en el entorno
El último paso es para un Django nuevo, en caso de que ya exista la aplicación se copia en el directorio o clona mediante git, svn etc.
4. Luego pasamos a editar nuestro fichero settings.py donde definimos nuestra conexión a la base de datos y la ruta en donde estarán nuestros ficheros media. Se recomienda que estos 2 directorios, estén en la ruta publica del hosting (public_html), otorgando permiso de escritura para apache al directorio media.
MEDIA_ROOT = '/home1/usuario/public_html/media
5. Una vez terminada la configuración en la aplicación Django, solo nos queda dejar publicada nuestra aplicación, para esto el hosting que tomamos como ejemplo (hostgator) utiliza fastcgi. Se crea un directorio en la ruta pública (public_html) y se crea un fichero index.fsgi con permiso 644. Dentro adicionamos estas líneas de contenido.
#!/home1/usuario/nombre_entorno/bin/python #Camino del paython que maneja nuestra aplicacion import os import sys from flup.server.fcgi import WSGIServer from django.core.wsgi import get_wsgi_application sys.path.insert(0, "/home1/usuario/nombre_entorno") os.environ['DJANGO_SETTINGS_MODULE'] = "Applicacion.settings" WSGIServer(get_wsgi_application()).run()
Usaurio, es el usuario en nuestro hosting,nombre_entorno es el nombre para el entorno ,Applicacion, es el nombre de la aplicación dentro de nuestro proyecto que contiene el fichero settings.py.
Como se ve en la línea (a) se define la ruta del python que utilizaremos para nuestro Django, por lo que la aplicación Django no tiene que estar dentro del directorio de nuestro virtualenv necesariamente.
6. Por ultimo nos queda decirle a apache que entienda nuestro código python, y para esto en él .htaccess de nuestro hosting se agregan estas líneas.
AddHandler fcgid-script .fcgi DirectoryIndex index.fcgi <ifmodule mod_rewrite.c=""> RewriteEngine On RewriteBase / RewriteRule ^index\.fcgi$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /index.fcgi/$1 [L] </ifmodule>
Conclusión
De esta manera queda publicada nuestra aplicación Django en un hosting desatendido, todos los módulos de dependencia en nuestro entorno pueden ser instalados mediante pip, tener en cuenta antes de finalizar que es el pip dentro del directorio /nombre_entorno/bin y que esté en su actualización más reciente, con el comando.
~/nombre_entorno/bin/pip install pip –upgrade #asi puede actualizarse pip.