nginxでwordpressのサイトを構築する

WindowsでNginxを構築します
最近はNginxが流行ってきているということで、Windowsでやってる方が少ないのもあって構築方法をメモメモ

Windows + Nginx + FastCGI + PHP + Mysql の組み合わせで WordPress が動作するところまでです
検証環境は Windows7x64 です

ダウンロード
必要なものを集めてきます。
Nginx → Stable Version nginx/Windows-1.0.12
PHP → PHP5.3 VC9 x86 Non Thread Safe
Mysql → MySQL Community Server 5.5.20 Windows (x86, 32-bit), MSI Installer
Wordpress → WordPress 3.3.1

解凍
NginxをC:\Program Files\nginx-1.0.12 に解凍
PHPを C:\Program Files\php-5.3.10-nts-Win32-VC9-x86 に解凍
Wordpressを C:\www に解凍
Mysqlをインストール。(ry

動作確認
1. まずNginxの動作確認。
“C:\Program Files\nginx-1.0.12\nginx.exe” を起動してから、ブラウザで localhost に接続する。
「 Welcome to nginx! 」と表示されればOK

2. 次にPHPの動作確認
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 の項目のコメントアウトを外して次のようにする

location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}

“C:\Program Files\php-5.3.10-nts-Win32-VC9-x86\php-cgi.exe -b 127.0.0.1:9000” で PHPを起動し、
“C:\Program Files\nginx-1.0.12\nginx.exe -s reload” で変更した設定を読み込む。
ブラウザで localhost/tekitou.php にアクセスします。
「 No input file specified. 」と表示されれば、Nginx PHP 間のやり取りは成功です

WordPressを動かす

“C:\Program Files\nginx-1.0.12\conf\nginx.conf” の

location / {
root html;
index index.html index.htm;
}

を以下のようにする

