dijous, 14 de novembre del 2013

Com fer el deploy d'app django actualitzat a dinahosting


Dinahosting suporta aplicacions django, per defecte django1.4 i python2.6.5 (nov 2013). 

Nosaltres actualitzarem el django a la darrera versió usant un virtualenv.

Cal que la teva imatge de hosting sigui python / node.js, si no ho és, has d'anar a la eina storm i canviar-ho ( Hosting / Administrar / STORM ). T'ha de quedar així:




Ara cal entrar per ssh:

1) Crear usuari ftp i posar-li password.
2) ssh -p 22 nomUsuariFtp@www.dominiQueSigui.cat

Pots posar l'aplicació allà on vulguis, jo l'he posat sota de www, de manera que m'ha quedat un arbre com aquest:

home
   gratia 
      django16p27
      .htaccess  (1)
      www
         .htaccess   (2)
         ping2u.wsgi
         ping2u
             manage.py
             ping2u
                 settings.py           

  • django16p27 és un virtualenv amb el django 1.6 instal·lat, mira al final del manual si no saps com crear-lo.
  • gratia és el meu usuari
  • ping2u és la aplicació que vols fer rodar (mira el final del document si no saps crear-la)
  • El primer .htaccess l'he deixat tal com ve.
  • El segon .htaccess és el que cal adaptar, ha de quedar com aquest:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /ping2u.wsgi/$1  [QSA,L]

  • El fitxer 'ping2u.wsgi' t'ha de quedar com aquest:

import os, sys
import site

# Remember original sys.path.
prev_sys_path = list(sys.path)

site.addsitedir('/home/gratia/django16py27/lib/python2.6/site-packages/')
sys.path.append('/home/gratia/www/ping2u')

# Posar els paths de l'entorn virtual davant dels per defecte.
new_sys_path = [] 
for item in list(sys.path): 
    if item not in prev_sys_path: 
        new_sys_path.append(item) 
        sys.path.remove(item) 
sys.path[:0] = new_sys_path 

os.environ['DJANGO_SETTINGS_MODULE'] = 'ping2u.settings'
from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()

  • Creació del virtualenv:

cd ~
virtualenv django16p27
source ~/django16p27/bin/activate
pip install django

  • Per crear l'aplicació de test ping2u:

cd www
django-admin.py startproject ping2u

A l'aplicació he provocat un error (divisió per 0) per veure si està rodant realment amb 1.6:



L'.htaccess (1) és aquest:

##
## DHGENERATED
## NO EDITAR MANUALMENTE!!!!
##
AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug On
Options +ExecCGI
AddHandler wsgi-script .wsgi

RewriteEngine On

##REGLAS_NODE##

##FIN_REGLAS_NODE##



I això és tot. Agraïr a la gent de suport de dinahosting, en especial a A.A. l'ajuda que m'han prestat per poder posar en marxa l'aplicació, els fitxers .htaccess són seus. Una llàstima la versió de python, tant de bo la canviin aviat.

Després de tot plegat, aquí la meva aplicació (que encara no sé per a que em serveix) funcionant.

Disclaimer: aquesta guia no és oficial de dinahosting, utilitza-la al teu risc.

Cap comentari:

Publica un comentari a l'entrada