WordPressをマルチサイト化してgitを導入してみた

2018/08/02 技術関連 Git GitHub Word Press

アイキャッチ

経緯

日頃からWordPressの改修等やっているが理想的な管理方法はないかと思い自分なりに管理環境を構築してみた。

概要

大まかな概要としては以下の通り。

  • WordPressをマルチサイト化
  • ステージング用テーマを作成
  • テーマディレクトリをbranchごとに管理

環境は以下の通り

  • Ubuntu server 18.04.1
  • nginx
  • hhvm
  • mysql
  • WordPress 4.9.7

WordPressのマルチサイト化

まずWordPressのマルチサイト化をしていくが先にnginxの設定をしていく

nginxの設定

nginxでvirtual hostとbasic認証の設定をしていく

.htpasswdの生成

.htpasswdを生成するため下記を実行

sudo htpasswd -c -b {生成する.htpasswdのパスファイル名も含めて} {ユーザ名} {パスワード}
#例
sudo htpasswd -c -b /etc/nginx/conf.d/.htasswd hogehoge hugahuga

basic認証とvirtual hostの設定

basic認証とvirtual hostを設定していく下記に例を示す。

server{
	listen 443 ssl;#今回は443で待ち受けてsslを有効
	server_name stg.siteyui.site;#マルチサイトに使用するドメイン
	index index.php;#インデックスを有効にするファイル
	root /var/www/html;#ルートディレクトリ
	location / {
	       try_files $uri $uri/ /index.php?$args;#WordPresのリライトを有効
		auth_basic "Restricted";#basic認証を有効
		auth_basic_user_file /etc/nginx/conf.d/.htpasswd;#.htpasswdのディレクトリを指定
	}
	location ~ \.php$ {#fast cgiの設定
		include fastcgi_params;
		fastcgi_pass 127.0.0.1:9000;
	}
}

nginxを下記コマンドで再起動して起動すればOK起動しなければ文法ミス等が考えられるので修正。

sudo systemctl restart nginx

WordPressのマルチサイト化

次にWordPressをマルチサイト化してステージング環境を作成していく。

WordPressのマルチサイトを有効化

まずマルチサイトの有効かだがwp-config.phpに以下の一行を追加/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */の上あたりに追加します。

define('WP_ALLOW_MULTISITE', true);
/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */

次にマルチサイト導入の為一旦プラグインを全て無効かしてから管理画面で左メニューのツール→ネットワークの設置クリックします。そして今回はサブディレクトリを選択サイトネットワーク名等を入力してインストールをクリック画面が変わったら案内通り下記を参考にwp-configを編集※下記のhtaccessは今回はnginxの為無視してください。

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'siteyui.site');#お使いのサイトのドメインによってかわります
define('PATH_CURRENT_SITE', '/');#こちらもWordPressの構成によってかわります
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
/* 編集が必要なのはここまでです ! WordPress でブログをお楽しみください。 */

再度ログインしていただいてプラグインを有効かして既存のサイトが表示されていればOKですまたカスタム投稿タイプ等を使用していて記事が表示できなくなった場合フロントでのリライトを無効かすると治ることがあります。

ステージング用サイトの構築

今回はプラグインを使用して構築しました。Clonerこちらをインストール後左メニューのサイトを開きステージング環境を作成したいサイトの下のCloneをクリックCreate a new Siteを選択その下にサブドメイン(※フルドメインは不要です)を入力Clone Siteを実行。しばらくすると処理が始まり管理画面が表示されたら完了です。

次にftpなりで本番サイトで使用しているテーマを同じthemesディレクトリ内に複製します。(※この時サイトネットワークから有効化しないと使用できない場合があります)そしたらそのテーマをステージングサイトで有効化します。

Gitの導入

次に本番テーマをmaster、ステージングテーマをstgとしてブランチを作りgitを構築していきます。

gitの導入とgithubへのpush

先にGitHubでリポジトリを作成しておいてください。作成したらsshで入り本番用テーマのディレクトリ以下をgit管理しますGitHubの案内通りgitを導入していきます下記に例を示す。

git init
git add .
git commit -m "first commit"
git remote add origin https://github.com/16dyui/mywordpress.git #作成したリポジトリのurl
git push -u origin master

ステージングブランチの作成

次にステージングブランチを作成していきます。sshでstgサイトで有効にしたテーマディレクトリに移動してくださいそこで下記のようなコマンドを実行してください。

git init
git add .
git commit -m "my first stg"
git remote add origin https://github.com/16dyui/mywordpress.git #作成したリポジトリのurl
git branch -m stg #現在のブランチをstgにリネーム
git push origin stg #stgをリモートにpush

まとめ

問題発生を防ぐ為サーバーを分けたりする場合が多いですが今回は簡易的にWordPressをgit管理する方法を紹介させていただきました。このようにマルチサイトを利用することでより簡易的にWordPressをGit管理することができます。