Help us understand the problem. What is going on with this article?

NginxでPHPの開発環境構築

More than 3 years have passed since last update.

最近行く先々の現場で耳にするNginx
Webサーバらしいですが、Apatchとの違いもいまいち分からず、なんとなくで作業しちゃっています。
特徴やApatchとの違いも勉強しつつ、とりあえず自分のPCに環境構築や!
ということで、その際の手順をメモしようと思いました。

実施OS:Windows10 Pro

Nginxのインストール

まずはNginxのインストールです。
nginx: downloadから、zipファイルをダウンロードします。
バージョンが3つほどあると思いますが、
Mainline version ⇒ メインのバージョン
Stable version ⇒ 安定版
Legacy versions ⇒ 古いバージョン
的な意味なので、自分は安定板のnginx/Windows-1.12.1をダウンロードしました。
ダウンロードしたzipファイルはC直下に展開します。
私はフォルダ名をnginx-1.12.1にしました。

PHPのインストール

次はPHPをインストールします。
PHPを選択した理由としては、なんか簡単そうだったからです。
PHP: Downloadsから、またまたzipファイルをダウンロードします。
とりあえず最新版でいいかという感じで、
Current Stable PHP 7.1.7の欄にある、Windows downloadsをクリックします。
遷移先で、自分のPCにあったZipをクリックして、ダウンロードします。
ちなみに私のPCは64ビットなので、VC14 x64 Thread Safeのzipファイルをダウンロードしました。

Non ThreadThreadとは?
と気になる方もいるかもしれませんが、

スレッドセーフである、というのは、Windows 上の Apache 2 のような,
マルチスレッドのウェブサーバーでも動作するバイナリだという意味です。
スレッドごとにローカルストレージのコピーを作成し、
別のスレッドとデータの衝突を起こさないようにしています。

よく分からなかったので、私はとりあえずThreadの方を選択しました。
ダウンロードしたものを解体したのち、
私はフォルダ名をphp-7.1.7にしてC:nginx-1.12.1直下に置きます。

nginx.confの編集

C:\nginx-1.12.1\conf\nginx.confの65~71行目からコメントアウトを外して、
fastcgi_paramの部分を以下のように変更します。

nginx.conf
# 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  c:/nginx-1.12.1/html$fastcgi_script_name;
    include        fastcgi_params;
}

start&stopファイルの作成

C:nginx-1.12.1直下に、以下2つのファイルを作成します。

start-nginx.bat
@ECHO OFF
cd c:\nginx-1.12.1
start c:\nginx-1.12.1\nginx.exe
start /b c:\nginx-1.12.1\php-7.1.7\php-cgi.exe -b 127.0.0.1:9000 -c c:\nginx-1.12.1\php-7.1.7\php.ini
ping 127.0.0.1 -n 1>NUL
echo Starting nginx
echo .
echo .
echo .
ping 127.0.0.1 >NUL
EXIT
stop-nginx.bat
@ECHO OFF
cd c:\php-7.1.7
c:\php-7.1.7\nginx.exe -s stop
taskkill /f /IM php-cgi.exe
EXIT

作成後、start-nginx.batでnginxの起動、stop-nginx.batで終了ができます。
起動している間はコマンドプロンプトもずっと起動しています。

起動時しない場合

私は初回起動時、以下メッセージが出て起動できませんでした。

コンピューターにVCRUNTIME140.dll がないため、プログラムを開始できません。
この問題を解決するには、プログラムを再インストールしてみてください。

なんだこりゃと思ったらVisual Studio 2015 の Visual C++ 再頒布可能パッケージ
というのがないのが原因らしいので、
以下からダウンロードしたのちインストールしたら起動できました。
https://www.microsoft.com/ja-jp/download/details.aspx?id=48145

PHPコードの実行

phpファイルは、C:\nginx-1.12.1\htmlに作成します。
とりあえず以下を作成しました。

index_p.php
<?php
  echo "Hello PHO for NGINX!!";
?>

そして http://localhost/index_p.php を開くと、

出ました!

とりあえずここまでは割とスムーズに行きました。
分からないことだらけのnginxですが、これからどんどん学んでいこうと思います。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away