タイトルの通りなのですが、Mac上でApacheやMySQLなんかの環境作るのに便利なMAMPというのがあるみたいですが、あういうお手軽なやつだと自分の勉強にならないので MacPorts使ってビルドしながら実際に環境構築しました。
途中色々うまくいかない所があったのですが、そのおかげで、ApacheやWordPressの構造について自分なりに理解が深まったように思います。
ローカルのMacにWordPress環境を作ることにした背景について
5月から毎週1時間x3回で社内の人向けに勉強会をしています。
説明するネタに一時期困ったこともありましたが、自分なりに中長期の目標というかテーマが見えてきたこともあってだんだんやりやすくなってきました。
勉強会を3回に分けているのは
・開発系のトピックス
・インフラ系のトピックス
・Webデザイナー系のトピックス
としているからなのですが、ある程度ベースとなる話をそれぞれのトピックスでしてきたのと、そろそろDBがからむ話を、インフラ系と開発系で行う流れになっていたことに加えて、Webデザイナー系の勉強会で
「最近、案件でCMSっていうのを見るけどあれって何?」
という質問が出たこともあるので、だったらしばらくの間、CMS関連の話をしていけば、それぞれのトピックスで共通となる部分もあるし、ちょっと楽出来そうと思ったので、自分のMac上にWordPress環境を作ることにしたというのが背景です。
今回取り上げている「はまった」ポイントは3つ
通常だったらレンタルサーバー上のLAMP環境にWordPressインストールして、ブログを運営するっていうのが王道かもしれないので、通常の人と目的が異なる所はあるけれど、環境構築において
- 「お使いのサーバーの PHP では MySQL 拡張を利用できないようです。」のエラー
- WordPress使えているけど、index.phpが表示されない件
- .htaccessとhttpd.confの設定について
という部分でうまくいかずにはまりました。
そのためこの3つについてまとめておこうと思います。
なお、自分のMacの環境はこんな感じです
OS | Mac OSX 10.5.8 |
MacPorts | 1.710(port versionとコマンド入力した結果) |
Apache | apache2 @2.2.11_0+darwin_9 |
PHP | php5 @5.3.0_1+apache2+macosx+mysql5+pear |
MySQL | mysql5 @5.0.84_0 |
利用したWordPressのバージョン | 3.0 WordPress日本語サイトからダウンロード |
「お使いのサーバーの PHP では MySQL 拡張を利用できないようです。」のエラー
最初何も考えず
sudo port install php5
としてしビルドしたのですが、PHPからMySQL使うのにPHP:MySQLというのが必要らしいということを後で知ったのでMacOSX 10.4にMySQL5,Apache2,PHP5をインストール(MacPortsを使用)を参考にして、インストールしたPHP5を一旦アンインストールして、必要と思われるオプションを付けてこんな感じで実行。
sudo port uninstall php5 sudo port install php5 +apache2 +mysql5 +pear
この状態でWordPressのインストールドキュメントを見ながら、インストールしたら、無事に動いていることが確認出来た!
これで全てOKかと思って、http://localhost/wordpress/にアクセスすると、wordpressのディレクトリ配下にあるファイル一覧が表示される状態・・・
手動でindex.phpをクリックすればページ自体は表示されるものの、どうも挙動がおかしい・・この部分ではまったので次にまとめます
WordPress使えているけど、index.phpが表示されない件
自分なりに理解したこととして、WordPressはApacheのmod_rewriteを活用してURLの書き換えを行っているように見えたが、どうもこれがうまく機能してない模様
httpd.confの設定ではmod_rewriteを読み込むように設定しているので、なんでだろうと思ったら、WordPressをインストールしたディレクトリ(自分の場合にはwordpressディレクトリ)直下に.htaccessが必要らしいことが判明
.htaccessとhttpd.confの設定について
.htaccess自体はWordPressのダッシュボードから[各種設定]→[パーマリンク設定]で自分好みの形式を選ぶことで自動的に作成された。
作成された.htaccessファイルはこんな感じでした
DirectoryIndex index.php # BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /wordpress/ RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /wordpress/index.php [L] </IfModule> # END WordPress
これで動くかと思って、いくつか記事を投稿して、記事の投稿自体は出来るのですがやはりmod_rewriteが機能せずURLの書き換えされないで、該当ディレクトリ配下のファイル一覧が表示されるという不思議な状態・・
(この部分が、自分の中ではよくわからないけど)どうもhttpd.confの設定ディレクティブでWordPressを設置したディレクトリに対して、AllowOverride をAllにしておかないと、WordPressから.htaccess に対する処理がうまくいかないみたいで、以下記述を付け加えました
<Directory "/Users/xxxxx/Sites/wordpress"> AllowOverride All </Directory>
これでApache再起動したらやっとWordPressが使えるようになったよー 3,4日ほど試行錯誤していたけど、こうやって動くようになったのはうれいしのと、LAMP環境の構築ってよく求人なんかに出ているけど実際に自分で手を動かしてみてどの程度のレベル感が要求されるのか身を持って知った。