見出し画像

RaspberryPi管理UIのWeb化についてP001

RaspberryPiを使っている皆様、ハードウェアの制御や各種センサの情報収集など利用価値の高いボードですよね。私も今まで、I2CコントローラやGPIOで各種モジュールを制御し、さまざまな情報を取集したりしていましたが、情報を確認するときにメール通知などしかしておらず、画面を使った管理はあまり実装していませんでした。Webアプリを作るのが大変で、それだったら、メールやsshでの確認でもいいやと思っていましたが、簡単にWebアプリが実装できるライブラリを見つけ、RaspberryPiでも動作することが判明したので紹介します。ライブラリは、webixというJavascriptライブラリです。既に、別の記事でいろいろ紹介していますが、今回から、webixライブラリをRaspberryPiで動作させ、モジュール情報をWeb画面で制御するサンプルを紹介します。RaspberryPiは、一般的なRaspbianを使っていますが、他のLinux系OSでも動作するはずです。webixライブラリ自身は、Javascriptで画面用ライブラリなので、RaspberryPiでは、Webサーバの実装とWebサーバ上で動かすサーバ系のアプリをどうするかだけです。この記事では、WebサーバにApache2 サーバ系アプリにPHPを使って環境を構築しています。
いろいろな情報を管理するにはデータベースも必要になるので、MariaDBもインストールします。PHPからrubyたPythonを起動できるので、ハードウェア制御は、rubyやpytonに任せて、画面構成のためにPHPとwebixを使います。既に、別の記事で紹介していますが、webixライブラリを使えば、パソコン向けのWeb画面もスマホ向けのWeb画面も実装できます。パソコンやスマホでは、ブラウザが動作すればいいだけなので、簡単に環境構築できます。RaspberryPiは、いろいろなボードが販売され、OSもいくつも動いていますが、この記事では、少し前のボードとOSで紹介させていただきます。(自宅にあった、環境に実装したので、少し古い環境です。
RaspberryPiは、しばらく電源を入れていなかった(OSのアップデータなど放置状態)ので、まずは、
2つのコマンドを実行して最新化をします。(時間が少しかかります)

# apt update
# apt full-upgrade -y

最新化する前の版数情報です。
Linux raspberrypi 6.1.19-v7+
PHP 7.4.33
ruby 2.7.4p191
MariaDB 10.5.15

PHPが、7.4なので8.xにアップします。アップ時には、一度、7.4をアンインストールして、パッケージリストにPHPのリポジトリを追加します。
参考にできるサイトです。
参考にさせていただきました。感謝です。

上記サイトの情報に従って、インストールされるPHPのバージョンを8系にします。
8.3になりました。

sudo apt depends php
php
  依存: php8.3

apt install php -yでPHPをインストールします。
続いて必要なPHPモジュールをインストールします。

# apt install php-bcmath php-mbstring php-xml php-mysql php-curl php-zip -y

Composerのインストールもしました。

raspberrypi:~ $ cd work
raspberrypi:~/work $ ls
raspberrypi:~/work $ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
raspberrypi:~/work $ php -r "if (hash_file('sha384', 'composer-setup.php') === 'dac665fdc30fdd8ec78b38b9800061b4150413ff2e3b6f88543c636f7cd84f6db9189d43a81e5503cda447da73c7e5b6') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
Installer verified
raspberrypi:~/work $ php composer-setup.php
All settings correct for using Composer
Downloading...

Composer (version 2.7.2) successfully installed to: /home/yokoshi/work/composer.phar
Use it: php composer.phar

raspberrypi:~/work $ php -r "unlink('composer-setup.php');"
raspberrypi:~/work $ ls
composer.phar
raspberrypi:~/work $ sudo mv composer.phar /usr/local/bin/composer
raspberrypi:~/work $

以下のURLを参考にしています

php -v

PHP 8.3.3-1+0~20240216.17+debian11~1.gbp87e37b (cli) (built: Feb 16 2024 10:33:07) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.3.3, Copyright (c) Zend Technologies
with Zend OPcache v8.3.3-1+0~20240216.17+debian11~1.gbp87e37b, Copyright (c), by Zend Technologies

8.3.3がインストールできました。環境設定(php.ini)をしたいので、どこにあるかを確認することも含め、phpinfo();を実行

/etc/php/8.3/apache2/php.iniであることを確認して、オリジナルのphp.iniをコピーして保存後に、編集します。
まずは、以下の範囲で編集しました。

root@raspberrypi:/etc/php/8.3/apache2# diff  php.ini  php.ini.org
419c419
< max_execution_time = 180
---
> max_execution_time = 30
445c445
< memory_limit = 32G
---
> memory_limit = 128M
865c865
< upload_max_filesize = 4G
---
> upload_max_filesize = 2M
989c989
< date.timezone ='Asia/Tokyo'
---
> ;date.timezone =

PHPに関する環境設定(php.ini)についても、ネット上に多くの情報があるので、参考にしてください。

phpのデバックログ(error_log)ですが、RaspberryPiの場合、php.iniの記述だけでは、指定フォルダにならないようです。apache2の環境定義が優先されるようで、/etc/apache2/sites-enabled/000-default.confに記述されているErrorLog ${APACHE_LOG_DIR}/error.logをコメントアウトしないと、こちらが優先されるみたいですね。この記述をコメントアウトすると、次は、/etc/apche2/apache2.conf内のErrorLog ${APACHE_LOG_DIR}/error.logが優先されるみたいです。
このあたりは、後日、整理するとして、実際に動作する環境を構築します。
/var/www/html配下に以下のように配備します。

webix_GPL_1020は、webixライブラリです。以下の記事を参考に構築します。

画面用のソースは、viewに格納し、REST_API(サーバアプリ)は、rest_apiに格納します。MiniPCにセットした方法とほぼ同様の実装で、RaspberryPiでもwebix環境が構築できます。
今後、画面からの操作で、RaspberryPiに実装したモジュールを制御して情報取得などの画面を紹介したいと思います。


この記事が気に入ったらサポートをしてみませんか?