Déployer un projet existant __en local__.
===== Méthode de déploiement en local =====
Sous SSH, rendez-vous à la racine du répertoire dans lequel vous avez l’habitude de déployer vos projets et débuter par un **cook update** :
1 |
cook update |
=== Récupérer les fichiers du projet : ===
**A.** Si projet versionné sous Git :
1 |
cook <mon_projet> e:local c.deploy |
**B.** Si projet versionné sous SVN :
1 |
cook <mon_projet> e:local c.deploy:tags/1.2 (où 1.2 est la version du tag) |
=== Récupérer la base de données : ===
**1.** Faire un //dump// de la base :
1 |
cook <mon_projet> e:<serveur> c.db.dump (où <serveur> peut être prod/int/demo...) |
**2.** Faire un //fetch// de la base :
1 |
cook <mon_projet> e:<serveur> c.db.fetch (où <serveur> est __le même__ que celui choisi en **1.**...) |
**3.** Le //fetch// terminé, une url va vous être communiquée. Par exemple :
1 |
/tmp/manbow.prod/prodmanbow@10.128.0.114/prod.2012-10-08.sql.gz |
**3a.** Faire un copier de cette url en prenant garde à :
– retirer tout ce qui se trouve après « <- /data/www..." qui ne fait pas partie de l'url
- **BIEN RESTAURER LA BASE DANS LE PROJET LOCAL (paramètre __e:local__ de la commande) LORS DE L'EXECUTION DE LA COMMANDE QUI VA SUIVRE!!!**
**3b.** Faire un coller de cette url à la suite de la commande suivante :
1 |
cook <mon_projet> e:local c.db.restore:<url_récupérée_après_le_fetch> |
Par exemple : **cook manbow e:local c.db.restore:/tmp/manbow.prod/prodmanbow@10.128.0.114/prod.2012-10-08.sql.gz** === Quelques manipulations pour finir : === **1.** Définir l'url du site :
1 |
ch ssu |
**2.** Pour les e-commerces (notamment ceux avec facettes) :
1 |
ch catalog.compile-catalog ; ch indexer reset |
**3.** Webdeveloper toolbar : Cookies > Delete session cookies
**4.** Ne pas oublier d’ajouter votre nouveau site dans votre //host//.
===== Déployer un projet qui nécessite une clé webfactory =====
Il peut arriver que le déploiement s’arrête et que cook nous affiche une erreur du type //Unable to download : /modules/synchronizer/synchronizer-3.5.1 in local repository//.
Le projet utilise un module payant qui nécessite l’ajout d’une clé webfactory dans les settings de cook.
Les settings de cook, si ils sont identiques par défaut pour chaque projet, peuvent être surchargés pour des besoins spécifiques.
Le fichier //defaults.py// se trouve dans le répertoire :// /home/nom_du_user/projects/nom_du_projet/settings/ //.
ATTENTION : vous pouvez modifier ce fichier pour vos besoins, mais ne commitez pas vos modifications !
===== Mettre à jour les médias =====
Il est possible que le projet ait été déployé sans les médias.
Pour mettre à jour les médias sur votre projet local __depuis__ un serveur distant (demo, prod, int), utiliser c.media.rsync.__to__ :
1 |
cook <mon_projet> e:<source_des_medias> c.media.rsync_to_<destination_des_medias> |
Pour mettre à jour les médias sur un serveur distant (demo, prod, int) __depuis__ votre projet local, utiliser c.media.rsync.__from__ :
1 |
cook <mon_projet> e:<destination_des_medias> c.media.rsync_from_<source_des_medias> |
===== Troubleshooting =====
=== Si la connexion en admin est impossible ===
1 |
ch reset-root-user |
=== Si le site s’affiche mal (pas de css, problème d’url) ===
**1.** Vérifier le contenu du fichier //profile// se trouvant à la racine du site. Par exemple :
1 |
intlangf |
**2.** Se rendre à la racine du répertoire //config// de votre projet.
**3.** Repérer le fichier //project.
**4.** Vérifier dans ce fichier que l’url vers votre projet est correcte.
1 |
<entry name="server-fqdn">url_de_mon_projet</entry> |
===== Méthode de déploiement en intégration ou en production =====
(à mettre au propre choli-bô)
Depuis la branche ‘master’ :
* git st -> on vérifie d’abord que tout a bien été commité.
* git co integration/production
* git pull
* git merge master -> (où ‘master’ est la branche de travail)
* git push
* git co master -> (où ‘master’ est la branche de travail)
* cook update
* cook rbscorpo e:int/e:prod c.deploy
Effectuer un déploiement qui comprend uniquement des changements de fichiers (ne lance aucune commande Change) :
* cook rbscorpo e:int/e:prod c.deploy.dirty
Pour lancer une commande après le c.deploy.dirty (clear-webapp-cache par exemple) :
* cook rbscorpo e/int/e:prod c.cmd: »cwc »
Pour lancer plusieurs commandes après le c.deploy.dirty :
* cook rbscorpo e/int/e:prod c.cmd: »clear-all,compile-all »
cook groupauto e:int c.deploy.dirty:branch=forfait
Connexion impossible à la base de données pendant un déploiement de projet existant en local
Se connecter à mysql :
1 |
mysql -u <username> -p<password> |
1 |
GRANT ALL PRIVILEGES ON <nom_de_la_base_de_données_à_laquelle_le_script_de_déploiement_veut_accéder>.* TO 'admin-webedit'@'localhost' WITH GRANT OPTION; |
Extraction et remplissage d’une base de données
ATTENTION: veiller à créer d’abord une base de données vide sous mysql (C4_manbow dans notre exemple) !
1 |
gunzip -c prod.2016-11-04.sql | mysql -u root -prbs C4_manbow |
1 |
cat prod.2016-11-04.sql | mysql -u root -prbs C4_manbow |