Sería en primer lugar necesario contar con un servidor LAMP operativo, sino es tu caso y para no repetirme puedes ponerlo en marcha siguiendo esta otra entrada del blog tasksel la navaja suiza sadf
Una vez con un sistema básico en funcionamiento:
Con esto tenemos un sistema de desarrollo básico funcionando.
Durante la instalación habremos establecido una clave en mysql para el usuario root, es recomendable crear al menos un usuario adicional. Para ello entramos a la consola de mysql y creamos un usuario nuevo.
mysql -uroot -p mysql>CREATE USER 'user'@'localhost' IDENTIFIED BY 'xxxx';
Damos permisos a nuestro usuario, en nuestro caso y al tratarse de un usuario para taréas de desarrollo le daremos permisos para todas las bases de datos, si los permisos fueran para un entorno de producción se darían sólo sobre las bases de datos y con los permisos estrictamente necesarios.
Si sólo vamos a trabajar en local con la primera línea es suficiente.
GRANT ALL ON *.* TO 'user'@'localhost'; GRANT ALL ON *.* TO ‘user’@’%’;
Añadiremos nuestro usuario del sistema al grupo de apache, esto simplificará la gestión de permisos posterior:
sudo usermod -a -G www-data user //para comprobar que el usuario está agregado ($ id user)
Ahora vamos a bajarnos la última versión de Symfony2, la opción recomendada es via composer. Si no tienes instalado composer en tu sistema lo puedes tener disponible a través del comando curl que puede ser instalado via apt-get:
sudo apt-get install curl
Para instalar composer ejecuta:
curl -s https://getcomposer.org/installer | php
Si quieres tener el comando disponible de forma global, ejecuta:
sudo mv composer.phar /usr/local/bin/composer
Ahora ordenamos a composer que instale la versión 2.1.7 de la edición standar de symfony
composer create-project symfony/framework-standard-edition /var/www/dev.newSymfonyProject.es/ 2.1.7
En el paso siguiente vamos a configurar el virtual host, para ello creamos el fichero /etc/apache2/sites-available/dev.newSymfonyProject.es con el siguiente contenido
<VirtualHost *:80> ServerName dev.newSymfonyProject.es ServerAdmin admin@newSymfonyProject.es DocumentRoot "/var/www/dev.newSymfonyProject.es/web" ErrorLog /var/log/apache2/dev.newSymfonyProject.es.error.log <Directory "/var/www/dev.newSymfonyProject.es/web"> Options Indexes FollowSymLinks MultiViews AllowOverride None allow from all <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ app.php [QSA,L] </IfModule> </Directory> </VirtualHost>
Activamos el dominio
a2ensite dev.newSymfonyProject.es
Hay que dar permisos a los directorios de cache y logs:
cd /var/www/dev.newSymfonyProject.es chmod 777 app/cache app/logs
Hay que apuntar el dominio de desarrollo sobre la máquina en la que estamos trabajando, en mi caso es localhost
sudo vim /etc/hosts
y agregamos
#dominios locales 127.0.0.1 dev.newSymfonyProject.es
Una vez seguidos estos pasos, vamos a comprobar que los requerimientos para ejecutar Symfony2 son los adecuados, para ello ejecutamos:
php app/check.php
Este es el resultado que obtengo:
******************************** * * * Symfony requirements check * * * ******************************** * Configuration file used by PHP: /etc/php5/cli/php.ini ** ATTENTION ** * The PHP CLI can use a different php.ini file * than the one used with your web server. * To be on the safe side, please also launch the requirements check * from your web server using the web/config.php script. ** Mandatory requirements ** OK PHP version must be at least 5.3.3 (5.3.10-1ubuntu3.5 installed) OK PHP version must not be 5.3.16 as Symfony won't work properly with it OK Vendor libraries must be installed OK app/cache/ directory must be writable OK app/logs/ directory must be writable ERROR date.timezone setting must be set Set the "date.timezone" setting in php.ini* (like Europe/Paris). OK Configured default timezone "Europe/Madrid" must be supported by your installation of PHP OK json_encode() must be available OK session_start() must be available OK ctype_alpha() must be available OK token_get_all() must be available OK simplexml_import_dom() must be available OK detect_unicode must be disabled in php.ini OK PCRE extension must be available ** Optional recommendations ** OK Requirements file should be up-to-date OK You should use at least PHP 5.3.4 due to PHP bug #52083 in earlier versions OK When using annotations you should have at least PHP 5.3.8 due to PHP bug #55156 OK You should not use PHP 5.4.0 due to the PHP bug #61453 OK PCRE extension should be at least version 8.0 (8.12 installed) OK PHP-XML module should be installed OK mb_strlen() should be available OK iconv() should be available OK utf8_decode() should be available OK posix_isatty() should be available WARNING intl extension should be available Install and enable the intl extension (used for validators). WARNING a PHP accelerator should be installed Install and enable a PHP accelerator like APC (highly recommended). WARNING short_open_tag should be disabled in php.ini Set short_open_tag to off in php.ini*.
Como vemos hay varios avisos y un error, pues vamos a resolverlos.
El error del date.timezone está indicando simplemente que no tenemos configurado este valor, el de short_open_tag nos indica que debemos desactivar esta opción, para poner remedio editamos los ficheros php.ini tanto el que carga apache como el que configura el cliente php de línea de comandos.
sudo vim /etc/php5/apache2/php.ini
y
sudo vim /etc/php5/cli/php.ini
buscar la línea ";date.timezone =" y déjala como corresponda con tu zona horaria, en mi caso los cambios realizados son:
date.timezone = 'Europe/Madrid' short_open_tag: Off
El primer warning nos dice que no está instalada la librería de internacionalización de php5, para instalarta ejecutamos:
sudo apt-get install php5-intl
En el segundo warning se nos insta a instalar un acelerador, vamos a instalar apc
apt-get install apache2-threaded-dev php5-dev php-pear make gcc g++ pecl install apc
ahora hay que añadirlo al php.ini
apc extension extension=apc.so
El profiler de symfony necesitará tener instalada la extensión de php para sqlite así que como paso final:
apt-get install php5-sqlite
Para cargar los cambios reinicia apache
sudo service apache2 reload
Si ejecutas ahora el check.php deberías visualizar un ok en todos los puntos. Ahora si accedemos al dominio creado anteriormente dev.newSymfonyProject.es deberíamos poder ver la pantalla de bienvenida de Symfony2:
Pantalla de inicio de Symfony2
En otra entrada me gustaría mostrar como integrar esta instalación junto con puppet para generar máquinas virtuales con el software preconfigurado.
Enlaces de interés.
- Web oficiál de symfony: http://symfony.com/doc/current/book/installation.html
- Installing PHP accelerator APC on Linux: http://howtounix.info/howto/php-accelerator-apc-on-linux