Raspberry pi OS で nginx 備忘録です.
Raspberry pi OS の ver. は 10 bluster です.Raspberry pi OS を入れた Raspberry pi の FQDN は rbp.local としておきます.また,以下の2つを実現させるだけの最低限の作業を行います.
- http://rbp.local でアクセスされたら https://www.google.com に転送
- PHP が使える
Nginx のインストール
まずは Raspberry pi OS に nginx を導入しますが,これは最新版を入れたいとかじゃなければ apt で普通に入ります.
$ sudo apt install nginx $ sudo systemctl start nginx.service $ sudo systemctl enable nginx.service
導入した時点で,自動起動の設定が行われるようですが,念のため,手動でも自動起動の設定をしておきます.これで,http://rbp.local にアクセスすれば,Welcome が表示されます.
なお,この Welcome ページは,/var/www/html/index.nginx-debian.html が実体のようです.
PHP の導入
Apache の場合はインストールすると一緒に PHP のモジュールが導入され,はじめから PHP を使うことができますが,nginx の場合はモジュールではなく,UNIX もしくは TCP のドメインソケット通信経由で PHP と通信するんだそう(知りませんでした).
この辺りについては,
に分かりやすい説明がありますが,Raspberry pi OS でそのための環境を整えるには,最低限 php-fpm を導入するだけで良い様です.
$ sudo apt install php-fpm
もちろん,php-fpm を入れると依存関係で,php も入ります.導入されるバージョンは現在のところ,
$ php -v PHP 7.3.19-1~deb10u1 (cli) (built: Jul 5 2020 06:46:45) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.19, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.3.19-1~deb10u1, Copyright (c) 1999-2018, by Zend Technologies
の通りです.この php-fpm も導入した時点で自動起動するよう設定されるようです.
最後に,nginx で php を使えるよう設定ファイル /etc/ngnix/sites-availavle/default に以下の変更を加えます.
$ sudo vi /etc/ngnix/sites-availavle/default .... # 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/php7.3-fpm.sock; # # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; }
設定内容は,*****.php のファイル名の場合は,UNIX ドメインソケット経由で PHP の FastCGI サーバーへリクエストを渡せ,ということのようです.なお,
fastcgi_pass 127.0.0.1:9000;
の方をコメントアウトして有効化した場合は TCP ドメインソケット経由になるみたいですが,動作速度は UNIX ドメインソケットの方が速いようなので,別に理由がなければ UNIX ドメインソケット経由にした方が良いみたいです.
動作確認のため,以下の内容で /var/www/html/phpinfo.php ファイルを作成します.
$ sudo vi /var/www/html/phpinfo.php <?php phpinfo(); ?>
あとは http://rbp.local/phpinfo.php にアクセスして,PHP の情報が表示されればOKです.
なお,確認後はわざわざ自分のサーバーの PHP の情報を公開する必要は(セキュリティ的な意味でもあまり望ましく)ないので,私の場合はファイルを削除しています.
転送その他の設定
これで最低限使える(もちろん暗号化等全く考慮してないので,せいぜいローカルなサイトを作るとかテスト的なサイトを作る程度ですが)ものが出来上がりました.しかし,私の場合,あまり Welcome サイトが表示されるのは好きではありません.それで http://rbp.local から Google 検索に転送されるように設定することにしました.
http://rbp.local にアクセスされたら Google に転送されるようにするだけなら簡単です.これは,/var/www/html/index.html を以下の内容で作れば良いだけです.
$ sudo vi /var/www/html/index.html <!DOCTYPE html> <html> <head> <meta http-equiv="refresh" content="0;URL=http://www.google.com"> </head> </html>
ただし,これだけだと,http://rbp.local/index.nginx-debian.html のようにアクセスされると相変わらず Welcome ページが表示されてしまいます.もちろん index.nginx-debian.html ファイルを消しても良いのですが,アップデートとかしたら作成されそうな気がするので,nginx の設定ファイルに転送設定を付け加えることにしました.
$ sudo vi /etc/nginx/sites-available/default .... # Add index.php to the list if you are using PHP index index.html index.htm index.nginx-debian.html; server_name _; location ^~ /index.nginx-debian.html { return 301 https://www.google.com; } location / { ....
設定後,nginx を再起動して,想定通り動作することを確認して完了です.
$ sudo systemctl restart nginx.service
以上!