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

WCParis 2016 - WP & GIT : déployer un projet sur plusieurs environnements

By Maxime Culea

WCParis 2016 - WP & GIT : déployer un projet sur plusieurs environnements

Vous êtes intéressé par une solution qui va vous permettre de travailler sur de multiples environnements en simultané et faciliter les déploiements sur ces derniers ? Découvrons en quoi GIT est un must-have, comment il permet d’optimiser et de booster son workflow, et indirectement de "sauvegarder" et "sécuriser" ses sites.

  • 9,529