皆さんはラズパイをどんな用途でお使いでしょうか? 幅広い用途で気軽に使えるのがラズパイの良いところですが、今日はサーバー系の用途としては外せない「CentOS+DBサーバー環境」を構築してみたいと思います。
本格的な運用が前提ですとセキュリティやパフォーマンス、ストレージ容量に可用性など考慮しなければならない点がたくさんありますが、個人的な用途であれば十分試してみる価値はあると思います。皆さんも是非一度トライしてみてくださいね。
今回の環境
今回は「お試しDB」ということで「なるべく簡単に環境を構築する」をテーマにしたいと思います。
- Raspberry Pi 4B(8GBモデル)
- 有線LAN接続
- CentOS 7.9.2009
- PostgreSQL 9.2.4
ラズパイのメモリは4GBでも問題ありません。ネットワークについては手数を減らせる有線LAN環境で作業しました。
では、早速参りましょう!
CentOSをダウンロードする
山形大学のサイトで配布されているものをダウンロードしました。
Index of /pub/linux/centos-altarch/7/isos/armhfp
こちらから「CentOS-Userland-7-armv7hl-RaspberryPI-Minimal-4-2009-sda.raw.xz」をダウンロードしてSDカードに落とし込みます。
同じディレクトリに「GNOME」や「KDE」という文字列が含まれるファイルがありまして、「おっ!GUI環境あるじゃん!」と飛びつかないようにご注意ください。残念ながらラズパイでは動きません。(体験済み)
CentOSを起動してみよう!
いつも通りSDカードをラズパイに挿入し、電源を入れるとほどなくCUIのログイン画面が現れますのでOSにログインしましょう。
ユーザー名:root パスワード:centos
パスワードはそのままでも構いませんが、本番環境として利用される場合は必ず変更しておきましょう。
passwd [Enterキー]
新しいパスワードを2回聞かれます。
IPアドレスを固定する
サーバー用途ですのでIPアドレスを固定します。設定可能なIPアドレスを決め、デフォルトゲートウェイとDNSサーバーのIPアドレスを控えておきましょう。
ここではIPアドレスを192.168.1.10、サブネットマスクは24ビット(255.255.255.0)デフォルトゲートウェイとDNSサーバーはいずれも192.168.1.1として作業します。
https://raspida.com/ipaddress-netmask
ご紹介したサイトからOSをダウンロードされた場合は下記の通り入力頂ければ大丈夫です。
nmcli con mod "Wired connection 1" connection.id eth0
nmcli con mod eth0 ipv4.method manual ipv4.addresses "192.168.1.10/24" ipv4.gateway "192.168.1.1" ipv4.dns "192.168.1.1"
nmcli c down eth0 && nmcli c up eth0
ip a
と入力し「eth0」の箇所が入力した通りになっていたらOKです。
初心者向けにnano
CentOSのエディタと言えばViですが私はnanoを使っています。初心者にも使いやすいのでおススメです。
yum -y install nano
日時の設定
インストール直後はタイムゾーンが日本ではありません。確認してみましょう。
timedatectl
date
UTCで表示されたと思いますので、これをJSTになるよう変更します。
timedatectl set-timezone Asia/Tokyo
date
無事日本時間が表示されるようになりました。
アップデート
続いてアップデートを済ませましょう
yum -y update
この辺りで「意外と軽快に動くな」と感じられた方もおられるのではと思います。個人的にCentOSは重たいイメージがあるのですが、非GUI環境ということもあってラズパイでもかなり軽快に動作するのは嬉しいところです。
ユーザー追加
いつまでもrootで作業するのはよろしくないので、一般ユーザーを作って作業を続けましょう。
adduser sandambara
もちろんお好きなユーザー名で構いません。
passwd sandambara
お好きな新しいパスワードを入力してEnter⇒再度入力
ユーザーをwheelに追加
CentOSでは一般ユーザーに管理者権限(sudoコマンド)を与えるためにWheelグループに追加します。
usermod -aG wheel sandambara
ユーザーの切り替え
su - sandambara
PostgreSQLをインストールする
新しいバージョンをインストールする場合はいくつか追加の手数が必要ですが、今回の旧バージョンであればコマンド一発です。
sudo yum -y install postgresql-server postgresql-contrib postgresql-devel
あっけないくらいインストールは直ぐに終わります。続いてDBを初期化しましょう。
sudo postgresql-setup initdb
続いて2つのファイルを修正します。
sudo nano /var/lib/pgsql/data/postgresql.conf
sudo nano /var/lib/pgsql/data/pg_hba.conf
- postgresql.confの59行目「listen_addresses」の右辺を
'*'
にする。 - pg_hba.confの80行目localを
trust
に変更する。 - pg_hba.conf81行目以降IPv4部分をご利用の環境に合わせて書き換えてください。METHODは
md5
。
ここまでできたら設定を反映させるためDBを再起動し、スーパーユーザーでログインします。
nmcliで設定した例でLAN内の全端末からアクセスを許可するにはhost all all 192.168.1.0/24 md5
です。
DB再起動
postgresqlサービスの再起動はsystemctl restartコマンドです。
sudo systemctl restart postgresql
ユーザーpostgresでログインする
psql -U postgres

