wordpress MAMP を使ってローカル WordPress(マルチサイト) 環境を構築

2013年10月12日

MAMP を使ってローカル環境にマルチサイトの WordPress を構築した際に気づいたことのメモ。WordPress のローカル環境へのインストール、MAMP のインストールや基本的な設定は色々なところで書かれているので省略。

MAMP のインストールや基本的な設定等に関する参考サイト

Apache と MySQL のポート設定を MAMP の起動画面の環境設定から Apache と MySQL の標準ポートに設定(Apache:80, MySQL:3306)。

ドキュメントルートの変更

MAMP の http のドキュメントルートはデフォルトでは /Applications/MAMP/htdocs になっているのでこれを自分の「書類」の下に変更。以下の例では「/Users/ユーザー名/web(フォルダ名)/xxxx(フォルダ名)」にファイルを配置。

httpd.conf の確認(編集)

/Applications/MAMP/conf/apache/httpd.conf を必要があれば修正。40行目あたりが以下のようになっていることを確認。

# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80

524行目あたりの # Virtual Hosts の Include がコメントアウトされていないことを確認。

# Virtual hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

httpd-vhosts.conf の編集

続いて好きなフォルダをドキュメントルートにするために /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf を編集。「httpd-vhosts.conf」を開くと以下のようになっている。

#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# <URL:http://httpd.apache.org/docs/2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/Applications/MAMP/Library/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/Applications/MAMP/Library/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>

ServerAdmin、ErrorLog、CustomLog は指定しなくても問題無さそうなので以下のような内容を「httpd-vhosts.conf」の最後に追記。

<VirtualHost *:80>
    DocumentRoot "/Users/ユーザー名/documents/web/xxxx"
    ServerName local-xxxx.com 
</VirtualHost>
<Directory "/Users/ユーザー名/documents/web/xxxx">
    Options FollowSymLinks Includes
    AllowOverride All
    Order deny,allow
    Allow from all
</Directory>

これで「http://local-xxxx.com」にアクセスすると「/Users/ユーザー名/documents/web/xxxx」がドキュメントルートとして認識されサイトが表示されるようになる(但し、次項の hosts ファイルの編集が必要)。「http://local-xxxx.com」の「local-」は単に区別しやすくするためのものでなんでも構わない。複数のサイトがある場合はその分だけ増やす。

<Directory>~</Directory>を記述しないとマルチサイトの場合、404 エラーで表示されなかった。

hosts ファイルの編集

hosts ファイルは「/private/etc/hosts」にあるので、それを開いて最後の行に「127.0.0.1 local-xxxx.com」を追加。

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1  localhost
255.255.255.255  broadcasthost
::1             localhost 
fe80::1%lo0  localhost
127.0.0.1 local-xxxx.com

Finderからシステムファイルにアクセス

  • Finderからシステムファイルにアクセスするには Finder を立ち上げ、メニューバーにある「移動」→「フォルダへ移動」を選択。
  • フォルダの場所に /private/etc/ と入力して「移動」ボタンをクリック。
  • /private/etc/ 内のファイルが表示される。
  • テキストエディタで開く前に、アクセス権限を変更する必要があるので該当ファイルの「情報を見る」を選択。
  • アクセス権は「読み出しのみ」となっているので、右下にある「鍵のマーク」をクリックしてパスワードを入力して「OK」ボタンを押す。
  • everyone の「読み出しのみ」をクリックして「読み/書き」に変更。

.htaccess の編集

必要であれば、.htaccess を編集する。但し、Mac ではデフォルトの状態だとドットから始まるファイルは非表示になっているので、ターミナルを起動して以下のコマンドを入力。

defaults write com.apple.finder AppleShowAllFiles true

Finder をリフレッシュするために、以下のコマンドを入力。

killall Finder

ファイルを再度非表示にしたい場合は同様にターミナルに以下のコマンドを入力。

defaults write com.apple.finder AppleShowAllFiles false
killall Finder