Windows×nginx×PHP8×Laravel ローカル環境構築してみる
いろいろお試し~。
nginx
基本
- ダウンロード
- http://nginx.org/en/download.html から「Stable version」のzip版をダウンロードして展開
- 任意のディレクトリに設置
- 今回は C:\nginx とした(この直下に nginx.exe が来る)
- 設定ファイルを編集
- C:\nginx\conf\nginx.conf
- ひとまずポート番号を必要に応じて書き換え
- 【※1】の表記のうち、コメントアウトされていない行が対象
- 他アプリやXAMPPとの共存を考慮して、今回は「8081」とした
- 動作確認
- 開始(コマンドプロンプトで【※2】のコマンド実行)
- ブラウザで http://localhost:8081/ にアクセス
- 「Welcome to nginx!」ページが表示されればOK
- 上手くいかない場合は C:\nginx\logs 内のログファイルを確認してみる
- 終了(コマンドプロンプトで【※3】のコマンド実行)
複数のプロジェクトを開発できるように対応
- 設定変更
- 再度 nginx.conf を開く
- 先ほど編集した行【※1】を含む「server { ... }」全体をコメントアウトする
- 代わりに【※4】の記述を追加
- 設定したserver_nameの記述に合わせてhostsを設定【※5】
- 動くかどうか確認する
- 設定したrootのディレクトリに適当なindex.htmlを設置
- nginxを開始する
- ブラウザで、設定したURLにアクセス
- 例えばserver_nameに「testproject.localhost」と設定していれば「http://testproject.localhost:8081/」
- 設置したindex.htmlが表示されればOK
- nginxを終了する
補足類
【※1】
↓の「80」の部分を書き替える
listen 80;
【※2】
cd c:\nginx start nginx
【※3】
nginx -s stop
【※4】
##### このかたまりでプロジェクト単位。 ##### 複数用意するときはこれを複数設置して適宜調整する server { listen 8081; server_name testproject.localhost; root C:/dev/testproject; index index.php index.html index.htm; }
【※5】
127.0.0.1 testproject.localhost
PHP
- ダウンロード
- https://windows.php.net/download/ から「Non Thread Safe」のzip版をダウンロードし展開
- 任意のディレクトリに設置する
- 今回は C:\php8 とした(この直下に php.exe が来る)
- 環境変数(Path)に上記ディレクトリを追加する
- 設定ファイルを作成する
- 設定ファイルを調整する
- 「extension=fileinfo」がコメントアウトされていれば外す(存在しなければ追記する)(Laravelを動かすのに必要っぽい)
- nginx側の設定を調整する
- nginx.confを開き、先程追加した「server{ ... }」内に【※1】の内容を追記
- 動くかどうか確認する
補足類
【※1】
#### PHPの設定 # 正規表現、パスが「xxxx.php」や「aaa/xxxx.php」や「abc/xxxx.php/bbbb」などに一致 location ~ [^/]\.php(/|$) { # $fastcgi_path_info の値をキャプチャする正規表現を定義 # 一つ目の()が $fastcgi_script_name の値になり、二つ目は $fastcgi_path_info の値になる fastcgi_split_path_info ^(.+?\.php)(/.*)$; # $document_root ルートディレクトリで設定したパス # $fastcgi_script_name ファイル名のパス # -f はファイルが存在するかの判定 # ファイルがなければ404エラーを返す if (!-f $document_root$fastcgi_script_name) { return 404; } # phpへアクセスするためのIPアドレスとポートの設定 fastcgi_pass 127.0.0.1:9000; # phpでのindexファイル名を設定、 # URLが「/」で終わってるものに対してインデックスとして使われるファイル名の指定 fastcgi_index index.php; #### fastcgi_param に関する設定 # 多数のfastcgi_paramsの設定が書いてあるfastcgi_paramsファイルを読み込む include fastcgi_params; # 「HTTP_PROXY」パラメータを空にする、HTTPProxyに関する脆弱性を和らげる fastcgi_param HTTP_PROXY ""; # 「SCRIPT_FILENAME」パラメータはphp-fpmがスクリプト名を決定するための設定 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
Composer
Laravel使うならComposerが必須?っぽい?
ComposerはPHP向けの管理ソフトで、アプリやライブラリの依存関係などを管理しているやつ。
- ダウンロード・インストール
- https://getcomposer.org/ からexeをダウンロードしインストール
- インストールされているか確認する
- コマンドプロンプトを起動し、「composer」でバージョンやヘルプが表示されればOK
Laravel
- ダウンロード・インストール
- コマンドプロンプトで「composer global require "laravel/installer"」を実行
- インストールされているか確認する
- コマンドプロンプトで「laravel -V」を実行し、バージョンが表示されればOK
- プロジェクトを作
- nginx側の設定を調整する
- nginx.conf を開き、rootに「/public」を付け加える 例:C:/dev/testproject/public
- Laravelの公開ディレクトリがそこなので
- nginx.conf を開き、rootに「/public」を付け加える 例:C:/dev/testproject/public
- 動くかどうか確認する
補足類
【※1】
cd C:\dev composer create-project laravel/laravel testproject
これで「testprohect」という名前のプロジェクトが生成される。
明示的に↓のようにバージョン名を付けるほうが適切かも(未調査)
composer create-project laravel/laravel testproject--prefer-dist "5.2.*"
その他
開始・終了のバッチ化
XAMPPだとstart/stopワンクリックだったのにめんどくせ~!!
ということでnginxとPHPの開始・終了はバッチファイルにしてみると楽でした。
開始
@ECHO off REM // ↑これ以降のコマンド全ての実行結果を表示させない REM // nginx開始 CD C:\nginx START nginx.exe REM // php開始 CD C:\php8 START php-cgi.exe -b 127.0.0.1:9000 EXIT
終了
@ECHO off REM // ↑これ以降のコマンド全ての実行結果を表示させない REM // nginx終了 CD C:\nginx nginx.exe -s quit REM // php終了 Taskkill /im php-cgi.exe EXIT