このつづき。
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を実行できるようになった。
以上。
続きはこれ: