dimecres, de desembre 22, 2010

Permetre crides AJAX des d'un domini diferent (Peticions "Cross-site")

El servidor específica en la resposta HTTP a quins dominis permet efectuar consultes (si és que n'hi ha algun més que el propi d'on es troba allotjat) mitjançant la capçalera "Access-Control-Allow-Origin"

Així doncs si la crida AJAX va cap a un recurs PHP que es trobi en un domini diferent es pot fer si modifiquem l'script PHP perquè retorni una capçalera "Access-Control-Allow-Origin" adequada:

header('Access-Control-Allow-Origin: http://domini_desdonhiha_el_javascript_amb_ajax.com');

o fins i tot per permetre qualsevol origen:

header('Access-Control-Allow-Origin: "*"');


D'altre banda si no es tracta d'un PHP o no ho podem modificar les capçaleres HTTP
per la raó que sigui, l'Apache es pot configurar mitjançant directiva o mitjançant un arxius .httacces per afegir-la, en aquest darrer cas la directiva podria ser:

header add Access-Control-Allow-Origin *

Cal tenir el mòdul "mod_headers" d'apache carregat perquè funcionin aquestes directives. En Debian/Ubuntu seria assegurant-nos que a "/etc/apache2/mods-enabled" existeix el headers.load ( i si no és així enllaçant-li des dels mods-available amb un "ln -s /etc/apache2/mods-available/headers.load /etc/apache2/mods-enabled/headers.load")

Un exemple d'afegir la capçaera mitjançant la directiva a l'arxiu de configuració seria afegir
Header set Access-Control-Allow-Origin "*" a l'arxiu de configuració del lloc web, per exemple dins de la secció que ens interessi. En aquest cas, per què Apache agafi els canvis de configuració caldria reiniciar-lo
sudo /etc/init.d/apache2 reload



dissabte, de desembre 04, 2010

Ús del Subversion, pas a pas

Malgrat està una mica "passat de moda" i els projectes mínimament grans sembla s'han passat tots a git o mercurial, Subversion encara és útil en molts casos... A continuació un pas a pas realitzat en un Ubunu 10.04 (LTS) Server, esquemàtic, de com posar en marxa un repositori i la seva utilització bàsica com a "client" del repositori des de la línia de comandes.
De tota manera per als clients, des de la meva experiència, és recomanable usar alguna eina gràfica, i les més recomanables són el TortoisSVN pels clients Windows i el Rabbitvcs per GNU/Linux, apart, és clar, del plug-in Subclipse si es desenvolupa des d'Eclipse.


INSTAL·LACIÓ:


Instal·lar els paquets

# sudo apt-get install subversion libapache2-svn


Configurar un repositori: crear-lo

# mkdir /home/usuari/repositori

# svnadmin create /home/usuari/repositori/projecteX


Configurar un repositori: servir-lo via apache

# sudo chown -R www-data:www-data /home/usuari/repositori/

# sudo nano /etc/apache2/sites-available/default

I afegir-hi :

DAV svn
SVNParentPath /home/usuari/repositori
SVNListParentPath On
AuthType Basic
AuthName "Repositori de Control de Versions"
AuthUserFile /etc/subversion/passwd
Require valid-user

# sudo htpasswd -c /etc/subversion/passwd usuari_http

# sudo apache2ctl restart



Configurar una acció automàtica al servidor després de cada “commit”

# vi /home/usuari/repositori/projecteX/hooks/post-commit

I afegir-hi les accions que volguem, per exemple, actualitzar una carpeta amb els contiguts:

/usr/bin/svn update /var/www/test >> /var/log/svn/deploy.log 2>&1

En aquest exemple, caldrà que “/var/log/svn” existeixi i tingui permisos per l'usuari “www- data”



ÚS:


Importar els continguts el primer cop al repositori

# svn import /home/usuari/prjX_backup file:///home/usuari/repositori/projecteX


Descarregar els continguts del repositori a una carpeta "publica_projecte", el primer cop

# svn co file:///home/usuari/repositori/projecteX /var/www/publica_projecte


Actualitzar la carpeta amb els canvis que hi hagi al repositori

# svn update /var/www/publica_projecte/


Afegir nous continguts a la carpeta i “pujar-los” al repositori

# mkdir /var/www/publica_projecte/nova_carpeta

hi copiem o hi creem els continguts que calgui amb “cp” o com ens sembli...

cd /var/www/publica_projecte

# svn add nova_carpeta

# svn commit


Enviar els canvis fets al repositori

En general qualsevol canvi o modificaió als continguts que es vulguin “pujar” al servidor.

# cd /var/www/publica_projecte

# svn commit



Fonts:
https://help.ubuntu.com/10.04/serverguide/C/subversion.html http://elliotth.blogspot.com/2005/02/better-subversion-post-commit-hook.html