MacでWordPressを動かす
1月6日2011
"打倒WordPress!"を目標に頑張っているLokkaというソフトを作っているのに心苦しいんですが、@machidaさんに書いてくれと言われたのでMacでWordPressを動かす方法を書きます。
WordPressにはApacheとPHPとMySQLが必要です。(予めXCodeを入れておいてください。)
Apache
Mac OS X 10.6(Snow Leopard)にはApacheが最初から入っています。"システム環境設定" > "共有"から"Web共有"にチェックを入れればApacheが立ち上がります。
http://localhost/にアクセスすればトップページが表示されます。
それぞれのユーザー用のディレクトリが最初から見えるように設定されています。/Users/ユーザー名/Sites が http://localhost/~ユーザー名 に対応しています。(チルダが見にくいので注意です。)
~/Sitesにindex.htmlって最初から置いてあるなあと思ってたらこれだったんですね。ここにhtmlやcssなどを置けばOKです。便利な世の中になったもんですね。
PHP
PHPが最初から入っています。しかし、Apacheの設定ではPHPが無効になっているのでコメントを外して有効にします。
/etc/apache2/httpd.confの116行目の行頭のコメントを外す。
LoadModule php5_module libexec/apache2/libphp5.so
設定を変更したらApacheを再起動します。再起動はさっきの"Web共有"のチェックを外してまた付けるだけです。便利な世の中に(略)
PHPが動いてるかどうか試しにPHPを置いてみましょう。
/Users/komagata/Sites/phpinfo.phpに下記を作成。
<?php phpinfo(); ?>
http://localhost/~komagata/phpinfo.phpにアクセス。
phpinfo()はPHPの設定を表示する関数です。上記の様に設定が表示されたらPHPが動いています。
MySQL
MySQLは最初から入っていないのでHomebrewを使ってインストールします。(こちらを参考にしてHomebrewを入れておいてください。)
$ brew install mysql
ちょっと時間がかかりますが、上記だけでインストールされます。他に作業が必要な場合はHomebrewが手順を表示してくれるので適当に見逃さないようにしましょう。
手順によれば、DBを初期化して、launchdの設定ファイルを自分のディレクトリにコピーして、launchdに読み込むようにとあります。
DBを初期化します。
$ mysql_install_db
launchd?
launchdはlaunch daemonの略です。apacheやmysqlのように背後でずっと起動しっぱなしで動くプログラムをdaemonと言います。daemonとは守護霊という意味だそうです。背後からこっそり支えてくれるプログラムって感じでしょうか。
launchdはMac OS X 10.4(Tiger)から採用された他のプログラムを動かしたり止めたりするプログラムです。元々UNIXではOS起動時に他のdaemonを立ち上げるinit、時間に応じて他のプログラムを実行するcron、ネットワークアクセスに応じてプログラムを起動するinetdなどのプログラムがありましたが、それらの役割を全てやってくれるのがlaunchdです。
launchdが扱うプログラムはずっと起動しているDaemonsとログイン毎に起動するAgentsの2種類があります。それぞれの設定ファイルはLaunchDaemonsとLaunchAgentsに置きます。
ユーザー毎に違い、ログインする時に起動したいソフトの設定は~/Library/LaunchAgentsに置きます。Homebrewでインストールするソフトは/usr/local/Celler/ソフト名 のディレクトリに入っているのでそこにあるlaunchd用の設定ファイルをコピーしてきます。
$ cp /usr/local/Cellar/mysql/5.1.54/com.mysql.mysqld.plist ~/Library/LaunchAgents
launchdの設定はlaunchctl(launch controlの略だと思う)コマンドでやります。launchctl loadでソフト毎の設定ファイルを読み込みます。com.mysql.mysqld.plistには"いつ起動するのか"、"どういったオプションで起動するのか"などの設定が書いてあります。
$ launchctl load -w ~/Library/LaunchAgents/com.mysql.mysqld.plist
これで次回PCにログインした時にmysqlが自動的に立ち上がるようになりました。今はログアウトするのが面倒なので直接mysqldを立ち上げます。
$ mysql.server start
SUCCESS!と表示されればOKです。
サーバー?クライアント?
サーバー(server)はサービスをする者の意味です。クライアント(client)はお客さんの意味です。serverは複数のclientから接続され、その要求に答えてサービス(何らかの処理)を提供します。サーバーというと何か偉い感じがしますが、実際はお客の要求をひたすらこなす働き者です。
こちらのエントリーで説明した"ホスト"と"端末"は言い換えれば"サーバー"と"クライアント"ですね。
PHPからMySQLに接続する
ApacheもPHPもMySQLもそれぞれインストール出来たのでPHPからMySQLに接続するスクリプトを実行してみましょう。
/Users/komagata/Sites/mysql.phpに下記を保存。
<?php mysql_connect('localhost', 'root', ''); ?>
mysqlに接続しているだけです。http://localhost/~komagata/mysql.phpにアクセスして確認してみます。
エラーが出ました。
「unix:///var/mysql/mysql.sockを通して接続しようとしたけどそんなファイルは無い」
という内容です。
長くなるので端折りますが、PHPとMySQLで通信するために必要なソケットファイルの位置が、PHPでは/var/mysql/mysql.sockに設定されているのにmysqlだと/tmp/mysql.sockに設定されているので接続出来ません。どちらかの設定を変更する必要があります。
PHPの設定を変更して/tmp/mysql.sockを見に行くようにしましょう。PHPの設定は/etc/php.iniというファイルで設定します。雛形が/etc/php.ini.defaultというファイル名で既にあるので、それをコピーして必要な場所を変更しましょう。
$ sudo cp /etc/php.ini.default /etc/php.ini
/etc/php.iniの1063行目、1216行目、1275行目を変更する。
pdo_mysql.default_socket = /tmp/mysql.sock
mysql.default_socket = /tmp/mysql.sock
mysqli.default_socket = /tmp/mysql.sock
PHPには上記のようにpdo_mysql, mysql, mysqliなど、MySQLの接続に使うPHP拡張モジュールがいくつか入っています。さっきのスクリプトで使ったmysql_connect()関数やWordPressを動かしたいだけならmysql.default_socketだけを変更すればOKです。しかし普通はpod_mysqlやmysqliの方をよく使うので一緒に設定しておきましょう。php.iniを書き換えたらapacheを再起動しないと設定が反映されません。
さっきのmysql.phpにアクセスして、エラーが出なくなり、真っ白なページが出ればOKです。
WordPress
WordPressのインストールは本家サイトの指示に従えばそのまま出来ました。
データベース作成。
$ mysqladmin -uroot create wordpress
ダウンロード。
$ curl http://ja.wordpress.org/wordpress-3.0.4-ja.tar.gz -O
解凍。
$ tar zxf wordpress-3.0.4-ja.tar.gz
Webから設定。(http://localhost/~komagata/wordpress/にアクセス。)
出来ました。
自分のパソコンで動かせると色々と便利
WordPressを使っているデザイナーの方に聞くと、意外と自分のパソコンで動かしてデザインしている人が少なかったです。しかし、WordPress開発コミュニティの方々は自分のパソコンで動かして、確認してからWebサイトにアップするやり方を推奨されていました。
僕も、デザイナーの方はWordPressのテンプレートを修正することになるので、仕事でやる場合は手元で確認してからWebサイトにアップすべきだと思います。お客さんはWebサイトで商売しているわけであって、出たとこ勝負でWebサイトを弄るのは損失に繋がります。
まあ、でもMySQLとか難しいですよね・・・。
自作自演
あくまで噂なんですが、LokkaというCMS/BlogツールならApacheもMySQLも要らないらしいですよ!
マスオ「え?LokkaならApacheもMySQLも要らないのかい?」











