-
Notifications
You must be signed in to change notification settings - Fork 3
Guide d'installation : Déploiement en Production
Ce guide d'installation vous guidera dans le déploiement de l'application sur un serveur de production, de préférence un serveur dédié ou un serveur mutualisé avec un accès SSH.
Ce tutoriel suppose que :
- Vous avez les droits d'accès en SSH sur le serveur
- Vous avez un nom domaine, ou une adresse IP qui pointe vers le dossier qui contiendra le projet
- Vous avez bien entendu déjà réalisé un fork du projet et qu'il est disponible sur votre machine locale
Pour pouvoir déployer l'application sur les serveurs de production afin qu’elle soit disponible à l’ensemble des internautes, nous utiliserons l'outil Capifony.
Capifony est un outil destiné à l'industrialisation des déploiements d'applications sur des serveurs distants via SSH. Capifony nous permet donc de gérer très facilement le déploiement de notre application Symfony.
- Tout d'abord installez Capifony
gem install capifony
- Ensuite placez vous à la racine du dossier qui contient le projet forké et initialisez capifony. Cette manip créera un fichier Capfile à la racine du projet et un fichier deploy.rb dans le dossier config.
cd chemin/vers/le/projet
capifony .
- Modifiez le fichier deploy.rb, en vous basant sur les exemples donnés ici, en fonction :
- de votre stratégie de déploiement (Serveur de prod et prépod etc...)
- de vos besoins spécifiques ()
Voici un exemple de fichier deploy.rb se basant sur ma configuration qui est une stratégie de déploiement sur un seul serveur de prod, passant par GitHub.
set :application, "MealSquare"
set :domain, "nom de domaine ou IP" # Le SSH de destination
set :deploy_to, "/var/www/mealsquare" # Le dossier sur le serveur
set :app_path, "app"
set :web_path, "web"
set :user, "mealsquare"
set :upload_path, web_path + "/uploads"
set :repository, "git@github.com:AndreMarvell/MealSquare.git"
set :branch, "master"
set :scm, :git
set :deploy_via, :rsync_with_remote_cache
set :model_manager, "doctrine" # ORM
role :web, domain
role :app, domain, :primary => true
# Nous utilisons sudo pour régler les permissions via la methode :chown
# préférez l’utilisation des ACLs si c’est disponible sur votre serveur
set :use_sudo, true
set :keep_releases, 3 # Le nombre de releases à garder après un déploiement réussi
## Symfony2
set :shared_files, ["app/config/parameters.yml"] # Les fichiers à conserver entre chaque déploiement
set :shared_children, [app_path + "/logs", web_path + "/uploads" ,"vendor"] # Idem, mais pour les dossiers
set :use_composer, true
set :update_vendors, true # Il est conseillé de laisser a false et de ne pas faire de ‘composer update’ directement sur la prod
#set :composer_options, "--verbose --prefer-dist" # Permet de spécifier des paramètres supplémentaires à composer, inutile dans notre cas
set :writable_dirs, ["app/cache", "app/logs"] # Application des droits nécessaires en écriture sur les dossiers
set :webserver_user, "www-data" # L’utilisateur de votre serveur web (Apache, nginx, etc.)
set :permission_method, :chown # Dans le cas où vous n’avez pas les ACLs, ne pas oublier de mettre :use_sudo à true
set :use_set_permissions, true
set :dump_assetic_assets, true # dumper les assets
# Pour permettre le deploiement de app_dev.php
#set :clear_controllers, false
#default_run_options[:pty] = true # Si vous avez cette erreur : no tty present and no askpass program specified, alors décommentez
#ssh_options[:forward_agent] = true # Idem que ci-dessus
ssh_options[:port] = "votre port ssh ici, si différent du port 22"
# Permet d’avoir le détail des logs de capistrano, plus facile à débugger si vous rencontrer des erreurs
logger.level = Logger::MAX_LEVEL
before "symfony:cache:warmup", "symfony:doctrine:schema:update"
after "deploy", "deploy:cleanup"
# Et enfin, si jamais vous rencontrez des erreurs de permissions, vous pouvez rajouter ces lignes suivantes :
after "deploy:finalize_update" do
run "sudo chown -R mealsquare:www-data #{latest_release}"
run "sudo chmod -R 777 #{latest_release}/#{cache_path}"
run "sudo chmod -R 777 #{latest_release}/#{log_path}"
run "sudo chmod -R 777 #{latest_release}/#{upload_path}"
end
- Une fois le fichier configurer, lancer un setup du serveur
cap deploy:setup
PS: Cette partie est assez complexe à mettre en oeuvre, n'hésitez pas à me contacter au moindre problème blocant
- Et là le projet est prêt à être déployé
cap deploy
NB: Pour plus d'informations sur Capifony, visitez le site officiel : Capifony.org