03 julio 2008

Host virtuales para symfony (falta pulir un poco)

Crear un Virtual Host para Symfony.
Para esto hay que tener habilitado mod_rewrite: en Ubuntu hay que crear un link simbólico de /etc/apache2/mods-available/rewrite.load a /etc/apache2/mods-enabled/rewrite.load
El código de mi vhost en /etc/apache2/sites-enabled y también debe estar en /etc/apache2/sites-available (ambos pueden ser links simbólicos a un archivo en otro lado)
NameVirtualHost symfony:80

<virtualhost symfony:80>
ServerAdmin admin@localhost
ServerName symfony
DocumentRoot /home/user/symfony/

Alias /web/sf /usr/share/php5/symfony/data/web/sf  
<Directory "/usr/share/php5/symfony/data/web">
AllowOverride All
Options FollowSymLinks +Indexes
Order allow,deny
Allow from all
</Directory>

<Directory /home/user/symfony/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/errorSymfony.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog /var/log/apache2/access.log combined
ServerSignature On
</virtualhost>
Lo importante son los AllowOverride All

02 julio 2008

Actualización de Symfony a 1.1

Bueno, con la actualización de symfony a 1.1 tuve algunos inconvenientes, pero nada que no se pueda solucionar leyendo el manual:
http://www.symfony.es/documentacion/actualizacion-de-symfony-10-a-symfony-11/

Vi que hay varios cambios, por lo que recomendaría a cualquiera que tenga un proyecto funcionando de hace tiempo, que tome precauciones antes de actualizar.
Lástima que ahora sólo funciona para php 5.1 o superiores, pero por suerte no voy a tener problema con mis proyectos, ya que hace rato que uso la versión 5 de php.

Yo apuesto por Symfony

Después de varios golpes con Java, demasiadas cosas para leer y aprender, muchas líneas de configuración, llegué a la decisión de que no vale la pena usar y escribir tanto código cuando la funcionalidad del sistema no lo requiere. Al final es como dice la frase: "En Java lo difícil es posible y lo fácil es difícil". Así que para lo fácil, opté por Symfony, donde lo fácil es fácil y lo relativamente complejo también es fácil.
Para empezar:
Mi sistema: Ubuntu 8.04
Requerimientos previos:
sudo apt-get install php5 apache2 libapache2-mod-php5 mysql-server php-pear
Instalar symfony:
pear channel-discover pear.symfony-project.com
pear install symfony/symfony
Autocompletar para bash: Crear el archivo /etc/bash_completion.d/symfony con este contenido:
_symfony()
{
local cur prev action
COMPREPLY=()
cur=${COMP_WORDS[COMP_CWORD]}
prev=${COMP_WORDS[COMP_CWORD-1]}
action=${COMP_WORDS[1]}

case "$prev" in
"init-module"|"propel-generate-crud"|"propel-init-crud"|"propel-init-admin"|"generate:module"|"propel:generate-crud"|"propel:init-admin")
COMPREPLY=( $( compgen -W "$( ls -1 apps 2>/dev/null | sed -e 's/ /\\ /g' | sed -e 's/\/$//g' )" -- $cur ) )

return 0
;;

"init-project"|"generate:project")
COMPREPLY=( $( compgen -W "$( pwd | perl -pe "s/^.*?([^\/]+)$/\$1/g" )" -- $cur ) )

return 0
;;

"init-app"|"generate:app")
COMPREPLY=( $( compgen -W "frontend backend" -- $cur ) )

return 0
;;

"sync")
if (($COMP_CWORD == 3)); then
COMPREPLY=( $( compgen -W 'go' -- $cur))
fi

return 0
;;

*symfony)
SYMFONY_VERSION=$( $prev -V | sed 's/^symfony version //g' | awk -F '.' '{print $1 "." $2;}' )

case "$SYMFONY_VERSION" in
0.*)
# Versions less than 1.0 are not supported.
COMPREPLY=()
;;

"1.0")
COMPREPLY=( $( compgen -W "$( $prev -T | awk '/^ /' | cut -d ' ' -f 3 )" -- $cur ) )
;;

*)
COMPREPLY=( $( compgen -W "$(
NAMESPACE=''
OLD_IFS=$IFS

IFS=$'\n'
for line in $( $prev -T ); do
if [ $line != 'Available tasks:' ]; then
if [ ${line:0:2} == ' ' ]; then
TASK=$(echo $line | awk -F ':' '{print $2;}' | cut -d ' ' -f 1)
if [ -z $NAMESPACE ]; then
echo $TASK
else
echo $NAMESPACE:$TASK
fi
else
NAMESPACE=$line
fi
fi
done

IFS=$OLD_IFS
)" -- $cur ) )

# Work-around bash_completion issue where bash interprets a colon as a separator.
# Work-around borrowed from the darcs work-around for the same issue.
local colonprefixes=${cur%"${cur##*:}"}
local i=${#COMPREPLY[*]}
while [ $((--i)) -ge 0 ]; do
COMPREPLY[$i]=${COMPREPLY[$i]#"$colonprefixes"}
done
;;
esac

return 0
;;

*)
case "$action" in
"propel-generate-crud"|"propel-init-crud"|"propel-init-admin"|"propel:generate-crud"|"propel:init-admin")
if (($COMP_CWORD == 3)); then
COMPREPLY=( $( compgen -W "$( find lib/model -maxdepth 1 -name '*.php' -exec basename '{}' '.php' ';' | grep -v 'Peer$' | tr [:upper:] [:lower:] )" -- $cur ) )
elif (($COMP_CWORD == 4)); then
COMPREPLY=( $( compgen -W "$( find lib/model -maxdepth 1 -name '*.php' -exec basename '{}' '.php' ';' | grep -v 'Peer$' )" -- $cur ) )
fi

return 0
;;
esac

return 0
;;
esac

return 0
}

complete -F _symfony symfony
Para desarrollar con Eclipse:
Symfoclipse