Ubuntu 20.04でNGINX&PHP-FPMのインストール・設定

Web・情報技術

このつづき。

Ubuntu 20.04にNGINX(エンジンエックス)及びPHP-FPMインストール・設定のメモ。

NGINXのインストール

aptコマンドでインストールする。だけ。

$ sudo apt install nginx

インストール時にufwに自動登録してくれる。

$ sudo ufw app list
利用可能なアプリケーション:
  Nginx Full
  Nginx HTTP
  Nginx HTTPS
  OpenSSH
  mosh

あとは例えば、VPSで運用しているのであれば、VPS側ファイアウォールでポートを開ければとりあえずサーバーの動作が確認できる。

WebARENA Indigoでのファイアウォール80番ポート開放

管理画面にログインし、ネットワーク管理→ファイアウォール→操作→ファイアウォールの編集、と進む。

インバウンドルール→新規ルール→HTTPとし、IPアドレスは「0.0.0.0」(どこからでもアクセス可)とでもしておく。

こんな感じ。最下部、更新ボタンを押下。

ブラウザから動作確認

サーバのIPアドレスをウェブブラウザのURLバーに入力する。すると、

といった画面が表示される。これが表示されているならNGINXは動作している。

設定ファイルとかウェブルートの場所とか

基本の設定ファイルの場所は↓。

/etc/nginx/nginx.conf

でもこのファイルを覗いてみるとウェブルートの場所の記述がない。

NGINXの設定については、このファイル自体をガンガン触るというより、必要なだけ他に設定ファイルを作り、includeするという整理にしたほうがいいみたい。

nginx.confの下の方に

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

という記述があるんだけど、./conf.d/には何もファイルが入っていない。

./sites-enabled/を見てみると、defaultという名前のファイルがある。開いてみると、

root /var/www/html;

という記述があり、現在のウェブルートが/var/www/html/であることがわかる。

必要に応じて変更なり何なりすればよし。

状態の確認・停止・スタート

状態の確認をするにはsystemctl statusコマンドを使う。

$ sudo systemctl status nginx
● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-09-24 22:50:46 JST; 16h ago
       Docs: man:nginx(8)
   Main PID: 66449 (nginx)
      Tasks: 2 (limit: 1136)
     Memory: 4.5M
     CGroup: /system.slice/nginx.service
             ├─66449 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             └─66452 nginx: worker process

Active: active(running)と書いてあって、稼働中であることがわかる。

停止・起動・再起動は以下のとおり。

$ sudo systemctl stop nginx //停止
$ sudo systemctl start nginx //起動
$ sudo systemctl restart nginx //再起動

自動起動の有効・無効を確認するには

$ systemctl is-enabled nginx
enabled

enabledと表示されていれば、システム起動時に勝手に起動する。

自動起動を無効化したり有効化したりするには

$ sudo systemctl disable nginx //無効化
$ sudo systemctl enable nginx //有効化 

とすればよし。

PHP-FPMのインストール

NGINXでPHPを動かすにはPHP-FPMをインストールのうえ設定する必要がある。

aptでインストール可能。PHPのバージョンに合わせてインストールする。

私の環境ではPHP8.1をインストールしているので、PHP-FPMも8.1用のものをインストールする。

なお現在aptの公式リポジトリにはなく、PPAをリポジトリに追加する必要がある。

$ sudo add-apt-repository ppa:ondrej/php
$ sudo apt install php8.1-fpm

パッケージ名はphp8.1-fpmなのにコマンド名はphp-fpm8.1だから混乱しちゃう。バージョン確認。

$ sudo php-fpm8.1 -v
PHP 8.1.0RC2 (fpm-fcgi) (built: Sep 23 2021 21:09:33)
Copyright (c) The PHP Group
Zend Engine v4.1.0RC2, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.0RC2, Copyright (c), by Zend Technologies

これをNGINXから利用できるように設定する。

まず、NGINXとPHPがやり取りを行うソケットファイルの場所を探す。

/etc/php/{PHPのバージョン}/fpm/pool.d/www.conf

を開き、”listen”とある部分を確認する。私の場合8.1なので、

listen = /run/php/php8.1-fpm.sock

となっている。これをnginxの設定ファイルに書き込む。

$ sudo vim /etc/nginx/sites-enabled/default

以下の記述のコメントアウトを外し、適宜編集する。

 location ~ \.php$ {
        include snippets/fastcgi-php.conf;
    
        # With php-fpm (or other unix sockets):
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; #ここのコメントアウトを外し、listenの場所に
        # With php-cgi (or other tcp sockets):
        #fastcgi_pass 127.0.0.1:9000; #ここはコメントアウトする
}   

NGINXの設定ファイルの文法が正しいかをチェックする。

$ sudo nginx -t                                                                                                         
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

正しければ、設定ファイルをリロードする。

$ sudo nginx -s reload

これでNGINXからPHPを実行できるようになった。

以上。

続きはこれ:

タイトルとURLをコピーしました