1. TOP
  2. ラズベリーパイ
  3. セットアップ
  4. 初期設定とサーバー構築

ラズベリーパイ 初期設定とサーバー構築

※ 本ページにはプロモーション(Amazonアソシエイトのリンク)が含まれています。

Raspberry Piを、PLCのデータ収集やWeb表示に使うサーバーとして使えるようにするまでの手順メモです。
OSの初期設定(Wi-Fi・SSH・固定IP)から、Java・FTP・Apache・PHP・Node.js・MariaDBのインストールまでを、実際に打ち込むコマンドと一緒にまとめています。コマンドの右下にある「コピー」ボタンで、そのまま貼り付けて使えます。

ラズベリーパイそのものの概要や機種の選び方は「ラズベリーパイとは」を参照してください。

環境

項目内容
ハードウェアRaspberry Pi 4 Model B(4GB)
OSRaspberry Pi OS(64-bit)
接続有線LAN(eth0)に固定IP、Wi-Fiは初期設定用
OSのバージョンによって固定IPの設定方法が異なります。Bookworm(2023年10月~)以降は NetworkManager(nmcli)、Bullseye以前は dhcpcd を使います。お使いのバージョンは cat /etc/os-release で確認できます。
PR

この手順で使った機材

  • Raspberry Pi 4 Model B(4GB)この手順の動作確認機。新しく買うならPi 5でも同じ手順で動きますAmazon
  • USB-C 電源(5V/3A)電源不足はSDカード破損や不安定動作の原因になりますAmazon
  • microSDカード(32GB~)データベースを置くので、耐久性の高いものがおすすめAmazon
  • ケース(ファン付き)DBやWebサーバーを常時動かすので放熱対策をAmazon

Amazonのアソシエイトとして、当サイトは適格販売により収入を得ています。

セットアップ

ダウンロード

Raspberry Pi Imagerをダウンロードします

https://www.raspberrypi.com/software/

ダウンロードした「Raspberry Pi Imager」を実行してMicroSDカードに書き込みます。ここではRaspberry Pi 4 に Raspberry Pi OS(64-bit)をセットアップしています。OSはUbuntuなどのOSも選択できます。

Raspberry Pi Imager device
Secect your Raspberry Pi device
Raspberry Pi Imager operating system
Choose operation system
Raspberry Pi Imager storage device
Select your storage device
Raspberry Pi Imager hostname
Choose hostname

以降の項目を入力してインストールを完了すると次の画面のようになります

Raspberry Pi Imager Write Complete
Write Complete

作業の流れ

区分項目内容
Software Configuration ToolWi-Fi・ロケール・SSHOS書込み後に設定を変更する場合
固定IP有線LANに固定IPを割り当て
パッケージの更新apt update / upgrade
ソフトウェアJavaJDK
FTPvsftpd
Apache2Webサーバー
PHPApacheで動かすPHP
Node.js・npm・Chart.jsJavaScriptの実行環境とグラフライブラリ
NumPy・MatplotlibPythonの数値計算・グラフ
データベースMariaDBインストール・DB/ユーザー作成・外部接続
ログ出力実行されたSQLの確認(デバッグ用)
DBの移行バックアップとリストア
見える化(別ページ)MetabaseDBのデータをブラウザでグラフ化するBIツール(ラズパイ上で動かす)
Grafana Cloud(無料枠)クラウドのGrafanaからラズパイのDBを見える化(外出先からも閲覧可)

初期設定

Software Configuration Tool

OS書込み後に設定する場合は、raspi-config で変更できます。

$ sudo raspi-config
Software Configuration Tool メニュー
Software Configuration Tool メニュー

固定IP

PLCや他のPCから決まったアドレスでアクセスできるように、有線LAN(eth0)に固定IPを設定します。ここでは例として次のアドレスを使います。環境に合わせて変更してください。

項目設定例
IPアドレス192.168.0.100/24
デフォルトゲートウェイ192.168.0.1
DNS192.168.0.1

Bookworm以降(NetworkManager)現行

まず接続プロファイルの名前を確認します。

$ sudo nmcli connection show
NAME                UUID                                  TYPE      DEVICE
preconfigured       55dd2019-38f9-4b21-b160-d6408043729b  wifi      wlan0
lo                  cff20310-e389-4dd9-b607-b36de92abca9  loopback  lo
Wired connection 1  54d7c64b-aef7-3bde-b00d-249f1e0b383e  ethernet  eth0

DEVICEが eth0 の行(この例では Wired connection 1)が有線LANのプロファイルです。このプロファイルに固定IPを設定します(1行のコマンドです)。

$ sudo nmcli connection modify 'Wired connection 1' ipv4.method manual ipv4.addresses 192.168.0.100/24 ipv4.gateway 192.168.0.1 ipv4.dns 192.168.0.1

設定を反映します。

$ sudo nmcli connection reload
$ sudo nmcli connection up 'Wired connection 1'

設定されたか確認します。

$ ip -4 addr show eth0
SSHで接続したまま設定する場合:有線LAN経由でSSH接続している状態で connection up を実行すると、アドレスが変わった時点で接続が切れます。新しいIPアドレスで接続し直してください。Wi-Fi経由で作業すると安全です。

Bullseye以前(dhcpcd)旧OS

/etc/dhcpcd.conf を編集します。

$ sudo nano /etc/dhcpcd.conf
/etc/dhcpcd.conf
# ファイルの末尾に以下を追加
interface eth0
static ip_address=192.168.0.100/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1
noipv6

保存したら再起動します。

$ sudo reboot

パッケージの更新

まずはパッケージ一覧を更新し、インストール済みのパッケージを最新にしておきます。

$ sudo apt update
$ sudo apt upgrade -y

ソフトウェアのセットアップ

Java

JDKを入れればJRE(実行環境)も一緒に入ります。

$ sudo apt install -y default-jdk
$ java -version
default-jdk で入るのは、BookwormではJava 17です。最新のMetabaseはJava 25が必要なため、Metabaseを使う場合は「Metabaseのセットアップ」のページで別途Java 25を入れます。

FTP(vsftpd)

PCからファイルを転送するためにFTPサーバーを入れます。

$ sudo apt install -y vsftpd

設定ファイルを開き、次の行の先頭の # を外して有効にします。

$ sudo nano /etc/vsftpd.conf
/etc/vsftpd.conf
write_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES

サービスを再起動します。

$ sudo systemctl restart vsftpd
FTPはパスワードを暗号化せずに送ります。社内LANなど閉じたネットワークだけで使ってください。SSHが有効になっていれば、WinSCPなどでSFTP(暗号化あり)を使うこともできます。

Apache2

$ sudo apt install -y apache2

PCのブラウザで http://192.168.0.100/ を開き、Apacheの初期ページが表示されれば成功です。公開するファイルは /var/www/html/ に置きます。

PHP

$ sudo apt install -y php
$ php -v

Apacheを先に入れておくと、Apache用のPHPモジュールも一緒に入ります。動作確認する場合は、次のファイルを作ってブラウザで http://192.168.0.100/info.php を開きます(確認後は削除してください)。

$ echo '<?php phpinfo(); ?>' | sudo tee /var/www/html/info.php

Node.js・npm・Chart.js

$ sudo apt install -y nodejs npm
$ node -v
$ npm -v

グラフ描画ライブラリのChart.jsは、使うプロジェクトのディレクトリでインストールします(sudoは不要です)。

$ cd ~/myproject
$ npm install chart.js
ApacheのWebページで使うだけなら、npmで入れずにCDN(<script src="https://cdn.jsdelivr.net/npm/chart.js">)から読み込む方法もあります。工場内などインターネットにつながらない環境では、node_modules/chart.js/dist/chart.umd.js を /var/www/html/ にコピーして使います。

NumPy・Matplotlib

$ sudo apt install -y python3-numpy python3-matplotlib
Bookworm以降では、sudo pip install でシステムのPythonにパッケージを入れることができません(externally-managed-environment エラー)。aptにないライブラリを使う場合は、仮想環境(python3 -m venv)を作ってその中でpipを使ってください。

MariaDB(MySQL互換データベース)

インストール

$ sudo apt install -y mariadb-server

初期セットアップ

$ sudo mariadb-secure-installation

(以前は mysql_secure_installation でしたが、現在は上のコマンド名になっています)
次の6つを順に聞かれます。

質問意味検証環境本番運用
Switch to unix_socket authenticationLinuxのユーザーで自動認証する方式に切り替えるかnn
Change the root password?DBのrootパスワードを設定・変更するかnY
Remove anonymous users?匿名ユーザーを削除するかnY
Disallow root login remotely?外部のPCからrootでログインできないようにするかnY
Remove test database and access to it?テスト用データベース(test)を削除するかnY
Reload privilege tables now?設定を今すぐ反映するかYY

