Petit rappel : ce topic a été réalisé de manière bénévole par kazhar. :wink:
Je vois beaucoup de webmasters qui gèrent leur site perso en déployant celui-ci via FTP.
Je vais tenter dans cet article de démontrer pourquoi ce genre de technique est dépassée, sujette à des erreurs et fortement à proscrire.
Note : la technique de déploiement que je vais donner requiert d'avoir un accès SSH sur votre site.
Tous les hébergeurs ne le proposent pas en mutualisé. Mais les meilleurs le font, tel que OVH.
Si vous êtes en VPS, RPS ou dédié, vous avez un accès SSH. Il vous suffit de l'utiliser.
Qu'entends-t-on par déploiement ?
A l'heure actuelle, vous faites peut-être les modifications sur votre site directement en production. Lorsque vous avez une erreur, vous la corriger directement en production et vos utilisateurs peuvent suivre l'avancée de votre développement en temps réel.
Pas super cool.
L'idée est donc bien évidemment de développer en local.
Quand c'est possible, tester sur une machine de staging (qui n'a pas forcément besoin d'être distante. Une vieille machine chez vous fera très bien l'affaire).
Puis une fois que vos mises à jour sont faites et que vous n'avez aucun bug, vous pouvez passer en production.
Mais pourquoi ne pas utiliser le FTP ?
Lorsque vous mettez votre application à jour, il n'y a pas forcément que les fichiers à envoyer. Il peut y avoir la base de données à mettre à jour, des fichiers à créer.
Voir redémarrer le serveur (PHP ne le requiert pas. Mais c'est nécessaire pour des applications Python ou Ruby).
Toute action manuelle peut amener à des erreurs, des oublis et donc des bugs sur votre application. Pas cool.
Pour cette raison, utiliser un simple accès FTP en envoyant manuellement ses fichiers est à prohiber.
Ok et je fais comment ?
Haaave you met Capistrano ?
Capistrano est un outil de déploiement d'application (ce n'est pas le seul. Mais c'est le meilleur).
L'idée est simple : vous rédigez un script (en Ruby) contenant toutes les actions de déploiement de votre application.
Et lorsque vous exécutez ce script, celui-ci se connecte à votre machine de production, réalise les actions nécessaires et se déconnecte.
En soi, capistrano serait utilisable pour toute tâche un petit peu répétitive à exécuter sur une machine linux.
Une ou plusieurs d'ailleurs puisqu'il gère sans problème les machines multiples.
Tout d'abord, installons Capistrano. Pour cela, vous devez avoir auparavant installé Ruby et Rubygems.
Toutes les distributions linux les ont dans leurs paquets. Pour les windows, c'est ici et ici que ça se passe.
Ecrivons par exemple une tâche simple :
Ici, je vous fournis l'une de mes tâches pour un projet ruby on rails. Mais il suffit de créer ses propres tâches pour faire ce que vous désirez.
Que faisons-nous ?
Tous les :set en haut du document sont des définitions de variables de configuration.
Le :role définit notre serveur. Il faut en créer un pour chacune des machines sur lesquelles déployer votre application.
Puis nous entrons dans les commandes.
La tâche "default" sera appellée automatiquement. Ici, le project est versionné avec git et hébergé sur github. Mais Capistrano fonctionne avec de multiples scm (git, mercurial et svn).
La commande dans la tâche default mets à jour le code source de l'application.
Puis vous voyez la tâche :syncdb, qui est exécutée après la tâche default (cf. "after :deploy, :syncdb").
Cette méthode permet de mettre à jour la base de données avec les modifications déjà faites (il s'agit d'un projet rails. Donc j'utilise les migrations. Mais Zend Framework et Symfony possèdent également des fonctionnalités similaires).
Enfin on vois la tâche :restart exécutée après le syncdb. Celle-ci permet de redémarrer le projet et donc de prendre en compte les modifications données.
Il n'y a plus qu'à exécuter le script pour que votre application soit mise à jour.
Ou deploy.rb est le nom de votre script de déploiement.
Ainsi en "perdant" un peu de temps à créer ce genre de script, vous en gagnez beaucoup en évitant de multiples erreurs de mise à jour de votre application et améliorez donc l'image professionnelle de votre site web en étant sur de ne pas afficher de message d'erreur à vos utilisateurs.
Si vous avez apprécié cet article, n'hésitez pas à cliquer sur
.
Et si vous avez des commentaires/modifications, le sujet n'est pas fermé
Je vois beaucoup de webmasters qui gèrent leur site perso en déployant celui-ci via FTP.
Je vais tenter dans cet article de démontrer pourquoi ce genre de technique est dépassée, sujette à des erreurs et fortement à proscrire.
Note : la technique de déploiement que je vais donner requiert d'avoir un accès SSH sur votre site.
Tous les hébergeurs ne le proposent pas en mutualisé. Mais les meilleurs le font, tel que OVH.
Si vous êtes en VPS, RPS ou dédié, vous avez un accès SSH. Il vous suffit de l'utiliser.
Qu'entends-t-on par déploiement ?
A l'heure actuelle, vous faites peut-être les modifications sur votre site directement en production. Lorsque vous avez une erreur, vous la corriger directement en production et vos utilisateurs peuvent suivre l'avancée de votre développement en temps réel.
Pas super cool.
L'idée est donc bien évidemment de développer en local.
Quand c'est possible, tester sur une machine de staging (qui n'a pas forcément besoin d'être distante. Une vieille machine chez vous fera très bien l'affaire).
Puis une fois que vos mises à jour sont faites et que vous n'avez aucun bug, vous pouvez passer en production.
Mais pourquoi ne pas utiliser le FTP ?
Lorsque vous mettez votre application à jour, il n'y a pas forcément que les fichiers à envoyer. Il peut y avoir la base de données à mettre à jour, des fichiers à créer.
Voir redémarrer le serveur (PHP ne le requiert pas. Mais c'est nécessaire pour des applications Python ou Ruby).
Toute action manuelle peut amener à des erreurs, des oublis et donc des bugs sur votre application. Pas cool.
Pour cette raison, utiliser un simple accès FTP en envoyant manuellement ses fichiers est à prohiber.
Ok et je fais comment ?
Haaave you met Capistrano ?
Capistrano est un outil de déploiement d'application (ce n'est pas le seul. Mais c'est le meilleur).
L'idée est simple : vous rédigez un script (en Ruby) contenant toutes les actions de déploiement de votre application.
Et lorsque vous exécutez ce script, celui-ci se connecte à votre machine de production, réalise les actions nécessaires et se déconnecte.
En soi, capistrano serait utilisable pour toute tâche un petit peu répétitive à exécuter sur une machine linux.
Une ou plusieurs d'ailleurs puisqu'il gère sans problème les machines multiples.
Tout d'abord, installons Capistrano. Pour cela, vous devez avoir auparavant installé Ruby et Rubygems.
Toutes les distributions linux les ont dans leurs paquets. Pour les windows, c'est ici et ici que ça se passe.
Code:
gem install capistrano
Ecrivons par exemple une tâche simple :
Code:
set :application, "webrankinfo"
set :user, "kazhar"
set :scm_username, user
set :repository, "git://github.com:dmathieu/refsite-php.git"
set :deploy_to, "/home/git/refstats"
set :scm, :git
set :domain, "dmathieu.com"
role :app, domain, :primary => true
# Si vous utilisez un port SSH différent de celui par défaut :
# ssh_options[:port] = 22
# --------
# Commands
# --------
namespace :deploy do
desc "Update project from repository"
task :default do
stream "cd #{deploy_to}; git pull"
end
end # Deploy
desc "Make sure database is in sync with models"
task :syncdb do
stream "cd #{deploy_to}; rake db:migrate RAILS_ENV='production'"
end
after :deploy, :syncdb
desc 'Restart the application'
task :restart do
stream "cd #{deploy_to}; touch tmp/restart.txt"
end
after :syncdb, :restart
Ici, je vous fournis l'une de mes tâches pour un projet ruby on rails. Mais il suffit de créer ses propres tâches pour faire ce que vous désirez.
Que faisons-nous ?
Tous les :set en haut du document sont des définitions de variables de configuration.
Le :role définit notre serveur. Il faut en créer un pour chacune des machines sur lesquelles déployer votre application.
Puis nous entrons dans les commandes.
La tâche "default" sera appellée automatiquement. Ici, le project est versionné avec git et hébergé sur github. Mais Capistrano fonctionne avec de multiples scm (git, mercurial et svn).
La commande dans la tâche default mets à jour le code source de l'application.
Puis vous voyez la tâche :syncdb, qui est exécutée après la tâche default (cf. "after :deploy, :syncdb").
Cette méthode permet de mettre à jour la base de données avec les modifications déjà faites (il s'agit d'un projet rails. Donc j'utilise les migrations. Mais Zend Framework et Symfony possèdent également des fonctionnalités similaires).
Enfin on vois la tâche :restart exécutée après le syncdb. Celle-ci permet de redémarrer le projet et donc de prendre en compte les modifications données.
Il n'y a plus qu'à exécuter le script pour que votre application soit mise à jour.
Code:
cap deploy -f deploy.rb
Ainsi en "perdant" un peu de temps à créer ce genre de script, vous en gagnez beaucoup en évitant de multiples erreurs de mise à jour de votre application et améliorez donc l'image professionnelle de votre site web en étant sur de ne pas afficher de message d'erreur à vos utilisateurs.
Si vous avez apprécié cet article, n'hésitez pas à cliquer sur
Et si vous avez des commentaires/modifications, le sujet n'est pas fermé