lundi 20 mai 2013

Installer et configurer Apache/PHP/MySQL pour Symfony2 en 10 étapes

Vous venez tout juste d'installer la dernière version d'Ubuntu (13.04 à l'heure où j'écris), et souhaitez installer tout l'environnement nécessaire pour faire fonctionner Symfony 2 (version 2.2.1 à ce jour) et commencer votre première application ?
Voici la marche à suivre !
Mais tout d'abord, quelques petites précisions avant de commencer :
  • Ce tutoriel est un guide concis qui récapitule l'ensemble des étapes à suivre pour préparer votre serveur de développement et faire fonctionner l'installation de Symfony 2. Je n'explique pas en détail tout ce qu'on va faire..
  • Je pars du principe que vous voulez créer un site qui sera accessible à l'URL http://symfony et que le contenu du site sera placé dans le répertoire /home/nom_user/www/symfony/. A vous d'adapter si vous voulez modifier ceci.
Allons-y maintenant !

1. Installer Apache

sudo apt-get install apache2

2. Installer MySQL

sudo apt-get install mysql-server mysql-client

3. Installer PHP 5

sudo apt-get install php5

4. Installer PHPMyAdmin

sudo apt-get install phpmyadmin
Lors de l'installation, vous aurez droit à 2 questions :
1°) Quel serveur web reconfigurer pour exécuter phpMyAdmin ? Choissiez apache2
2°) Faut-il configurer la base de données de phpmyadmin avec dbconfig-common ? Choisissez Non

5. Installer les modules Apache nécessaires/utiles pour Symfony 2

D'abord le mod_rewrite qui permettra l'utilisation de la réécriture d'URL :
sudo a2enmod rewrite

6. Installer les modules PHP nécessaires/utiles pour Symfony 2

sudo apt-get install php5-intl
sudo apt-get install php-apc
sudo apt-get install php-pear
sudo apt-get install php5-dev sudo pecl install xdebug

7. Configurer PHP

Modifier les paramètres de PHP en éditant les lignes suivantes du fichier /etc/php5/apache2/php.ini :
short_open_tag = Off
date.timezone = Europe/Paris
Il faut ensuite configurer les modules nouvellement installés :
APC
Editer le fichier /etc/php5/conf.d/20-apc.ini, et ajouter les lignes suivantes :
apc.shm_size = 128M
XDebug
Créer le fichier /etc/php5/conf.d/20-xdebug.ini :
zend_extension = /usr/lib/php5/20100525/xdebug.so
xdebug.max_nesting_level = 250

8. Configurer votre site local

8.1 Fichier hosts

sudo nano /etc/hosts
Ajouter la ligne :
127.0.0.1 symfony

8.2 Virtual Host

On crée un nouveau VirtualHost pour notre site : sudo nano /etc/apache2/sites-available/symfony.conf
Dans l'éditeur coller cette configuration en remplaçant /home/mon_nom/www/symfony/web/ par le répertoire où vous voulez placer votre site :
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName symfony

    DocumentRoot /home/mon_nom/www/symfony/web/
    <Directory /home/mon_nom/www/symfony/web/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error-symfony.log

    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access-symfony.log combined
</VirtualHost>

Attention ! Si vous utilisez Apache 2.4 (intégré dans les dernières versions d'Ubuntu), il faut remplacer les lignes :
    AllowOverride All
    Order allow,deny
    allow from all

par :
    Require all granted

On active le VirtualHost que nous venons de créer :
sudo a2ensite symfony
On prépare le répertoire où l'on placera notre site Symfony :
cd ~
mkdir www

Il ne reste plus qu'à redémarrer apache :
sudo service apache2 reload

9. Installer Composer

Installer d'abord le module curl pour nous permettra d'installer facilement Composer :
sudo apt-get install curl
Puis installer Composer :
cd ~
curl -sS https://getcomposer.org/installer | php

Pour simplifier son utilisation, nous allons le rendre exécutable n'importe où sur le système :
sudo mv composer.phar /usr/local/bin/composer
Désormais, pour utiliser composer, il suffira de saisir directement n'importe où :
composer

10. Enfin, installer et configurer Symfony2

cd ~/www
composer create-project symfony/framework-standard-edition symfony/ 2.2.1

Mettre à jour les vendors :
composer update
Définir les droits sur les répertoires cache et logs :
$ sudo setfacl -R -m u:www-data:rwX -m u:`whoami`:rwX app/cache app/logs
$ sudo setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs

Il ne vous reste plus qu'à vérifier que tout s'est bien passé et que Symfony 2 est prêt à fonctionner en vous rendant à l'URL suivante dans votre navigateur :
http://symfony/config.php
Vous devriez avoir un joli message sur fond vert :
Your configuration looks good to run Symfony
Il ne vous reste plus qu'à cliquer sur le lien "Configure your Symfony Application online" pour terminer votre configuration de Symfony 2.

Conclusion

Et voilà ! Si tout s'est bien passé, vous êtes en mesure de créer un site avec Symfony 2 sur le serveur de développement que vous venez juste d'installer et de configurer.


4 commentaires:

Doodou esmedo a dit…

Helooo,

Merci pour le tuto

J’ai un site symfony qui tourne su debian, j’ai créé un vhost comme tu l’explique et ça tourne bien. Saurais-tu me dire omment faire pour accéder à mon phpmyadmin dans mon navigateur ?

> Mon sites est dans home/mondomaine et le vhost redirige sur /home/mondomaine/web

> Mon phpmyadmin est situé dans /var/www/phpmyadmin

Guillaume a dit…

Bonjour,

Il y a de fortes chances que phpmyAdmin soit accessible à l'URL http://localhost/phpmyadmin

Sinon, il faudrait vérifier le DocumentRoot dans la configuration Apache.

JSeb Barboteu a dit…

J'ai un petit souci,

la commande composer update retourne une erreur

The following exception is caused by a lack of memory and not having swap configured
Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details

une idée ?

Guillaume a dit…

Bonjour, comme l'indique le message d'erreur, il faudrait configurer ou augmenter la taille du swap. le lien fourni explique comment faire.