WP & GIT : déployer un projet sur plusieurs environnements
Maxime Culea
@MaximeCulea
maximeculea.fr
WordPress & GIT
@MaximeCulea
WC Paris 2016
GIT : fonctionnalités
WordPress & GIT
WC Paris 2016
@MaximeCulea
GIT : fonctionnalités
OUTIL DE VERSIONNING
WordPress & GIT
WC Paris 2016
@MaximeCulea
GIT : fonctionnalités
OUTIL DE VERSIONNING
d. sécurisation
b. sauvegarde
a. historique / comparaison
c. gestion des évolutions
WordPress & GIT
WC Paris 2016
git clean -df
git checkout -- .
@MaximeCulea
GIT : fonctionnalités
OUTIL collaboratif
WordPress & GIT
WC Paris 2016
@MaximeCulea
GIT : fonctionnalités
OUTIL collaboratif
c. historique de chaque contributeurs
b. édition en quasi-simultané
a. travail à plusieurs
WordPress & GIT
WC Paris 2016
@MaximeCulea
GIT : fonctionnalités
OUTIL de déploiement
WordPress & GIT
WC Paris 2016
@MaximeCulea
GIT : fonctionnalités
OUTIL de déploiement
c. facilité
b. rapidité
a. maîtrise du code
WordPress & GIT
WC Paris 2016
git pull
@MaximeCulea
Gestion
multi-environnements
1. Configuration
2. Utilisation
WordPress & GIT
WC Paris 2016
@MaximeCulea
multi-env : Configuration
1. Capistrano
WordPress & GIT
WC Paris 2016
2. WP-Config mutualisé
@MaximeCulea
MULTI-ENV : configuration
WordPress & GIT
WC Paris 2016
Capistrano
dev
qualif
preprod
My commit
Outil automatisé de déploiement
Serveur de dev
Serveur de qualif
Serveur de preprod
@MaximeCulea
Capistrano
GIT 1.8 ou supérieur
Ruby
WordPress & GIT
WC Paris 2016
https://github.com/capistrano/capistrano
MULTI-ENV : Configuration
Prérequis
Outil automatisé de déploiement
Accès SSH
@MaximeCulea
WP-Config Mutualisé
1. Identification du serveur
2. Création d'un "WP-Config dédié"
3. Mutualisation du WP-Config
WordPress & GIT
WC Paris 2016
https://github.com/BeAPI/wp-config-multi-env
MULTI-ENV : Configuration
@MaximeCulea
MULTI-ENV : Configuration : wp-config mutualisé
Identification du serveur
WordPress & GIT
WC Paris 2016
touch env_dev
Créer un fichier vierge sur le serveur à la racine du serveur
Avec accès à la racine du serveur
@MaximeCulea
MULTI-ENV : CONFIGURATION : WP-CONFIG MUTUALISÉ
Identification du serveur
WordPress & GIT
WC Paris 2016
touch env_dev
Créer un fichier vierge sur le serveur à la racine du projet
Sans accès à la racine du serveur
1
2
Ajouter "env_dev" au gitignore
@MaximeCulea
MULTI-ENV : CONFIGURATION : WP-CONFIG MUTUALISÉ
Création d'un "WP-Config dédié"
WordPress & GIT
WC Paris 2016
@MaximeCulea
MULTI-ENV : CONFIGURATION : WP-CONFIG MUTUALISÉ
Mutualisation du WP-Config
WordPress & GIT
WC Paris 2016
if ( 'dev_server.fr' === $_SERVER['SERVER_NAME'] ) {
if ( is_file( dirname( __FILE__ ) . '/../wp-config-dev.php' ) ) {
require( dirname( __FILE__ ) . '/../wp-config-dev.php' );
} elseif ( is_file( dirname( __FILE__ ) . '/wp-config-dev.php' ) ) {
require( dirname( __FILE__ ) . '/wp-config-dev.php' );
} else {
die( 'No dev config' );
}
return true;
} elseif ( 'qualif_server.fr' === $_SERVER['SERVER_NAME'] ) {
if ( is_file( dirname( __FILE__ ) . '/../wp-config-qualif.php' ) ) {
require( dirname( __FILE__ ) . '/../wp-config-qualif.php' );
} elseif ( is_file( dirname( __FILE__ ) . '/wp-config-qualif.php' ) ) {
require( dirname( __FILE__ ) . '/wp-config-qualif.php' );
} else {
die( 'No qualif config' );
}
return true;
} elseif ( 'preprod_server.fr' === $_SERVER['SERVER_NAME'] ) {
if ( is_file( dirname( __FILE__ ) . '/../wp-config-preprod.php' ) ) {
require( dirname( __FILE__ ) . '/../wp-config-preprod.php' );
} elseif ( is_file( dirname( __FILE__ ) . '/wp-config-preprod.php' ) ) {
require( dirname( __FILE__ ) . '/wp-config-preprod.php' );
} else {
die( 'No preprod config' );
}
return true;
}
Par détection des urls
@MaximeCulea
MULTI-ENV : CONFIGURATION : WP-CONFIG MUTUALISÉ
Mutualisation du WP-Config
WordPress & GIT
WC Paris 2016
if ( is_file( dirname( __FILE__ ) . '/../env_dev' ) ) {
if ( is_file( dirname( __FILE__ ) . '/../wp-config-dev.php' ) ) {
require( dirname( __FILE__ ) . '/../wp-config-dev.php' );
} elseif ( is_file( dirname( __FILE__ ) . '/wp-config-dev.php' ) ) {
require( dirname( __FILE__ ) . '/wp-config-dev.php' );
} else {
die( 'No dev config' );
}
return true;
} elseif ( is_file( dirname( __FILE__ ) . '/../env_qualif' ) ) {
if ( is_file( dirname( __FILE__ ) . '/../wp-config-qualif.php' ) ) {
require( dirname( __FILE__ ) . '/../wp-config-qualif.php' );
} elseif ( is_file( dirname( __FILE__ ) . '/wp-config-qualif.php' ) ) {
require( dirname( __FILE__ ) . '/wp-config-qualif.php' );
} else {
die( 'No qualif config' );
}
return true;
} elseif ( is_file( dirname( __FILE__ ) . '/../env_preprod' ) ) {
if ( is_file( dirname( __FILE__ ) . '/../wp-config-preprod.php' ) ) {
require( dirname( __FILE__ ) . '/../wp-config-preprod.php' );
} elseif ( is_file( dirname( __FILE__ ) . '/wp-config-preprod.php' ) ) {
require( dirname( __FILE__ ) . '/wp-config-preprod.php' );
} else {
die( 'No preprod config' );
}
return true;
}
Avec accès à la racine du serveur
@MaximeCulea
MULTI-ENV : CONFIGURATION : WP-CONFIG MUTUALISÉ
Mutualisation du WP-Config
WordPress & GIT
WC Paris 2016
if ( is_file( dirname( __FILE__ ) . '/env_dev' ) ) {
if ( is_file( dirname( __FILE__ ) . '/../wp-config-dev.php' ) ) {
require( dirname( __FILE__ ) . '/../wp-config-dev.php' );
} elseif ( is_file( dirname( __FILE__ ) . '/wp-config-dev.php' ) ) {
require( dirname( __FILE__ ) . '/wp-config-dev.php' );
} else {
die( 'No dev config' );
}
return true;
} elseif ( is_file( dirname( __FILE__ ) . '/env_qualif' ) ) {
if ( is_file( dirname( __FILE__ ) . '/../wp-config-qualif.php' ) ) {
require( dirname( __FILE__ ) . '/../wp-config-qualif.php' );
} elseif ( is_file( dirname( __FILE__ ) . '/wp-config-qualif.php' ) ) {
require( dirname( __FILE__ ) . '/wp-config-qualif.php' );
} else {
die( 'No qualif config' );
}
return true;
} elseif ( is_file( dirname( __FILE__ ) . '/env_preprod' ) ) {
if ( is_file( dirname( __FILE__ ) . '/../wp-config-preprod.php' ) ) {
require( dirname( __FILE__ ) . '/../wp-config-preprod.php' );
} elseif ( is_file( dirname( __FILE__ ) . '/wp-config-preprod.php' ) ) {
require( dirname( __FILE__ ) . '/wp-config-preprod.php' );
} else {
die( 'No preprod config' );
}
return true;
}
Sans accès à la racine du serveur
@MaximeCulea
MULTI-ENV : Utilisation
WordPress & GIT
WC Paris 2016
1. La livraison
2. Le déploiement
Métaphore :
Le livreur de pizza à trouvé votre adresse et il sonne à la porte
Vous lui ouvrez la porte, prenez la
ou pas !
pizza et vous le payez
@MaximeCulea
MULTI-ENV : Utilisation
WordPress & GIT
WC Paris 2016
La livraison
dev
qualif
preprod
My branch
git pull
@MaximeCulea
git checkout qualif
git merge my-branch
git push
MULTI-ENV : Utilisation
WordPress & GIT
WC Paris 2016
Le déploiement
GIT & SSH
Prérequis :
- Accès SSH au serveur
- GIT d'installé
ssh username@hostname
cd public_html
git pull
@MaximeCulea
MULTI-ENV : Utilisation
WordPress & GIT
WC Paris 2016
Le déploiement
GIT
extension : Revisr
* Gestion GIT
* Backup BDD
@MaximeCulea
MULTI-ENV : Utilisation
WordPress & GIT
WC Paris 2016
Le déploiement
FTP
A la mano en ligne de commande :
git archive --format=zip -9 1.1.7 > project-full-1-1-7.zip
git archive -o project-diff-1-1-7.zip 1.1.7 $(git diff
--name-only --diff-filter=ACMRT 1.0.1)
git diff --name-status --diff-filter=D 1.0.1 1.1.7
-- > deleted-files-1-1-7.txt
1. Archive entière
2. Archive différentielle
a.
b.
@MaximeCulea
MULTI-ENV : Utilisation
WordPress & GIT
WC Paris 2016
Le déploiement
FTP
Dploy
Automatiquement avec
@MaximeCulea
Questions/remarques ?
Il faut être bien sage ou bien borné, pour ne rien changer à ses pensées.
或睿智过人,或愚昧无知,才能保持自己的思想不被人改变
WordPress & GIT
WC Paris 2016
Alors utilisez GIT !
@MaximeCulea
Ressources
- l'article : http://www.maximeculea.fr/wordpress-et-git-un-wp-config-mutualise/
- les diapos : https://slides.com/maximeculea/wp-et-git-deployer-un-projet-sur-plusieurs-environnements/
- code : https://github.com/BeAPI/wp-config-multi-env
WordPress & GIT
WC Paris 2016
- Tuto GIT :
- WP-Config mutualisé :
@MaximeCulea
- SVN to GIT : https://github.com/nirvdrum/svn2git
- http://dev73.tweetpress.fr/dev/git-cest-la-vie.html
- https://www.git-tower.com/learn/git/ebook/command-line/basics/what-is-version-control