Installer un site Symfony 2 sur un hébergement OVH Pro (mutualisé)

Hello, Récemment j'ai installé une application perso sur une offre Pro OVH et j'ai pas mal galéré ! Voici les astuces pour réussir !

Hello,

Récemment j’ai installé une application perso sur une offre Pro OVH et j’ai pas mal galéré ! Voici les astuces pour réussir !

Etape 1 : Souscrire à une Offre OVH Pro

Je ne détaillerais pas cette partie. Voici juste le lien vers l’offre en question : https://www.ovh.com/fr/hebergement-web/hebergement-pro.xml
J’ai choisi cette offre car elle permet d’avoir un accès SSH, indispensable pour utiliser Symfony 2.

Une fois commandé, attendez de recevoir le mail de confirmation avec votre accès FTP.

Etape 2 : Installer le site Symfony 2 sur le serveur OVH

Connectez-vous en ssh (ssh user@ftp.votredomaine.com puis Mot de passe FTP), ou via FTP :

A la racine de votre espace, vous devez avoir un dossier www.

Créez un deuxième dossier avec le nom de votre site :

mkdir monsite

Dans ce dossier vous allez déposer l’ensemble des fichiers de votre site. Pour cela 2 solutions :

  • Vous utilisez un serveur de version type git. Vous vous connectez en SSH sur le serveur : ssh user@votredomaine.com (Mot de passe : celui du FTP), puis récupérer votre application dans ce ddosier
  • Vous n’utilisez pas un serveur de version, il ne vous reste plus qu’à envoyer vos fichiers via un logiciel FTP (Filezilla par ex) dans ce dossier

Une fois l’ensemble des fichiers déposés, et toujours dans le dossier contenant les sous dossiers monsite et www, nous allons supprimer le dossier www (attention si vous avez des fichiers important à l’intérieur).

rm -rf www

Puis créer un lien symbolique de www vers monsite/web (le dossier public de Symfony2)

ln -s monsite/web www

De cette manière, vous faites pointer le dossier www directement vers le dossier web de votre application symfony 2.

Etape 3 : Configurer OVH (php CLI) afin de pouvoir utiliser les commandes Symfony 2

Lors de mes premiers tests pour vider le cache via la commande symfony, j’ai obtenu l’erreur suivante :

cd monsite
php app/console cache:clear --env=prod
X-Powered-By: PHP/4.4.9
Content-type: text/html


Parse error: syntax error, unexpected T_STRING, expecting T_CONSTANT_ENCAPSED_STRING or '(' in /home/website/monsite/app/console on line 13

Pour faire simple, cela signifie que le binaire PHP CLI n’est pas « compatible  » avec la version de Symfony que vous utilisez.

Voici la solution :

En ssh retournez à la racine de votre serveur (là ou il y a le dossier www) et faites :

nano .bashrc

Ajoutez la ligne suivante :

alias php5='php.ORIG.5_4 -c /usr/local/lib/php.ini-2'

Puis quitter nano en enregistrant : CTRL + O, Entrer, puis CTRL +X et faites la commande suivante pour recharger votre configuration :

. .bashrc

Vous venez de créer un alias qui vous permettra d’exécuter les commandes Symfony 2 sans problèmes.
Comment ?

cd monsite
php5 app/console cache:clear --env=prod

Cette configuration est permanente, vous n’aurez pas besoin de la refaire à chaque fois.

Remarque : Problème pour l’installation des assetics

Pour installer les assetics vous devez utiliser la commande :

php5 app/console assets:install --env=prod

Sauf que celles-ci retourne l’erreur :

[InvalidArgumentException] 
The target directory "web" does not exist.

Etrangement le dossier web est bien présent. La solution que j’ai trouvé est de mettre le chemin complet :

php5 app/console assets:install /homez.334/website/monsite/web/ --env=prod

Remarque : le –symlink ne semble pas marcher chez OVH
On obtient le chemin complet en allant dans le dossier et en faisant un « pwd ».

Etape 4 : Configurer l’environnement avec PHP 5.5

A la racine de votre espace créé un fichier .ovhconfig contenant ces informations :

app.engine=php
app.engine.version=5.5
http.firewall=none
environment=production

Ceci permettra à votre site d’utiliser php 5.5.

Bonus : Configuration Swiftmailer sur OVH avec un compte mail OVH

En bonus, voici la config pour swiftmailer qui fonctionne sous OVH avec un compte mail OVH :

# app/config.yml
swiftmailer:
    transport: "%mailer_transport%"
    auth_mode: "%mailer_auth_mode%"
    host:      "%mailer_host%"
    port:      "%mailer_port%"
    username:  "%mailer_user%"
    password:  "%mailer_password%"

parameters:
    mailer_transport:  smtp
    mailer_auth_mode:  login
    mailer_host:       smtp.votresite.com
    mailer_port:       587
    mailer_user:       votreemail@votresite.com
    mailer_password:   motdepassedevotreemail

Share this post