17
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

最速でWordPress環境を構築してみる

Last updated at Posted at 2015-12-24

はじめに

日々WordPressです。
新しい案件がスタートしたり、案件の相談が来たり、自作のプラグインを試したりと新しいWordPress環境が必要になることってありますよね。

できる限り自動化して「俺の中ではこれが最速だ!」って思えるぐらいになりました。
同業の方の手助けになれば幸いです。

どれぐらい早いの?

  1. ディレクトリ掘る
  2. コマンド打つ
  3. ブラウザで確認できる(゚∀゚)

1分ぐらいです。

環境

Mac OX Xのローカル環境を想定しています。
ローカルのホスト名は
aramaki.l2tp.org
としてあります。

対抗馬は?

他に素早く環境構築ができるものとしてはVagrant、MAMP、レンタルサーバです。

  • Vagrant
    Vagrantいいですね。でもシェル環境とかも一緒に整えなくてはならないので気がかりです。あと仮想マシンのオーバーヘッド分が重いです。

  • MAMP
    MAMPもすごくいいです。MAMPからコンフィグレーションしてもいいかな、と思っています。ここでのやり方と似ています。

  • レンタルサーバ
    外部に置くので用途違いです。ローカルで開発してお客さんに見せたりするときにはもちろん使います。

それから他に似たような趣旨として以下があります。すごく洗練されていて憧れます。
WordPressプラグインのユニットテスト用のWordPress環境をセットアップする

概要

以下のことを行います。

  • ローカルでウェブサーバ+PHP+MySQLを動かす
  • フォルダを作ったらバーチャルホストで認識させる
  • Hostsファイルを書き換えなくてもアクセスできるようにする
  • WordPressのダウンロード、初期設定、プラグインインストールをする

大まかに以下のパッケージ、仕組みを利用します。

  • Apache, PHP, MySQL (Homebrew)
  • ApacheのVirtualDocumentRoot
  • DnsmasqでDNSのワイルドカード設定
  • DNS参照先の変更
  • wp-cli

作業

Apache, PHP, MySQL (Homebrew)

Apache、PHP、MySQLを設定します。この辺りは他にも情報がたくさんありますね。

$ xcode-select --install
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ brew tap homebrew/apache
$ brew tap homebrew/php
$ brew install httpd24 mysql php56

OS X YosemiteにHomebrew + DropboxでPHP環境構築 〜Apache, PHP, MySQL, ComposerをインストールしてFuelPHPの設定まで

やっていきます。

ApacheのVirtualDocumentRootを設定する

ApacheにはVirtualDocumentRootという機能があります。
通常のバーチャルホストでは

hoge.example.com => /var/www/hoge.example.com
fuga.example.com => /var/www/fuga.example.com

といった風に一つずつ設定する必要があります。
ですがVirtualDocumentRootを利用すると

