IoTではないRaspberry Piの使い方

以前の記事

で記述した通り、Raspberry Piはサイズ的にはクレジットカードとほぼ同じ大きさしかありません。

しかし、このサイズでも立派にコンピュータとして動作します。

初期設定については上のリンクを参考にして頂くとして、設定が終わったRaspberry Pi は、Linuxで動作するコンピュータ状態になります。

専用のRaspberry Pi OS こと Rasbian は、DebianというLinuxをベースにしていて、Debianで設定できるものは、ほとんどのものが実行できます。

つまり、この小さなコンピュータをサーバーとして使う事も可能なのです。

上記の記事の sudo apt-get upgrade を実行するところまでは進んでいる必要があります。

WebサーバーとしてApacheをインストール

それでは、Raspberry Pi、ラズパイにApacheをインストールしてみましょう。

ターミナルを開き

sudo apt install apache2

でインストールできます。

完了すれば、同じLANに繋がっているパソコンから

http://[ラズベリーパイのホスト名]

で接続できます。

WebサーバーでPHPを実行可能にする

動的コンテンツを実行するためのPHPも、コマンド一つで導入できます。

sudo apt-get install php

記事の執筆時点では、PHP 7.4が導入されました。

pi@raspberrypi:~ $ php -v
PHP 7.4.28 (cli) (built: Feb 17 2022 16:17:19) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.28, Copyright (c), by Zend Technologies

それでは、ApacheからPHPを呼び出してみます。

インストールしたApacheのルートディレクトリは、/var/www/html になりますので、そこに info.php というファイルを作成します。

$ cd /var/www/html
var/www/html $ sudo vi info.php

<?php
phpinfo();
?>

viエディタを保存したら、

http://[ラズベリーパイのホスト名]/info.php

で呼び出します。

これでPHPも実行できるようになりました。

データベースサーバーとしてmariaDBをインストール

次に、Raspberry Pi、ラズパイ に mysql をインストールして、データベースを使えるようにしましょう。

mysqlから派生したmariaDBが一般的になりつつあるので、そちらをインストールします。

sudo apt-get install mariadb-server

導入できたら、DBの初期設定を行います。

$ sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):←そのままリターン
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] Y ←Yを選択
Enabled successfully!
Reloading privilege tables..
 ... Success!


You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] Y ←Yを選択
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y ←Yを選択
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y ←Yを選択
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y ←Yを選択
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y ←Yを選択
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!
$

初期設定が完了したら、データベースの起動を確認してみます。

$ mysql -u root -p
Enter password:← 初期設定で決定したパスワード
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 54
Server version: 10.5.12-MariaDB-0+deb11u1 Raspbian 11

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.001 sec)

MariaDB [(none)]>

コマンドでデータベースを操作するのは面倒なので

データベースのメンテナンス用に、phpMyAdminをインストールします。

sudo apt install phpmyadmin

設定が進行すると、次の画面が現れます。

インストールしているのはApacheなので、apache2 の方でスペースキーを押下し、TABキーで了解します。

apache2の方に*(アスタリスク)が付いている事を確認してください。

最後にこのような確認が出ますが、既にmariaDBをインストールしてあるので、TABキーで<いいえ>に移し、Enterで確定します。

インストールが完了したら、

http://[ラズベリーパイのホスト名]/phpmyadmin/

で接続すると、このようにphpmyadminの画面が表示されます。

データベースとWEBサーバーが出来たので、WordPressを動かしてみましょう

WEBサーバー、PHP、データベースが実行出来る環境が揃いましたので、CMSシステムのWordPressを入れてみましょう。

まず、下準備としてApacheの設定をします。

$ a2enmod rewrite
$ sudo vi /etc/apache2/sites-available/000-default.conf

    <Directory /var/www/html>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost> ← これの前に、上5行をコピーして:x!で保存
$ sudo service apache2 restart

こちらのページを参考にさせていただきました。

最初のは、Apacheにmod_rerite というモジュールを読み込むためのものです。