ここでは検証用として、ゆるい設定(ほぼ全部「n」)で進めています。現場で常時運用する場合は「本番運用」列のように設定してください。

データベースとユーザーの作成

$ sudo mariadb
MariaDB
-- データベース作成
CREATE DATABASE testDB;
SHOW DATABASES;                                   -- 確認

-- ユーザー作成(ユーザー: testuser  パスワード: passwd)
CREATE USER 'testuser'@'%' IDENTIFIED BY 'passwd';
SELECT user, host FROM mysql.user;                -- 確認

-- 権限付与(testDBに対する全権限)
GRANT ALL PRIVILEGES ON testDB.* TO 'testuser'@'%';
SHOW GRANTS FOR 'testuser'@'%';                   -- 確認

EXIT;
'%' はどのホストからでも接続できるという意味です。全データベースへの権限が必要な場合は testDB.* を *.* に変えてください。パスワードは必ず推測されにくいものに変更してください。

作成したユーザーでログインできるか確認します。

$ mariadb -u testuser -p
MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| testDB             |
+--------------------+

外部(PC・PLC)から接続できるようにする

初期状態では、ラズベリーパイ自身(127.0.0.1)からしか接続できません。設定ファイルを開きます。

$ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
50-server.cnf
# bind-address = 127.0.0.1   ← 先頭に # を付けてコメントアウト
bind-address = 0.0.0.0        # ← すべてのネットワークで待ち受ける

MariaDBを再起動します。

$ sudo systemctl restart mariadb

PCからは、ホスト 192.168.0.100、ポート 3306 で接続できます。PLCからDBへ直接書き込む場合(OMRON NJ/NXのDB接続など)も、同じアドレスとユーザーを使います。

ログ出力(実行されたSQLの確認)

デバッグ時に、実際に実行されたSQLを確認したいときに使います。

$ sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
50-server.cnf([mysqld] セクション内)
# すべてのSQLを記録
general_log_file = /var/log/mysql/mysql.log
general_log      = 1

# 時間のかかったSQL(10秒以上)を記録
slow_query_log      = 1
slow_query_log_file = /var/log/mysql/mariadb-slow.log
long_query_time     = 10
$ sudo systemctl restart mariadb
$ sudo tail -f /var/log/mysql/mysql.log
general_log はすべてのSQLを書き出すため、ログがすぐに大きくなり、microSDカードの寿命も縮めます。確認が終わったら general_log = 0 に戻してください。ログが必要な時だけgeneral_log = 1にしてください。

DBの移行(バックアップとリストア)

他のPCやラズベリーパイからデータベースを移行するときの手順です。

1. バックアップ(移行元)

$ mysqldump -u testuser -p testDB > testDB_backup.sql

2. データベース作成(移行先)

移行先にtestDBがまだない場合は作成します。

$ mysqladmin -u testuser -p create testDB

3. リストア(移行先)

リストアは mysqldump ではなく mysql(mariadb)コマンドで行います。

$ mysql -u testuser -p testDB < testDB_backup.sql

まとめ

ここまでで、ラズベリーパイ1台に「Webサーバー(Apache・PHP)」と「データベース(MariaDB)」がそろいました。
あとはPythonなどでPLCからデータを読み出してMariaDBに記録し、MetabaseやGrafanaで表示すれば、ブラウザから設備の状態を確認できるシステムになります。PLCとの通信方法は下の関連ページを参照してください。

関連ページ

ラズベリーパイとは

ラズベリーパイとは

歴史・現行機種のスペック・PLCとの連携構成を紹介します

OMRON FINS通信

OMRON FINS通信

PythonからOMRON製品とFINS通信します

KEYENCE 上位リンク通信

KEYENCE 上位リンク通信

PythonからKEYENCE PLCと上位リンク通信します

MITSUBISHI MCプロトコル通信

MITSUBISHI MCプロトコル通信

PythonからMITSUBISHIシーケンサとMCプロトコル通信します

参考

Raspberry Pi is a trademark of Raspberry Pi Ltd.
Amazonのアソシエイトとして、当サイトは適格販売により収入を得ています。

この記事へのコメント