MENU

Ubuntu で nginx と PHP

やりたいこと

先日、下記にて RTMP サーバを構築したが、nginx ってデフォルトでは PHP は使えない。
なので、PHP も使えるようにする。

手順概要

  1. Nginx のインストール
  2. PHP 関連のインストール
  3. 設定ファイル(nginx.conf)の変更
  4. Nginx の再起動
  5. 実際に PHP が動作するかテスト

Nginx のインストール

ほんと、今はとても簡単。
以下のコマンドでOK

$ sudo apt install nginx

これだけで必要最低限は動作するようになってしまうのだから…
あとはどう使いたいかでいろいろ設定が変わるので、そこはまた別途調べるなりなんなりで。

PHP 関連のインストール

これもまた簡単。
以下のコマンドを打って少し待つだけ。

$ sudo apt install php php-fpm

mysql (maridaDb) をインストールして WordPress を使うんだ!という場合は下記も追加。

$ sudo apt install php-mysql

まぁ、これはすべてまとめて書いてもいいよね。 sudo apt install php php-fpm php-mysql と。

インストール出来たかどうかは下記のようにすれば確認できる。

まずは PHP の確認。

$ php -v

PHP 8.3.6 (cli) (built: Sep 30 2024 15:17:17) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.6, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.6, Copyright (c), by Zend Technologies

続いて php-fpm の確認。

$ php-fpm8.3 -v

PHP 8.3.6 (fpm-fcgi) (built: Sep 30 2024 15:17:17)
Copyright (c) The PHP Group
Zend Engine v4.3.6, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.6, Copyright (c), by Zend Technologies

コマンドの応答としてはほぼ同じような内容になる。
PHP 8.3.6 の後に続く内容が違うだけだね。

てことで、PHP 関連のインストールもこれだけで、とりあえずはOK

設定ファイル(nginx.conf)の変更

Nginx に限らず PHP もだけど、本来は目的や求めるセキュリティに合わせて設定すべき項目がある。
けど、とりあえず、Nginx で PHP を動かすなら /etc/enginx/sites-enabled/default の「location」部分を変更すれば良い。

変更と言っても # を削除してコメントアウトすることと、php-fpm のバージョンに合わせて php8.3-fpm.sock の数字部分を変更するだけ。

# pass PHP scripts to FastCGI server
location ~ \.php$ {
        include snippets/fastcgi-php.conf;

        # With php-fpm (or other unix sockets):
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;

        # With php-cgi (or other tcp sockets):
        #fastcgi_pass 127.0.0.1:9000;
}

Nginx の再起動

以下のコマンドで Nginx を再起動。

$ sudo systemctl restart nginx.service

実行状況の確認は以下で。

$ sudo systemctl status nginx.service

 nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
     Active: active (running) since Mon 2024-12-09 10:15:08 JST; 55s ago
       Docs: man:nginx(8)
    Process: 60283 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 60287 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 60288 (nginx)
      Tasks: 2 (limit: 2276)
     Memory: 1.7M (peak: 1.9M)
        CPU: 11ms
     CGroup: /system.slice/nginx.service
             tq60288 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             mq60289 "nginx: worker process"

こんな感じで「Active」の項目が「active (running)」となっていればOK

実際に PHP が動作するかテスト

最後に PHP ファイルを用意して動作するか確認。

/var/www/html 配下に test.php (名称は任意)というような中身が下記なファイルを用意する。

<?php
  phpinfo();
?>

そして、ブラウザでそのファイルにアクセス

http://[server IP address]/test.php

こんな感じでいろいろ PHP 関連の情報が表示されればOK

以上で Nginx で PHP を動かすための最低限の作業が終了。

あとは目的や環境に合わせて良しなに。

この記事にコメントしてみる