IoTではないRaspberry Piの使い方(nginxの場合)

目次
はじめに
では、Raspberry PiにApache、MariaDB、PHPをインストールして、小型のWEBサーバーにする方法をご紹介しました。
今回は、WEBサーバーを nginx にしてみます。
nginxとは?
まず、読み方からいきましょう。
あなたの周りで、IT関係の技術者だという方がいらしたら、これを読ませてみましょう。
「にじっくす?」「ねぎっくす?」
こんな読み方をしたら、その人がIT関係者というのはかなり怪しいです。
という小話にもなっていますが、これで「えんじんえっくす」と呼びます。
WEBサーバーとしてはApache(あぱっち)はかなり有名でシェアも多いのですが、nginxも急速にシェアを伸ばしています。
Webサーバーとしてnginxをインストール
前提として、こちらのRaspberry Pi OSのセットアップが終わっている事とします。
それでは、Raspberry Pi、ラズパイにnginxをインストールしてみましょう。
ターミナルを開き
sudo apt install nginx
でインストールできます。
完了すれば、同じLANに繋がっているパソコンから
http://[ラズベリーパイのホスト名]
で接続できます。
Raspberry Piには、Google Clome のオープンソース版 Chromium が搭載されてますから、localhost で接続できます。

nginxでPHPを実行可能にする
nginxでもPHPは実行できますが、Apacheとは方法が若干異なります。
まずはPHPをインストールします。
sudo apt-get install php php-fpm
記事の執筆時点では、PHP 7.4が導入されました。
$ php -v
PHP 7.4.30 (cli) (built: Jul 7 2022 15:51:43) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
with Zend OPcache v7.4.30, Copyright (c), by Zend Technologies
それでは、nginxからPHPを呼び出してみます。
インストールしたnginxのルートディレクトリは、/var/www/html になりますので、そこに info.php というファイルを作成します。
$ cd /var/www/html
var/www/html $ sudo vi info.php
<?php
phpinfo();
?>
viエディタを保存したら、
http://[ラズベリーパイのホスト名]/info.php
で呼び出します。

PHPが実行されず、作成したPHPファイルがダウンロードされてしまいます。
Apacheの場合、PHPをインストールしただけでApacheがPHPを呼び出してくれますが、nginxでは「php-fpm」を使用するため、インストールしただけではPHPが使用できないのです。
そこで、nginxからphp-fpmを呼び出す設定を行います。
$ sudo vi /etc/nginx/sites-available/default
server_name _;<=これを探す
index index.html index.php;<=下についか
# 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.4-fpm.sock;
# With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
}
上記の location ~ .php$ あたりがコメントアウトされていますので、#を削除してコメントアウトを解除します。
fastcgi_pass unix:/run/php/php7.4-fpm.sock; の部分は、PHPのバージョンに依存します。
上記の場合、PHPのバージョンが7.4だったため、/run/php/php7.4-fpm.sock ですが、Raspberry Pi 3のLegacy OSで試したところ、PHP がバージョン7.3だったため、この部分が /run/php/php7.3-fpm.sock になっていました。
ここまで完了したら、念のため、Raspberry Piを再起動します。
nginxとPHPを再起動する手もありますが、Raspberry Piは簡単に再起動できるのでww
再起動が完了したら、再度、http://[ラズベリーパイのホスト名]/info.php を呼び出してみます。

今度は、PHPが実行されました。
phpMyAdminをインストールする
データベースサーバのインストールは、
と変わらず、sudo apt-get install mariadb-server でインストールし、sudo mysql_secure_installationで初期設定を行います。
ただ、データベースをコマンドで操作するのは面倒なので、GUIでデータベースを操作できるphpMyAdminをインストールします。
Apacheでは、コマンドでインストールするだけで使用できますが、nginxの場合は少々設定が必要です。
sudo apt install phpmyadmin
でインストールします。
途中、次の画面が現れます。

ここで、nginxの指定が無いため、どちらにもチェック(*マーク)がつかないようにして、tabキーで了解に移動し、Enterを押下します。

最後にこのような確認が出ます。今回はnginxの設定なので、<はい>を選択します。
処理が進行すると、次の画面になります。

今回はそのまま<了解>で進行し、正常に完了しました。
次に、nginxからphpMyAdminを呼び出す設定を用意します。
phpmyadmin.conf というファイルを/etc/nginx/conf.d/の下に作成し、以下のserverから下の部分を貼り付けします。
$ sudo vi /etc/nginx/conf.d/phpmyadmin.conf
server {
listen 80;
server_name localhost;
location /phpmyadmin {
alias /usr/share/phpmyadmin;
index index.php;
}
location ~ ^/phpmyadmin/(.+\.php)$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/phpmyadmin/$1;
include fastcgi_params;
}
}
次にインストールされたphpMyAdminのパスへのリンクを、htmlのルートフォルダに作成します。
sudo ln -s /usr/share/phpmyadmin /var/www/html
完了したら、Raspberry PiのブラウザでphpMyAdminを起動してみます。
呼び出しは、http://[Raspberry Pi のIP]/phpmyadmin/ です。
今回は、Raspberry PiのChromium から localhost で呼び出してみます。

正常に呼び出しに成功しました。
ユーザー名はroot、データベースの初期設定で入力したパスワードでログイン可能です。
nginxでWordPressを動かす
WEBサーバー、PHP、データベースが実行出来る環境が揃いましたので、CMSシステムのWordPressを入れてみましょう。
の手順で問題なく動作します。
$ cd /var/www/html/
$ sudo wget https://ja.wordpress.org/latest-ja.tar.gz
$ sudo tar -xzvf latest-ja.tar.gz
$ sudo chown -R www-data:www-data wordpress
でWordPressのプログラムをHTMLのルートディレクトリに取得し、展開し、所有者を変更します。

先ほど設定したphpMyAdminでwordpressというデータベースを作成します。

&
http://&#x5B;ラズベリーパイのホスト名http://&#x5B;ラズベリーパイのホスト名
/wordpress で呼び出せば、セットアップ画面が表示されます。"]

無事にWordPressが実行されました。
Raspberry PiのIPアドレスに同じLAN上のパソコンから接続すれば、PCからも見る事が可能です。
まとめ
最初に設定する項目が多く、しかも設定内容をファイルに書き込んでサーバー類を再起動というものが多いため、少々手間に感じます。
ですが、処理が軽いとの事なので、マシンパワー的には余裕が少ないRaspberry Piには向いているかもしれません。