このモジュールは、URLを書き換えやリダイレクトを行います

次に、mod_rerite でURLを書き換えやリダイレクトを行うディレクトリを、メインのルートディレクトリに設定します。

最後の1行でApacheを再起動しています。

実は1度これを飛ばしてWordPressをインストールしたところ、トップページの他には何処にも移動できないものが出来上がりました。

固定ページや投稿ページを設定するには、上記の設定が必須です。

あとはコマンドで簡単にWordPressを導入できます。

WEBサーバーのホームディレクトリで、WordPressの書庫ファイルを取得します。

$ cd /var/www/html/
$ sudo wget https://ja.wordpress.org/latest-ja.tar.gz

記述のURLをよくみると上記のWordPressのメインサイトである事が判ります。

WEBブラウザで接続し、WordPressを入手のボタンを押下すると表示されるダウンロードページで、「tar.gz をダウンロード」の部分のリンクがまさにコマンドのリンクそのままですね。

ファイルの取得が完了したら、展開します。

pi@raspberrypi:/var/www/html $ ls
index.html  info.php  latest-ja.tar.gz <-このファイルが出来ている。

pi@raspberrypi:/var/www/html $ sudo tar -xzvf latest-ja.tar.gz

pi@raspberrypi:/var/www/html $ ls
index.html  info.php  latest-ja.tar.gz  wordpress <-このディレクトリが出来ている。

次に所有者を確認します。

pi@raspberrypi:/var/www/html $ ls -la
合計 19092
drwxr-xr-x 3 root root     4096  3月 17 13:52 .
drwxr-xr-x 3 root root     4096  3月 16 19:41 ..
-rw-r--r-- 1 root root    10701  3月 16 19:41 index.html
-rw-r--r-- 1 root root       20  3月 16 22:10 info.php
-rw-r--r-- 1 root root 19520078  3月 11 12:10 latest-ja.tar.gz
drwxr-xr-x 5 1006 1006     4096  3月 11 12:09 wordpress

このように、WordPressディレクトリの所有者がrootになっています。

一方、WEBブラウザから呼び出した時に、それを実施するユーザーは、

/etc/apache2/envvars

内に記載されています。

vi /etc/apache2/envvars

-------------------------------------
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

と記載されていますから、WEBブラウザで実行すると、www-data というユーザーが閲覧や書き込みをしようとします。

先ほど確認したとおり、htmlフォルダは drwxr-xr-x になっていますから、書き込み出来るのは1006ユーザだけ。

www-dataユーザーは、閲覧と実行は出来ますが、書き込みが出来ない為、このままではWordPressの実行に支障がでます。

このため、WordPressフォルダの所有者をwww-dataユーザーに変更しておきます。

pi@raspberrypi:/var/www/html $ sudo chown -R www-data:www-data wordpress
pi@raspberrypi:/var/www/html $ ls -la
合計 19092
drwxr-xr-x 3 root     root         4096  3月 17 13:52 .
drwxr-xr-x 3 root     root         4096  3月 16 19:41 ..
-rw-r--r-- 1 root     root        10701  3月 16 19:41 index.html
-rw-r--r-- 1 root     root           20  3月 16 22:10 info.php
-rw-r--r-- 1 root     root     19520078  3月 11 12:10 latest-ja.tar.gz
drwxr-xr-x 5 www-data www-data     4096  3月 11 12:09 wordpress

次に、WordPressが使用するデータベースを設定します。

既にphpMyAdminがインストールされていますから、

http://[ラズベリーパイのホスト名]/phpmyadmin/

で起動し、データーベース名 wordpress を utf8_general_ci で作成します。

データベースが出来たら、WordPressを起動します。

http://[ラズベリーパイのホスト名]/wordpress

をWEBブラウザから呼び出せば、次のようにWordPressの初期画面が起動します。

「さあ、始めましょう」を押下し、設定を行います。

データベース名は、先ほど phpMyAdmin でwordpress を作成しました。別名で作成した場合はその名前にします。

