フォーラムの会員登録はメールを受信してパスワード設定です。

ラズパイ4にCentOSとPostgreSQLをインストールしてDBサーバー環境を構築

centos-install-titleRaspberry Pi 4B
この記事は約8分で読めます。

皆さんはラズパイをどんな用途でお使いでしょうか? 幅広い用途で気軽に使えるのがラズパイの良いところですが、今日はサーバー系の用途としては外せない「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として作業します。

ご紹介したサイトから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環境ということもあってラズパイでもかなり軽快に動作するのは嬉しいところです。

\ ラズパイダからのご案内:最初はすぐに始められるセット品が便利! /

Rasberry Pi 4B キット
NewLife NewDesing
¥10,980(2020/12/02 19:40時点)
 電池で動く携帯ゲーム機に!「 GPi Case Pi Zero Wセット」は貴重なZero W付
 細かい部材をまとめて「 電子回路実験用キット」(在庫限り)

ユーザー追加

いつまでも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サーバーにログイン

無事にログインできました!

実際に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へ放り込むことが可能です。

A5M2

これはこの記事で利用したキャプチャ画像をDBへ格納し、それをエディタで参照しているところです。

filedata列がバイナリに分解されたpng画像で、「BLOBエディタ」に表示されているのが元のpng画像です。

画像→バイナリ変換(その逆も)はエディタを使うのですが、それ以外はエクセルと同じ感覚で直接入力できる優れものです。紙の書類もDBへ放り込んでおけば整理整頓が捗りますね!

「エクセルで間に合ってるよ」という方も多いと思うのですが、データベース(RDBMS)は「保存する前にフリーズしてしまった!」とか、そんなことが起こらないように設計されています。冒頭でも書いたようにDBサーバーも気軽に試せるのがラズパイの良いところです。

大量のデータを格納しても瞬時に検索・参照できる快適さがあります。一人でも多くの方にぜひ味わって頂けたらと思います。

A5:SQL Mk-2https://a5m2.mmatsubara.com

この記事を書いた人:sandambara
sandambara
sandambara

最後までお読み下さり有難うございました。
またお目にかかりましょう!

Piレッド
Piレッド

sandambaraさん、ありがとうございます。sandambaraさんについてはこちら

コメント

タイトルとURLをコピーしました