2010年12月04日(土)
Xserve G5にWordPress 3を導入したときの自分用メモ [Mac鯖管理]
AppleのラックマウントサーバことXserveは来年1月で販売終了とのアナウンスが先日あったけど(参考),先日Intel CPUどころかPowerPC G5時代のXserveにCMS(コンテンツマネージメントシステム)のWordPress Ver.3を導入する機会があったので,セットアップ時のサーバ設定手順をメモっておきます。なお,OSはMac OS X Server 10.5を想定していますので。
※ここではWordPress本体の設定方法は説明しません。また,本ページの情報を参照される際はAt your own riskでお願いします〜。
1.サーバ管理(Server Admin.app) >> Web >> 設定 >> モジュール から「php5_module」をチェックする(/etc/apache2/httpd.conf から直接「LoadModule php5_module」のコメントアウトを外してもOK)
2. 同じくDBサーバ上の サーバ管理 >> MySQL から MySQLのルートパスワードを設定の上,MySQLサービス を有効化する。Webサーバと別サーバで動かす場合は,「ネットワーク接続を許可」をチェックしておく
3. /etc/php.ini.default を /etc/apache2/php.ini へコピーし,/etc/apache2/httpd.conf にインクルードする
※直接 /etc/php.ini を編集した場合,Apacheが環境設定を正しく読み込まないことがあるらしい
$ sudo cp /etc/php.ini.default /etc/apache2/php.ini
$ sudo vi /etc/apache2/php.ini
# 最終行に入力
PHPIniDir "/etc/apache2"
# ファイル保存
4. 今後,phpMyAdmin経由でSQLファイルのダンプをインポート/エクスポートする運用を想定し,アップロードサイズの上限値を変更しておく
※各パラメータは memory_limit => post_max_size => upload_max_filesize を満たすようにする
$ sudo vi etc/apache2/php.ini
# 以下変更例。この場合,128Mまでのファイルアップロードが可能になる
memory_limit = 512M
post_max_size = 256M
upload_max_filesize = 128M
# ファイル保存
5. WordPressからコメントフォームといったメール送信機能を使用する場合は,php.ini に SMPTサーバのURLを記述する
$ sudo vi etc/apache2/php.ini
[mail function]
SMTP = hoge.hoge
smtp_port = 25
# ファイル保存
6. WordPressの動作に必要な GD をインストールする(手順はこちらのページを参照)
7. G5(特にシングルCPU)だとWordPress上でページ編集等を行うと,PHPの負荷が無視できないほど大きくなるため,PHPアクセラレータ“APC”を合わせてインストールする。手順は次の通り
7-1. “APC”をダウンロードし,任意のパスに展開
$ cd APC-3.1.6/APC-3.1.6
$ phpize
7-2. 64bitアーキテクチャを指定(¥はバックスラッシュに読み替えてください)
$ MACOSX_DEPLOYMENT_TARGET=10.5 ¥
CFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp" ¥
CCFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" ¥
CXXFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -g -Os -pipe" ¥
LDFLAGS="-arch ppc -arch ppc64 -arch i386 -arch x86_64 -bind_at_load" ¥
./configure
7-3. APCをコンパイルし,エラーが出なければインストール
$ make
$ make test
$ sudo make install
7-4. /etc/apache2/php.ini に環境設定を追記
# [597行目前後]
extension=apc.so
# [最終行]
[apc]
apc.enabled=1
apc.shm_segments=1
apc.optimization=0
apc.shm_size=128
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1
# ファイル保存
7-5. Apache を再起動し,phpinfoで,APCが有効化されていることを確認
$ sudo apachectl restart
APCが有効化後は,ソースファイルに含まれる apc.php にアクセスすると,以下のようなキャッシュ情報が表示されるハズです
8. phpMyAdmin などのMySQL管理ツールをDBサーバにインストールするか,Sequel Pro のようなDBクライアントソフトを使ってMySQL用のデータベースを定義する(手順は省略)
9. WordPress 本体をインストールする
※テスト用のサーバからDBを引き継ぐ場合は,いったんSQLのダンプを書き出し,URLを一括置換後に本番サーバへインポートする必要がある
10. WordPressプラグインやウィジェットなどを整備する
※参考までに今回使用したプラグインを列挙します
- All in One SEO Pack:SEO支援ツール
- Category Order:カテゴリを任意の順番に並び替え
- Contact Form 7:問い合わせフォームを簡単に作るツール
- Link Indication:外部リンクやメディアファイルのリンク部分にマークを追加
- Maintenance Mode:サーバメンテナンス時のページを用意
- qTranslate:多言語対応ページ作成ツール
- Really Simple CAPTCHA:問い合わせフォームに簡易的な画像認証を追加
- StatPress:アクセス解析
- TinyMCE Advanced:ビジュアルエディタの機能強化
- Wordpress Download Monitor:ダウンロードファイルのカウンタ
- wp-cache:ページキャッシュの機能強化
- WP-lightpop:画像のオーバーレイ表示を実現するLightboxのWordPress版
- WP-Print:印刷用ページレイアウトを自動作成
11. 旧サイトからページ単位のリダイレクトを行う場合は,/etc/apache2 以下に httpd_alias.conf といったファイルを作成し,Apache mod_alias の記述方法に従って転送元と転送先を定義の上,/etc/apache2/0000_any_80_.conf 及び /etc/apache2/0001_any_443_.conf にインクルードする
# /etc/apache2/httpd_alias.conf での転送設定例
# /ja などでアクセスした場合は,日本語ページに誘導
RedirectMatch 301 ^/(JA|japanese|JAPANESE|jpn|JPN|jp|JP)(|/)$ "/?lang=ja"
# /en などでアクセスした場合は,英語ページに誘導
RedirectMatch 301 ^/(EN|english|ENGLISH|eng|ENG|us|US)(|/)$ "/?lang=en"
# /etc/apache2/*.conf へのインクルード
$ sudo vi /etc/apache2/0000_any_80_.conf
# <IfModule mod_alias.c>〜</IfModule>の後に追記
Include /etc/apache2/httpd_alias.conf
# ファイル保存
12. ページのリダイレクトは,mod_rewrite の方がより柔軟に行えるが,今回はプロトコルの変換でのみ使用した(例:https でアクセスした場合は,http に全転送)
# /etc/apache2/0001_any_443_.conf の<IfModule mod_rewrite.c>内に記述
$ sudo vi /etc/apache2/0001_any_443_.conf
RewriteEngine on
RewriteCond %{SERVER_PORT} 443$
RewriteRule (.*)?$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R]
# ファイル保存
14. Apache を再起動し,最終的な動作確認を行う
$ sudo apachectl restart
15. 必要に応じてMySQLの定期バックアップを行う(cronによる自動バックアップの設定例はこちらのサイトを参照)
トラブルメモ
運用前後に遭遇したトラブルの対処法について簡単にまとめます。
Q:Webサーバの httpd が暴走し,CPU使用率が100%近くなる
A:ページ編集後にWordPressのアプリケーションがインデックスのようなものを作成するらしい。Apacheのアクセスログをみると以下のような記録が延々と続いていた。しばらく(半日程度)放置していたら解消し,以後発生しなくなった
xxx.xxx.xxx.xxx - - [24/Nov/2010:22:35:32 +0900] "HEAD
/wp-content/uploads/sample.jpg HTTP/1.0" 200 - "-"
"WordPress/3.0.1; http://hoge.hoge"
Q:WordPress プラグインの自動アップデートやインストールを管理画面から行おうとすると「ファイルをコピーできませんでした」「ディレクトリを作成できませんでした」といったエラーメッセージが表示され,正常に実行されない
A:以下の方法を試してみる
1. FTPサービスが利用できる場合は,こちらの情報を参考に,wp-config.php 内でFTPアカウントの情報を設定する
FTP_BASE:インストールした WordPress のベースフォルダへのフルパス
FTP_CONTENT_DIR:インストールした WordPress の wp-content フォルダへのフルパス
FTP_PLUGIN_DIR:インストールした WordPress の plugins フォルダへのフルパス
2. SSH 経由でアップデートを実行することできるようだが,事前にPHP側にモジュールをインストールし,設定しておく必要がある(参考)。公開鍵認証も可能だが,Apacheから参照可能なディレクトリに配置すること(セキュリティ的に問題ないかは不明)
FTP_PLUGIN_DIR:インストールした WordPress の plugins フォルダへのフルパス
FTP_PUBKEY:SSH 公開鍵へのフルパス
FTP_PRIKEY:SSH 秘密鍵へのフルパス
FTP_USER:FTP または SSH のユーザー名。同一の場合がほとんどだが、利用したい更新タイプのユーザーに一致させること
FTP_PASS:FTP_USER で入力したユーザーのパスワード。SSH 公開鍵での認証を使っている場合は省略可能
FTP_HOST:SSH/FTP サーバーのホスト名:ポート番号の組み合わせ。FTP ポートは通常21で、SSH ポートは22
FTP_SSL:SLL 接続を使う
3. FTP も SSH も使用しない or できない場合は,wp-config.php 内に以下の情報を書き込み,WordPress ディレクトリ以下の所有者を“_www”に変更する(参考)
※グループは admin のままでよいが,chmod g+w で書き込み権限を与えておかないと,コンソール上でファイルを直接編集でなくなる→管理画面からプラグインをインストール/アップデートすると,wordpress/wp-content/plugins フォルダ内のグループアクセス権から書込権限が取れてしまうが目をつぶる
define(‘FS_METHOD’,'direct’);
Q:“Contact Form 7”などのフォームメールプラグインを使ってメールを送信してもメールが届かない
A: /etc/apache2/php.ini の SMTP欄をlocalhost から SMTPサーバのアドレスに書き換える(本文手順5.参照)
参考
- WordPress | 日本語
- SE奮闘記: 【PHPチューニング】APCをインストールしてWordpressを高速化
- APC(Alternative PHP Cache)再び - Do You PHP?
- Apple - Support - Discussions - Install PHP APC ...
- Mac OS XにAPCを導入する - スコトプリゴニエフスク通信
- MacOSX ServerのデフォルトPHPでGDを有効にする @ php-tips
- Mac OS Xで動かす軽量プログラミング言語 − @IT
- PowerMac G5のLeopard ServerにGDを入れたときの自分用メモ
- icoro : WordPress on CentOS – SSHで自動アップデートするには
- WordPressで「要求された操作を実行するためには、接続情報が必要です。」 | VPS仮想専用サーバー奮闘記
- 小粋空間: phpMyAdmin のアップロードファイルサイズを変更する
- MySQLの定期的バックアップ(cron) : Project MultiBurst
Posted by 神海 螢 / コウミ ケイ at 2010年12月04日(土) 21時01分 コメント ( 0 )