ユーザー名は、mariaDB を設定したとき、rootのパスワードを設定しましたので、root と パスワードを設定します。

データベースのホスト名は、今回は1台に同居させているのでlocalhostになります。

これで送信を押下すると、

データベースとの通信ができたとの表示になりますので、インストールを実行します。

インストールに成功しました。サイトのタイトル、ユーザー名、メールアドレスは入力の必要があります。

パスワードは自動的に生成されますので、記録しておきましょう。

ログイン画面になるので、先ほど設定のユーザー名とパスワードを入力します。

ファイルサーバーとしてsambaをインストール

Raspberry Pi は、OSがLinuxに相当するので、Windowsパソコンからのファイル操作がやりづらい部分があります。

このため、Raspberry Pi ラズパイにsambaをインストールして、Windows パソコンから直接、Raspberry Pi上のファイルを作成/修正/削除できるようにしてしまいましょう。

ターミナルを開き

$ sudo apt install samba

でインストールできます。

インストールが完了した時点で、既にWindowsネットワークとして動作しています。

Raspberry Piと同じLAN上にあるWindowsパソコンのエクスプローラーに次のように入力します。

\\[ラズベリーパイのホスト名]

このように、繋がる事は繋がりますが、なにも存在していません。

これは設定がデフォルト状態のため、共有先が一つも記載されていないためですので、設定ファイル smb.conf を修正します。

sudo vi /etc/samba/smb.conf

で修正を行います。

ファイルの最後に

[web]
   comment = WebDocumentRoot
   path = /var/www/html
   force user = root
   guest ok = no
   create mask = 0755
   directory mask = 0755
   read only = no

[pi]
   comment = PiHomeDirectory
   path = /home/pi
   force user = pi
   guest ok = no
   create mask = 0700
   directory mask = 0755
   read only = no

を追記します。

この記述で、2つの共有先を設定しています。

force user で指定したユーザーで内部処理がされます。

次に接続のため、指定したユーザーのSMBパスワードを設定します。

[web] は force user = root になっていますが、こちらは無くても動作しました。

$ sudo smbpasswd -a pi
New SMB password:
Retype new SMB password:
Added user pi.

$sudo systemctl restart smbd

ユーザー:pi のパスワードを新規設定するという意味で、パスワードを2回打って確定します。

最後の行はsambaの再起動です。

これで、先ほどと同じく、Windowsのエクスプローラーから

\\[ラズベリーパイのホスト名]

でRaspberry Piに接続すると

このように、先ほど設定ファイルで記載した接続先が表示されます。

どちらかの接続先をクリックすると、認証を求められますので、先ほどsudo smbpasswd で設定したユーザー名とパスワードを入力します。

すると、以下のようにエクスプローラーにファイルが表示されます。

見覚えのあるとおり、PHPのインストールの際にテストしたファイルや、ダウンロードしたWordPressのファイル、WordPressのディレクトリなどが表示されれいます。

piの方は、piユーザーのホームディレクトリが表示されます。

これで例えば、このRaspberry PiのWEBサーバーでテストするHTMLファイルやPHPファイルをWindowsから直接編集したり、piのホームディレクトリに配置したPythonのソースコードを直接Windowsから編集するような事が可能になり、利便性がかなり向上するでしょう。

セキュリティにはご注意

このように、小さなLinuxパソコンと捉えると、様々なサーバー類を投入して手軽に試す事が可能になります。

今回構築した環境では、Raspberry Piが元々持っているPython、インストールしたPHPを使い、WEBアプリなどを開発できます。

このサイズですから場所も取らず、消費電力も小さいので、複数台を稼働させて、それぞれ違う内容のWEBサーバー試験を平行で行う事なども可能です。

ただ、今回の内容は、まったくセキュリティを考慮していません。

長期間の運用や、外部からの接続を可能にする事は、致命的なリスクになります。

あくまで試験環境として、短期間の開発・試験などにとどめ、終了後はOSごと初期化する事をおすすめします。

コメントを残す

メールアドレスが公開されることはありません。