アナログCPU:5108843109

ゲームと音楽とプログラミング(酒と女とロックンロールのノリで)

('ω') < イザユケエンジニャー

Windows×nginx×PHP8×Laravel ローカル環境構築してみる

いろいろお試し~。

nginx

基本

  • ダウンロード
  • 任意のディレクトリに設置
    • 今回は C:\nginx とした(この直下に nginx.exe が来る)
  • 設定ファイルを編集
    • C:\nginx\conf\nginx.conf
    • ひとまずポート番号を必要に応じて書き換え
      • 【※1】の表記のうち、コメントアウトされていない行が対象
      • 他アプリやXAMPPとの共存を考慮して、今回は「8081」とした
  • 動作確認

複数のプロジェクトを開発できるように対応

  • 設定変更
    • 再度 nginx.conf を開く
    • 先ほど編集した行【※1】を含む「server { ... }」全体をコメントアウトする
    • 代わりに【※4】の記述を追加
    • 設定したserver_nameの記述に合わせてhostsを設定【※5】
  • 動くかどうか確認する
    • 設定したrootのディレクトリに適当なindex.htmlを設置
    • nginxを開始する
    • ブラウザで、設定したURLにアクセス
    • 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

  • ダウンロード
  • 任意のディレクトリに設置する
    • 今回は C:\php8 とした(この直下に php.exe が来る)
  • 環境変数(Path)に上記ディレクトリを追加する
  • 設定ファイルを作成する
    • C:\php8\php.ini-development をコピーして C:\php8\php.ini とする
  • 設定ファイルを調整する
    • 「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向けの管理ソフトで、アプリやライブラリの依存関係などを管理しているやつ。

  • ダウンロード・インストール
  • インストールされているか確認する

Laravel

  • ダウンロード・インストール
  • インストールされているか確認する
  • プロジェクトを作
  • nginx側の設定を調整する
    • nginx.conf を開き、rootに「/public」を付け加える 例:C:/dev/testproject/public
  • 動くかどうか確認する
    • nginxとPHPを開始する
    • ブラウザでURLにアクセスし、Laravelのスタートページが表示されればOK
    • nginxとPHPを終了する

補足類

【※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