Déployer un site Symfony3 sur OVH

publié le 16/06/2017

symfony ovh

Récemment j'ai mis en ligne un site développé avec Symfony3 sur OVH et j'ai eu quelques problèmes pour configurer le serveur. Voici mon retour d'expérience et un focus sur les points importants à vérifier si le déploiement du site pose des difficultés.


Pré-requis

J'ai choisi de partir sur l'offre PRO d'OVH pour bénéficier de l'accès SSH et la possibilité d'utiliser la console directement sur le serveur.


1) Préparation de l'environnement

Avant d'envoyer votre site sur votre serveur, vérifiez que tout fonctionne bien en local en utilisant le controleur frontal app.php. Rendez vous à la racine de votre site puis tapez:

 php bin/console cache:clear --env=prod 

pour vider le cache de production et

php bin/console assets:install --symlink
php bin/console assetic:dump

pour compiler et installer vos fichiers css et js.

Connectez-vous à votre espace d'administration sur OVH puis:

  • créer une base de données
  • créer une adresse mail liée à votre nom de domaine
  • ajouter une clé SSH en vous rendant dans les paramètres de votre profil

2) Installez votre projet sur le serveur

Connexion au serveur en SSH en tapant ssh identifiant@serveur A la racine de votre espace, à côté de www,

mkdir monsite

pour créer un dossier destiné à contenir l'ensemble de vos fichiers. Envoyer vos fichiers sur le serveur en FTP ou en SSH (voir à ce titre l'article très intéressant de Grafikart sur le sujet). Supprimer les fichiers du dossier www en faisant:

rm -rf www

Créer un lien symbolique de www vers monsite/web avec:

ln -s monsite/web www

3) Configuration d'OVH pour utiliser la console

Définir un alias pour pouvoir utiliser les commandes Symfony.

cd ~ vim .bashrc

puis copiez-collez le code qui suit:

# ~/.bashrc
alias php7='/usr/local/php7.1/bin/php'
if [ -f /etc/bashrc ]; then 
. /etc/bashrc 
fi

Grâce à cette configuration vous allez pouvoir utilisez la console en tapant, par exemple, php7 bin/console cache:clear. Si l'alias ne fonctionne pas, pensez à redémarrer votre connexion SSH pour que la configuration prenne effet.


4) Installation de Composer

cd monsite
curl -sS https://getcomposer.org/installer | php7

5) Installation des vendors

php7 composer.phar install --env=prod

Composer va se charger d'installer les vendors qui figure sur le composer.json. Si vous avez des librairies dans vendor qui ne figurent pas à sur votre composer.json, pensez à les envoyer sur le serveur car Composer ne s'en chargera pas.


6) Mise à jour de la base de données

php7 bin/console doctrine:schema:update --force --env=prod

7) Gestion des droits d'accès

Définir les droits d'accès du dossier var pour que Symfony puisse écrire dedans. En ligne de commande,

cd monsite/var chmod 705 -R *

8) Les bonus

Votre site est normalement opérationnel. Je vous mets en bonus mes fichiers de configuration en cas de doute.

# ~/.ovhconfig
app.engine=php 
app.engine.version=7.1 
http.firewall=none 
environment=production 
container.image=stable 

Configuration de Swiftmailer avec une adresse mail OVH

# app/config/parameters.yml
mailer_transport: mail 
mailer_host: smtp.votredomaine.com 
mailer_user: votremail 
mailer_password: votremotdepasse
mailer_port: 587 
mailer_auth_mode: login
# app/config/config.yml
swiftmailer: 
    spool: { type: memory } 
    transport: "%mailer_transport%" 
    auth_mode: "%mailer_auth_mode%" 
    host: "%mailer_host%" 
    port: "%mailer_port%" 
    username: "%mailer_user%" 
    password: "%mailer_password%"