Home / Blog / Despliegue Django en Hosting Hostgator
Imagen de Daniel
Daniel M. Fernandez
Comp. Science Engineer
23 Ene 2017
Despliegue
Django en 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.

Body: 

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

  1. virtuanenv nombre_entorno
  2. #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.

  1. cd nombre_entorno #entramos al directorio del entorno virtual
  2. source bin/activate #activamos el entorno virtual
  3. pip install django #instalamos Django en el entorno
  4.  

          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.

  1. 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.

  1. #!/home1/usuario/nombre_entorno/bin/python #Camino del paython que maneja nuestra aplicacion
  2. import os
  3. import sys
  4.  
  5. from flup.server.fcgi import WSGIServer
  6. from django.core.wsgi import get_wsgi_application
  7.  
  8. sys.path.insert(0, "/home1/usuario/nombre_entorno")
  9. os.environ['DJANGO_SETTINGS_MODULE'] = "Applicacion.settings"
  10.  
  11. 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.

  1. AddHandler fcgid-script .fcgi
  2. DirectoryIndex index.fcgi
  3.  
  4. <ifmodule mod_rewrite.c="">
  5. RewriteEngine On
  6. RewriteBase /
  7. RewriteRule ^index\.fcgi$ - [L]
  8. RewriteCond %{REQUEST_FILENAME} !-f
  9. RewriteCond %{REQUEST_FILENAME} !-d
  10. RewriteRule ^(.*)$ /index.fcgi/$1 [L]
  11. </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.

  1. ~/nombre_entorno/bin/pip install pip –upgrade #asi puede actualizarse pip.