無事にログインできました!
実際にDBを作成&データ登録
ここまできたら折角ですのでOS同様に一般ユーザーを作成し、簡単なデータを登録してみましょう。
一般ユーザーの作成
create role sandambara with password 'パスワード';(一般ユーザー作成)
create database sandambara;(一般ユーザー用データベース作成)
grant all on database sandambarat to sandambara;(一般ユーザーに権限付与)
alter rolo sandambara login;(DBにログインを許可する)
\connect sandambara sandambara(DBのsandambaraにUser名sandambaraとして)
テストテーブル作成例
idはデータの管理番号(主キー)です。
memotextは、なにかしらメモ書きを入れる列のことです。
create table test(id int not null, memotext text not null, constraint pk_test primary key(id));
テストデータ登録例
1行目にhogehoge、2行目にfugafugaを列memotextに登録します。
insert into test(id, memotext) values(1, 'hogehoge');
insert into test(id, memotext) values(2, 'fugafuga');
内容の確認
内容の表示をSelect文で指定します。
select * from test order by id;
commit;
実行結果
sandambara=> select * from test order by id; id | memotext ----+--------- 1 | hogehoge 2 | fugafuga (2 rows)
同じように表示されたでしょうか?
データベースって凄い仕組みだなあといつも思います。それがフリーで利用できるなんて素晴らしい!

データベースから抜ける
では、データベースを抜けてOSに戻りましょう。
\q
実際の運用事例
データベース(DB)の具体的な使い道は、会計データやテキストデータの保存や画像データの保存など、本当に工夫次第で色々です。私は自宅に届く書類をPDFに変換してDBで保管しています。
PDFの場合はアプリを自作するかSQLをゴリゴリ書かないといけないのですが、JPEGやPNGなどはA5M2というフリーソフト(Windows用)を使えば丸ごとDBへ放り込むことが可能です。

これはこの記事で利用したキャプチャ画像をDBへ格納し、それをエディタで参照しているところです。
filedata列がバイナリに分解されたpng画像で、「BLOBエディタ」に表示されているのが元のpng画像です。
画像→バイナリ変換(その逆も)はエディタを使うのですが、それ以外はエクセルと同じ感覚で直接入力できる優れものです。紙の書類もDBへ放り込んでおけば整理整頓が捗りますね!
「エクセルで間に合ってるよ」という方も多いと思うのですが、データベース(RDBMS)は「保存する前にフリーズしてしまった!」とか、そんなことが起こらないように設計されています。冒頭でも書いたようにDBサーバーも気軽に試せるのがラズパイの良いところです。
大量のデータを格納しても瞬時に検索・参照できる快適さがあります。一人でも多くの方にぜひ味わって頂けたらと思います。
A5:SQL Mk-2:https://a5m2.mmatsubara.com
この記事を書いた人:sandambara
最後までお読み下さり有難うございました。
またお目にかかりましょう!