kur.jp

バイオリンと自転車をこよなく愛するkurのチラシの裏。たまには技術的なことを書いたりするかも知れません。

Windowsへのnginx + PHP + MySQL+MongoDBの導入

Windows7マシンにnginxなWebサーバを導入したので覚え書き。

nginxのインストールと起動

nginxのWebサイトからダウンロードして展開し、展開したフォルダをCドライブの直下にC:\nginx\となるように配置した。

nginx.exeを直接ダブルクリックしてもWebサーバとしては起動するけど、その後の処理が微妙に面倒(設定ファイル変更時にリロードできない)なのでコマンドラインから起動したほうが良いと思う。具体的なコマンドは下記の通り

Webサーバの起動
start nginx
設定ファイルの再読み込み
nginx -s reload
Webサーバの終了
nginx -s stop

これだけでWebサーバとしては普通に動くと思う。ちゃんと動いていればhttp://localhost/にアクセス出来るはず。なお、標準設定だとC:\nginx\htmlにあるファイルにアクセスが出来る。

バーチャルホストの設定

バーチャルホストの設定も基本的は下記の通り。まずはC:\Windows\System32\drivers\etc\hostsにあるhostsファイルに、アクセスしたいサーバ名を定義する。例えばこんな感じ。

127.0.0.1 hoge1.example.com
127.0.0.1 hoge2.example.com

こう書いておくと、hoge1.example.comにアクセスしようとした時に、127.0.0.1に、つまり自分のマシンの中にあるWebサーバにアクセスしようとする。 続いてnginxの設定に。C:\nginx\conf\nginx.confに下記の項目を追加する。なお、この設定では、hoge1.example.comにアクセスがあったときはC:\nginx\html\hoge1.example.comに、hoge2.example.comにアクセスがあったときはC:\nginx\html\hoge2.example.comにそれぞれアクセスするように指示している。

server {
    listen       80;
    server_name       hoge1.example.com;
    location / {
        root   html/hoge1.example.com;
        index  index.html index.htm;
    }
}
server {
    listen       80;
    server_name       hoge2.example.com;
    location / {
        root   html/hoge2.example.com;
        index  index.html index.htm;
    }
}

PHPの設定

PHPのダウンロードサイトからWindows用のバイナリをダウンロードした。ダウンロードした展開しC:\nginx\phpに配置する。 まずphp.iniの設定を行う。php.ini-productionをphp.iniにリネームして使う。以下の行の先頭にセミコロンがあるので削除する。

extension_dir = “ext”
extension=php_bz2.dll
extension=php_gd2.dll
extension=php_imap.dll
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll

必須ではないがデバッグが不便なので、display_errorsをOnにしておいても良いと思う。あと、timezoneもいまのうちに。

date.timezone = "Asia/Tokyo"

次に、nginx側の設定を行う。基本的には上述したバーチャルホストの設定の中に、PHPの処理に関する処理を付け加えたものになる。

server {
    listen       80;
    server_name       hoge1.example.com;
    location ~ \.php$ {
        root   html/hoge1.example.com;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        includefastcgi_params;
    }
    location / {
        root   html/hoge1.example.com;
        index  index.php index.html index.htm;
    }
}

コマンドラインからstart php\php-cgi.exe -b 127.0.0.1:9000 -c php\php.iniとしてPHPを起動する。なおnginxの設定ファイルを書き換えた後は、nginx -s reloadとして設定ファイルの再読み込みを忘れないこと。

MySQLの設定

MySQLのサイトからダウンロードしてくる。今回はmysql-5.5.25a-win32.zipを選択。展開したものをC:\nginx\mysql仁配置する。mysqlフォルダの中にいくつかの設定ファイルがあるんだけど、今回はとりあえずmy-medium.iniをコピーしてmy.iniとリネームして使う。変更点は下記の通り。

[client]
#password   = your_password
port        = 3306
socket      = c:/nginx/mysql/tmp/mysql.sock

[mysqld]
port        = 3306
socket      = c:/nginx/mysql/tmp/mysql.sock
basedir     = c:/nginx/mysql
datadir     = c:/nginx/mysql/data
bind-address    = localhost
enable-named-pipe
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M

コマンドラインからmysqlのインストールと起動を行う。

mysqld --install-manual
net start mysql
mysqladmin -u root password パスワードを決める

PhpMyAdminのインストール

インストールと言うほどのものでもないが、コマンドラインからMySQLをいじりたくない人は、PhpMyAdminを入れたら良いと思う。PhpMyAdminのサイトからダウンロードして、C:\nginx\html\phpmyadminに配置する。こうしておけばhttp://localhost/phpmyadminでアクセスできるようになると思う。

MongoDBのインストール

インストールと言うほどのものでもないが、http://www.mongodb.org/からMongoDBのWindowsバイナリをダウンロードする。私が利用したのはmongodb-win32-i386-2.0.6。Cドライブ直下に、c:\dataというフォルダを作成し、さらにデータの保管用にc:\data\dbと言う空のディレクトリを作成する。ダウンロードしたMongoDBを展開しc:\dataの下に配置する。C:\data\mongodb-win32-i386-2.0.6みたいな感じになる。mongoDBを利用する時は、C:\data\mongodb-win32-i386-2.0.6\bin\mongod.exeをダブルクリックする。

これだけだとPHPからMongoDBにアクセスできないので、https://github.com/mongodb/mongo-php-driver/downloadsからMongoDBのPHPドライバをダウンロードしてくる。私がダウンロードしたのはphp_mongo-1.2.12.zipで、その中にあるphp_mongo-1.2.12-5.4-vc9.dllをphp_mongo.dllにリネームしてC:\nginx\php\extに配置した。php.iniにextension=php_mongo.dllの1行を追加するのを忘れずに。今思うともしかしたらリネームしなくても良かったかも知れないが。

参考にしたサイトとか

ここが非常に参考になる、というか英語に抵抗のない人はここに書いてある通りにやれば、たぶん問題なさそう。