たんたんめん日記

ソシャゲ関連のなんでもやさん備忘録

【PHP】【nginx】cygwin上でnginx+php-fpm環境を構築する

windowsでのnginx+php-fpm環境から逃げ出したい所存です。

phpredis もまともに動かないし、php5.4も怪しげだし…

というわけで、脱windowsの1つとして、cygwin上でnginx+php-fpm環境を作ってみました。

参考 http://nicholasorr.com/blog/2008/11/22/solved-nginx-php-fastcgi-win32-no-input-file-specified/

cygwin

http://www.cygwin.com/からsetup.exeをダウンロード

  • Choose A Download Siteはiijあたりで。

f:id:dnond:20130307164551j:plain

  • Select Packages では、Devel以下全てと、Libs以下libcurl3、Net以下libcurl-devel、Net以下libcurl4、Libs以下libxml2、Libs以下libxml2-develをインストール。

cygwin terminalを起動

$ .bash_profileに追加

export PATH=$PATH:/usr/sbin:/usr/local/sbin

nginxインストール

最新版のソースをダウンロードしてコンパイル

$ mkdir /usr/local/src
$ cd /usr/local/src
$ wget http://nginx.org/download/nginx-1.2.7.tar.gz
$ tar xvzf http://nginx.org/download/nginx-1.2.7.tar.gz
$ cd nginx-1.2.7
$ ./configure --sbin-path="/usr/sbin/" --conf-path="/etc/nginx/nginx.conf" --pid-path="/var/run/nginx.pid"
$ make
$ make install

nginxの設定

worker_connectionsを変更しておかないと、起動しない

$ vi /etc/nginx/nginx.conf
 worker_connections  1024;
 ↓変更
 worker_connections  64;

 その他、適宜nginx+php-fpmな設定を記述

起動!

$  nginx

user関連のエラーが出るが、問題なさそう。

PHPインストール

  • http://php.net/downloads.phpからミラーを探してダウンロード
  • APC等の拡張も静的に組み込む

    peclで拡張をインストールすると、 Exec format error in Unknown on line 0 というエラーがphp-fpmの起動時に発生し、読み込まない

$ cd /usr/local/src
$ tar xvzf php-5.4.12.tar.gz
$ cd php-5.4.12/

拡張のソースをダウンロードしていく。 今回はAPC、pecl-http、phpredisをインストールする。
参考: http://www.php.net/manual/ja/install.pecl.static.php

$ cd ext

$ pecl download APC
$ tar xvf APC-3.1.13.tar
$ mv APC-3.1.13 apc

$ pecl download pecl_http
$ tar xvf pecl_http-1.7.5.tar
$ mv pecl_http-1.7.5 http

$ pecl download xdebug
$ tar xvf xdebug-2.2.1.tar
$ mv xdebug-2.2.1 xdebug
    
$ git clone https://github.com/nicolasff/phpredis/
$ mv phpredis redis

$ cd ../

$ rm configure
$ ./buildconf --force

$ ./configure \
     --enable-mbstring \
     --enable-mbregex \
     --with-mcrypt \
     --with-mysql \
     --with-mysqli \
     --enable-pcntl --with-pdo-mysql=mysqlnd --enable-fpm \
     --enable-apc --enable-xdebug --enable-http --enable-redis
    
    configureオプションは ./configure --help で確認
    適宜、必要な機能をenableするなり対応する

$ make
$ make install

$ cp php.ini-production /usr/local/lib/php.ini
$ cp ./sapi/fpm/php-fpm.conf /usr/local/etc/php-fpm.conf

PHPの設定

$ vi /usr/local/etc/php-fpm.conf

    適宜php-fpmの設定を行う
    
$ vi /usr/local/lib/php.ini

    適宜phpの設定を行う
    通常はextensionでapc等を読み込むが、必要なし
    

起動!

$ php-fpm

user関連のエラーが出るが、問題なさそう。

若干、xdebugでエラーが出ている気もするけど、動作はしているようなので、まあええか、と。

結果

xdebugのリモートデバッグが動いていない…
んー、やっぱり無理がある環境なのか…