*.example.com => /var/www/*.exmaple.com

(*は何でも良い)

といった風に変数として扱えます。
以下では /Users/yousan/Sites にテスト環境のドメイン名でフォルダを設置する、という風に設定してあります。

/usr/local/etc/apache2/2.4/extra/httpd-vhosts-mass.conf
UseCanonicalName Off

# include the server name in the filenames used to satisfy requests
VirtualDocumentRoot /Users/yousan/Sites/%0/

(このファイルは新規作成です)

/usr/local/etc/apache2/2.4/httpd.conf
# Virtual hosts
#Include /usr/local/etc/apache2/2.4/extra/httpd-vhosts.conf
Include /usr/local/etc/apache2/2.4/extra/httpd-vhosts-mass.conf

ちなみにnginxでも同様のことが行えるようです。
Nginxでバーチャルドキュメントルート

ここまでの作業で

hoge.example.com => /Users/yousan/Sites/hoge.example.com

というバーチャルホストが自動的に設定されるようになりました。
さらに具体的には、ローカルのホスト名が aramaki.l2tp.org ですので、

anken1.aramaki.l2tp.org => /Users/yousan/Sites/anken1.aramaki.l2tp.org
anken2.aramaki.l2tp.org => /Users/yousan/Sites/anken2.aramaki.l2tp.org
plugintest1.aramaki.l2tp.org => /Users/yousan/Sites/plugintest1.aramaki.l2tp.org
plugintest2.aramaki.l2tp.org => /Users/yousan/Sitesplugintest2.aramaki.l2tp.org
...

といった具合に環境を増やすことが出来ます。
しかしこれでは

anken1.aramaki.l2tp.org

にブラウザでアクセスして試験するにはhostsファイルを書き換えなければいけません
Macでhostsファイルを変更・反映

続いてこの作業を自動化します。

DnsmasqでDNSのワイルドカード設定

ローカルのホスト名が aramaki.l2tp.org でしたので、*.aramaki.l2tp.org という名前をすべてローカルのIPアドレスで解決できるようにしましょう。

Dnsmasqをインストールします

$ brew install dnsmasq
$ sudo cp /usr/local/opt/dnsmasq/*.plist /Library/LaunchAgents
$ sudo cp /usr/local/opt/dnsmasq/*.plist /Library/LaunchAgents

続いて設定です。

/usr/local/etc/dnsmasq.conf
resolv-file=/etc/resolv.conf.dnsmasq
address=/.aramaki.l2tp.org/127.0.0.1
/etc/resolv.conf.dnsmasq
nameserver 8.8.8.8

この状態で、

.aramaki.l2tp.orgで終わるドメインは127.0.0.1に
それ以外は8.8.8.8 (Google DNS)で解決する

となりました。(もちろん、プロバイダや社内のDNSサーバなど適宜変更してください)

このローカルにインストールしたDnsmasqを利用して名前引きを試験してみます。

$ nslookup hoge.aramaki.l2tp.org 127.0.0.1
Server:         127.0.0.1
Address:        127.0.0.1#53

Name:   hoge.aramaki.l2tp.org
Address: 127.0.0.1

$ nslookup qiita.com 127.0.0.1
Server:         127.0.0.1
Address:        127.0.0.1#53

Non-authoritative answer:
Name:   qiita.com
Address: 54.248.127.202

ちゃんと解決できましたね。hoge.aramaki.l2tp.orgはローカルに、qiita.comは解決できないので8.8.8.8に聞きに行ってくれたようです。

DNS参照先の変更

しかしこのままではDHCPなどで取得したDNSサーバを参照しますのでそれを変更します。

Mac OS XではGUIでDNS設定が出来ます。
「システム環境設定 > ネットワーク > Wi-Fi > DNS」
から 127.0.0.1 に設定します。

Screen Shot 2015-12-24 at 3.19.05 PM.png

Wi-Fi以外の環境であればコマンドで設定します。(Wi-Fiでももちろん設定できます)

$ sudo networksetup -setdnsservers "iPhone USB" 127.0.0.1

Mac OS XをUSBでテザリングしたときにDNSサーバを変更する方法

WordPressのインストール

WordPressのインストールも自動化が進みました。
wp-cliが優秀です。

エンジニアな自分がWordPressで何度も調べたり感心したりした事#wp-cli

$ brew install wp-cli

これで wp コマンドが使えるようになりました。

スクリプトを作成します。
次のスクリプトは

  • WordPressのダウンロード
  • WordPressのインストール(サイトのタイトル、初期ユーザ)
  • DB設定
  • confにデバッグを書き出す
  • プラグインのインストール、有効化

を行います。パスワードなどは適宜換えてください。

/Users/yousan/sh/wphere
#!/bin/bash
DBHOST=localhost
DBNAME=yousan_wordpress
DBUSER=dbuserhere
DBPASS=dbpasshere
WPUSER=yousan
WPPASS=userpasswordhere
WPMAIL=yousan@l2tp.org

PWD=`pwd`
DOMAIN=${PWD##*/}
IFS='.'
set -- ${DOMAIN}
PREFIX=$1_
IFS=','

wp core download --locale=ja

wp core config \
   --dbname=${DBNAME} \
   --dbuser=${DBUSER} \
   --dbpass=${DBPASS} \
   --dbhost=${DBHOST} \
   --dbprefix=${PREFIX} \
   --extra-php <<PHP
    define( 'WP_DEBUG', true );
    define( 'WP_DEBUG_LOG', true );
    define( 'FS_METHOD', 'direct' );
PHP

wp core install \
   --url=${DOMAIN} \
   --title=${DOMAIN} \
   --admin_user=${WPUSER} \
   --admin_password=${WPPASS} \
   --admin_email=${WPMAIL}

wp plugin install \
   add-page-from-template \
   advanced-custom-fields \
   backwpup \
   custom-post-type-permalinks \
   custom-post-type-ui \
   debug-bar \
   debug-bar-console \
   duplicate-post \
   fg-debug-bar-rewrite-rules \
   post-type-switcher \
   show-current-template \
   --activate

以上です。

他にもこんなの便利だよ、っていうのを教えてもらえると嬉しいです。

17
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?