location / {
root C:/WWW;
index index.php index.html index.htm;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 の項目を

location ~ \.php$ {
root C:/;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME C:/WWW$fastcgi_script_name;
include fastcgi_params;
}

にする。

“C:\Program Files\php-5.3.10-nts-Win32-VC9-x86\php.ini-production” を コピーして php.ini を作成する
そして php.ini の
;extension=php_mysql.dll のコメントアウトを解除して
extension=php_mysql.dllにする

phpを再起動する。

ブラウザで localhost に接続する

完了。

自動起動するようにする
ポートを介してphpを利用するためIISやApacheと違って事前にphpを起動させておく必要があります。

batファイルを作って起動時に実行させます

start C:\"Program Files"\php-5.3.10-nts-Win32-VC9-x86\php-cgi.exe -b 127.0.0.1:9000
start C:\"Program Files"\nginx-1.0.12\nginx.exe

参考サイト
nginx + PHP on Windows in 5 minutes
Install WordPress on WEMP (Windows, nginx, MySQL and PHP)
nginxの起動オプション
CGI版のPHPで「No input file specified.」のエラーを解決する方法
fastcgi_param SCRIPT_FILENAME パラメータの意味
WordPressを100倍速くする! MySQLの調整やnginx proxy cache
ソースファイルが shift-jis だと文字化けする問題 「未解決」

wordpressのパスワードをリセットする

wordpressでパスワードを忘れた時のヒヤッとする感覚はなかなかなもんです。
しばらく使ってないWindowsPCも久しぶりに起動するとパスワードがわからなくて困ったりします。
ちなみにwindowsPCのパスワードはOphcrackってツールで簡単に解析できたりします。

パスワードのリセット方法は →WordPressのパスワードをマニュアルでリセットする方法のペーシで詳しく解説されています。

ここでもメモしておきますm
phpMyAdminは使わないので、SQLコマンドだけメモ。

一度テーブルを確認してから設定するのがいいと思います。

ハッシュ値が入っているだけなのであんまり意味ないですが@@
パスワードのテーブル

mysql> use wordpress;
mysql> select user_login, user_pass from wp_users where user_login = 'admin';

確認したら設定します

パスワードリセット

mysql> update wp_users set user_pass = MD5('password') where user_login = 'username';

MD5()でそのままハッシュ値入れれるのがいい感じ。

以前にサイトアドレスの設定も書き違えてしまったことがあるのでメモ

サイトアドレスのテーブル

mysql> use wordpress;
mysql> select option_name from wp_options;
mysql> select option_value from wp_options where option_name='siteurl';

サイトアドレスリセット

mysql> update wp_options set option_value = 'http://helloidea.org/' where option_name = 'siteurl';

mysqlのrootのパスワードを忘れたら洒落にならないですよね。と思ってたら簡単にリセットできる@@うぇ
公式のドキュメントに載ってます↓
http://dev.mysql.com/doc/refman/4.1/ja/resetting-permissions.html
ローカルのみログイン出来るよう再起動してから、パスワードをリセット出来るみたいです。

パーマリンク設定メモ

パーマリンクが変更されてページが何も見れない、怖い現象におちいってた@@
メモメモ

/archives/%post_id%.html/

%post_id%の数字はきちんと保存されてるんだね。パーマリンク戻しただけですべてが戻った。
よかったよかった
と、思ったらこの記事ポストした瞬間に、今までは/index.php/archives/%post_id%.html/ でリンクされてたのが、/archives/%post_id%.html/に変わったぽいです@@
おそるべしver3.0
変更するといろいろと面倒なので、パーマリンク設定を /index.php/archives/%post_id%.html/ に変更

WordPressの導入方法

Windows Server 2008R2 IIS 環境でのメモです

1. 環境を集める

WordPress本体 = http://ja.wordpress.org/

MySQL = http://dev.mysql.com/ -> Downloads -> MySQL Community Server ->Windows (x86, 64-bit), MSI Installer

PHP = http://windows.php.net/download/ -> 今回はIISなのでVC9のZipで

流れ

. MySQLのインスコ

. データベースとユーザの作成

. PHPの展開-設定

. IISの設定

. WordPressの設定

–MySQLをインストール–

Wizard ->

server Machine -> Serverマシンとして

Best Support For Multilingualism -> マルチバイト文字セット

Include Bin Directory in Windows PATH -> 環境変数に追加される。手動で設定でもいい

他はデフォで

再設定がしたければ

bin/MySQLInstanceConfig.exeで

MySQL再インストールの際エラーが出る場合、

C:\Documents and Settings\All Users\Application Data\MySQL ディレクトリを削除。

次にユーザとデータベースを作成

※以下 プロンプト

net start mysql -> 動いてるか確認

mysql -u root -p -> ログイン

※以下 mysql>

show databases;                -> 既存データベースの確認

create database wordpress;        -> WordPress用のデータベース作成

show databases;                -> 作成を確認

create user pino@localhost;       -> 新しいユーザを作成 ホストがlocalhostなのでコンソールセッションでないとログインできないので注意

use mysql;                   -> ユーザデータベース選択

show tables;                  -> テーブルの確認

select host,user from mysql.user;    -> ユーザ一覧を確認

set password for pino@localhost = password(‘passwdpino’);     -> パスワードを設定

show grants for pino@localhost;                       -> 権限を確認します

grant ALL on wordpress.* to pino@localhost;              -> 権限を与えます

exit

–PHPの展開-設定–

現時点では”php-5.3.2-Win32-VC9-x86.zip”

1. C:\Program Files\PHP に解凍(任意)

2. フォルダ名をPHP(任意)に変更

3. “php.ini-production”をコピーして”php.ini”を作成

4. php.iniの”extension_dir”の値を C:\Program Files\PHP\ext へ変更 -> モジュールディレクトリの指定

5. extension=php_mbstring.dll をコメントアウト

6. extension=php_mssql.dll をコメントアウト

php.exeを実行してエラーが無いか確認

–IISの設定–

“インターネット インフォメーション サービス (IIS) マネージャー” ->

“スタート ページ”の一つ下(rootディレクトリ)をクリック ->

1. ハンドラーマッピング

ハンドラーマッピング ->

モジュール マップの追加 ->

要求パス => *.php

モジュール => FastCgiModule

実行可能ファイル => C:\Program Files\PHP\php-cgi.exe

名前 => PHP

2. ISAPI及びCGIの制限

追加 ->

ISAPIまたはCGIのパス => C:\Program Files\PHP\php-cgi.exe

説明 => PHP

拡張パスの実行を許可する => ON

3. ISAPIフィルター

追加 ->

フィルター名 => PHP

実行可能ファイル => C:\Program Files\PHP\php5isapi.dll

次にCGIが実行可能か確認します

wwwrootフォルダに

<?php phpinfo(); ?> を入力した phpinfo.phpを作成します

http://localhost/phpinfo.php か http://127.0.0.1/phpinfo.phpで接続します

PHPの設定画面がでればPHPは動いています。

一覧に mysql の項目があればsqlの設定も成功です

–WordPressの設定–

wwwrootフォルダへ解凍 ->

wp-config-sample.php をコピーして wp-config.phpを作成

メモ帳で開く(メモ帳で編集するな。と書いてあるけど問題なかった)

データベース名 => wordpress

ユーザー名 => pino

パスワード => passwdpino

ホスト名 => localhost

保存。

後は http://localhost/wp-admin/index.phpへ接続するだけです。

これで導入完了です。