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.
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.
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:
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
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.
cd monsite
curl -sS https://getcomposer.org/installer | php7
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 dans votre composer.json
, pensez à les envoyer sur le serveur car Composer ne s'en chargera pas.
php7 bin/console doctrine:schema:update --force --env=prod
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 *
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
# 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%"