Raspberry pi OS で nginx 備忘録

Environment
Photo by hyt.

Raspberry pi OS で nginx 備忘録です.

Raspberry pi OS の ver. は 10 bluster です.Raspberry pi OS を入れた Raspberry pi の FQDN は rbp.local としておきます.また,以下の2つを実現させるだけの最低限の作業を行います.

  1. http://rbp.local でアクセスされたら https://www.google.com に転送
  2. 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 が表示されます.

Photo by hyt.

なお,この Welcome ページは,/var/www/html/index.nginx-debian.html が実体のようです.

PHP の導入

Apache の場合はインストールすると一緒に PHP のモジュールが導入され,はじめから PHP を使うことができますが,nginx の場合はモジュールではなく,UNIX もしくは TCP のドメインソケット通信経由で PHP と通信するんだそう(知りませんでした).

この辺りについては,

nginx と PHP-FPM の仕組みをちゃんと理解しながら PHP の実行環境を構築する - Qiita
前書きPHP の実行環境を構築する場合、ググると大体 nginx と PHP-FPM を設定し PHP の実行環境を構築する記事が沢山出てきます。インフラの知識がない頃、コピペでとりあえず 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

以上!

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