CentOS7のRaspberry_Pi3_Model_BへMariaDBをインストール

小さな筐体のRaspberry_PiへGUI環境のLinuxOSを入れApacheとPHPもインストールが出来たところに、いよいよMariaDBをインストールします。

CentOSが最小インストールでなかったのでMariaDBは既に入っているのかと思ったら少し違うようでした。PCでのインストール手順と同様に作業を進めていきます。

Raspberry_PiへMariaDBをインストール

yumを使用してのインストールはCentOS6のときと一緒でした。

このバージョンからはMySQLは入っていないはずなので削除の行程はは要らないでしょう。

# yum install mariadb mariadb server

「mariadb client」を忘れていましたが、その後のサーバー用途の検証では特に問題はありませんでした。

続いてMariaDBの起動の設定です。

# systemctl enable mariadb service

これでOSの起動時にMariaDBがスターとします。

即スタートさせたい場合は次のコマンド。

# systemctl start mariadb

自動起動を設定していないとき、その場でデータベースシステムをスタートさせたい場合に使用します。

システムの状況を表示させたいときは次の通りです。

# systemctl status mariadb

なにやら色々と表示されていますが、MariaDBが起動出来ていればOKでしょう。

status実行後の表示

MariaDBのインストールについては以上の手順ですが、基本的にyumでインストールして自動起動させるだけです。

初期設定の実行

次に実際にデータベースを運用するための初期設定を行います。

# mysql_secure_installation

これもMySQLとは完全互換ですね。

「mysql_secure_installation」を実行すると、いくつかの設定について良否を問われます。

ここでrootのパスワードなどを設定します。

今回は外部のネットワークに接続していないので、最初にEnterを押した後に全てyを入力して済ませました。

ちなみに全部Yで済ませると、クライアントのアプリケーションからrootでのアクセスが禁止されMariaDBでのユーザー作成が必須になります。

文字コードの設定

クライアントPCからデータベースサーバーへアクセスしたときに、文字コードの設定が実行環境に合ってないとデータの文字列が文字化けしたり特定の記号が表示されたりしてしまいます。

# vi /etc/my.cnf.d/server.cnf

viエディタを使いファイルを編集して文字コードを設定します(設定ファイルの場所がたまたまCentOS6のときと同じでした)。

詳しい手法についてはCentOS6で実施したときのリンクを貼っておきますが、これもMariaDBやMySQLのバージョンで違いがあるようです。

db.danman.jp

なお設定後のMariaDBの再起動はコマンドが異なります。

# systemctl restart mariadb

CentOS7では「systemctl」が多用されるようですね。

小さなデータベースサーバー【Raspberry_Pi】

MariaDBをインストールしたRaspberry_Pi3_Model_B

こうして、MariaDBのインストールが済めば小さな「Raspberry_Pi3_Model_B」も機能的には立派なデータベースサーバーです。

ただし、このままではSQLの知識がない人にとってデータベースサーバーとして扱うことができないため、当然phpMyAdminをインストールしていきます。

Raspberry_Piは、そもそも学習用の端末というかペラペラの小さな基盤一枚です。これが、能力がさほどでなくてもDBMSの機能を持っているとなると「基盤好き」な私にとっては何処かワクワクさせられる魅力を感じるものです。

好きこそものの上手慣れ、との通りこうした楽しみを通じて実用的なデータベースの知識が身につけば少し得した気分にもなれそうです。

CentOS7が動作する極小サーバーRaspberry_Pi3へPHPをインストール

CentOS7でGUI起動を果たしたRaspberry_Pi3_Model_BでphpMyAdminを使うための環境整備を行います。

まだ日本語入力ができない状態ですが、動作確認用データベースサーバーとしては不足はないようです。

Raspberry_PiへPHPのインストール

目的はphpMyAdminが利用できるデータベースサーバーの構築ですが、いわゆるLAMP環境の導入と同じ作業をすることになります。CentOS6のときと同じくPHPのインストールから進めます。

# yum install php

例によって端末を起動しコマンドを実行します。

インストールの行程を確認すると「httpd」の記述があるので「Apache」も同時にインストールされるようです。

Apacheの起動コマンドを実行してみます。

# chkconfig httpd on

ちなみにCentOS6のときに使用したon・offの確認コマンドは何故か使えないようです。

ネットワーク経由でApacheの動作を確認

Apacheのアクセス画像

設定でIPアドレスを手動で指定し、他の端末からRaspberry_PiへアクセスしてみるとApacheが正常に動作していることが確認できます。

このとき、CentOSのファイアウォールで80番ポートの確認と、MariaDB用の3306番ポートの開放をしておきました。

phpMyAdminに関連するphpの補足

Webサーバー的な用途なら、Apacheとphpのインストールで簡単なWebページは公開できそうですが、目的がデータベース運用でしかもDBMS(MariaDB)の管理をグラフィカルなUI(phpMyAdmin)で利用したいとなると簡単には行かないようです。

php.iniの編集

PHPのインストールが済んだところで「/etc/php.ini」ファイルの編集をしておきます。
これをしておかないとphpMyAdminがブラウザで正常に起動できません。

php.iniの編集前半

赤のアンダーラインがコメントアウトを外した記述

php.iniファイルのmbstring後半

黄色の反転はエディタでmbstringを探すため検索をかけたため

上の黄色の部分10カ所の先頭にあった「;」を消してコメントアウトを外します。

mbstringに一行追記

実はコメントアウト記号の削除だけではエラーが解消しなかったためmbstringの記述部分の先頭へ「extension=php mbstring.so」を一行追加しました。

これで、MariaDBとphpMyAdminをインストールすれば正常に起動可能になります(もしかして、この1行追加だけで済んだ??)。

「php-mbstring」と「php-intl」のインストール

PHPのインストール時にyumで実行したのは「php」だけでしたが、最終的にphpMyAdminを正常起動するまでに、「php-mbstring」と「php-intl」をインストールしました。

この2つはPHPインストール時に同時に実行しても良さそうな感じもしますが、エラーを確認してからの対処を記録しておけば知識として身につくことでしょう。

OSのバージョンで対処が異なるPHPとApache

前回データベースサーバー化したノートパソコンではCentOS6を使用し、今回のRaspberry_Pi3_Model_BではCentOS7を使っていますが、いずれも仕上げのphpMyAdminに漕ぎつくまでにはPHPの設定が必要で、これが微妙に異なるようです。

Apacheのテスト

CentOS7のApacheを表示

たとえば「php.ini」ファイルの編集箇所や、Apacheに使うコマンドなどです。

特にApacheはCentOS7では、途中の再起動以外に意識しなくても良いのではと思うほど他に比べ楽でした。

また、CentOSの採用を決める前にノートPCにVineLinuxをインストールしMySQLを動かしてみたり、同じCentOSでPHP7を試してみたりしましたが、どれもApacheとPHPの扱いが微妙に異なったりしています。

できればCentOSでもPHP7を使用したいところですが、どうにも敷居が高くデータベースの学習という本来の目的から外れてしまいそうですので当面はCentOSとMariaDBの組み合わせで環境設定の基本習得に留めておきたい考えています。

Raspberry_Pi3_ModelBにCentOS7をインストール【GNOME_GUI】

Raspberry_Pi3でCentOS7が利用できることは購入時に調べて知っていましたが、その時はCUIのバージョンについての情報しかなく利用に関してはハードルが高い印象でした。

ケースを開けたRaspberry_Pi3_Model_B

ところが最近になって、予めGUIが組み込まれたArm対応イメージがダウンロード可能なことを知り早速インストールしてみることにしました。

Raspberry_PiにもCentOSをインストール

RaspberryPiのOSインストールはmicroSDにOSのイメージファイルをコピーする手法が用いられます。
以前からRaspberry_Pi用のCentoOSとして認知されてきたのはMinimalというCUIで起動する最小構成のシステムですが、これはコマンドによる操作が必要でGUI環境は自分で構築する必要があります。

もともと、Raspberry_Piを使ってみようと言う方は、CUIでのコマンド入力に抵抗を感じない方が多いことでしょう。

Raspberry_Pi3_Model_Bの基盤

一方、私はただの基盤好きという一般と異なった趣向からRaspberry_Pi3_Model_Bを手に入れ、目指す目的はデータベースサーバーとしての動作検証という単純作業です。

OSイメージ(GNOME_GUI)のダウンロード

Linuxもグラフィカルインターフェイスでの運用が主流になりつつある昨今で、データベースの実践学習の為にコマンドの習得やGUI環境を構築するのは出来れば避けて通りたい道です。

そんなことを考えながら、Raspberry_PiのCentOS7でGUI利用を調べてみると、最初からGUI起動できるOSイメージがダウンロードサイトに用意されているではありませんか。

このOSイメージさえ入手できれば、PCで行ったのと同じくRaspberry_Piの「なんちゃってサーバー化」が可能なはずです。

そんなわけで、GUI環境が整ったCentOS7を次のURLからダウンロードしました。

ダウンロードURL:https://ftp.yz.yamagata-u.ac.jp/pub/linux/centos-altarch/7.5.1804/isos/armhfp/

KDEとGNOMEがありましたが今回はGNOMEを選択。

ダウンロードしたファイルは圧縮されているので、解凍してからmicroSDカードへ書き込みます。

GUI_CentOS7のインストール

microSDへの書き込みにはDD_for_Windowsを使用しました。

管理者モードでアプリを実行

とても便利なソフトウェアですが私の環境では画像のようにEXEファイルを右クリックし、管理者モードで実行しないと対象のmicroSDが見えない場合がありました。

DDforWindowsでコピー

書き込みが済んだらRaspberry_Pi本体のスロットにmicroSDカードを差し込んで完了です。

RaspberryPiに差し込んだmicroSD

モニタ出力用のHDMIケーブルとキーボード・マウスを接続したら、USB電源につながっているMicroUSBケーブルを差し込んでCentOSを起動します。

本体が小さいので各ケーブルを差し込んだ見た目はスティックPCのようになりますが、Raspberry_Piには電源ボタンが用意されていなくケーブルから電源が供給されると即起動という仕組みになっています。

GUIモードで日本語環境を設定

GUI起動直後のデスクトップ画面

英語のままのメニュー表示

初回の起動時にユーザーの作成とネットワークや言語の設定等を行いますが、言語の選択肢に日本語が見あたりません。
NEC_PC-BL300/TA6BにインストールしたCentOS6では簡単に設定できた日本語が、今回Raspberry_PiにインストールしたArm用CentOS7では自分でインストールする必要がありました。

MinimalのCentOS7をPCにインストールしたケースの情報を参考にして端末から次のコマンドを実行します。

# yum install ibus-kkc vlgothic-*

何度か確認メッセージが表示されyを押して進みます。

端末でコマンドを実行

日本語のインストール中

確認メッセージをyで進む

二度目の確認メッセージ

yを入力して完了

終了したら端末を閉じ英語メニューに沿って設定項目を表示させると、今度は言語の選択肢に日本語が表示されています。

設定画面で日本語が表示

シンプルなデスクトップなので英語表示でも設定画面が出しやすい

日本語を選ぶ

初回起動時にはこの「日本語」が表示されていませんでした

ここで言語を日本語に設定しなおすとデスクトップのメニューが日本語に変わります。

この時点では日本語キーボードが上手く設定できておらず、日本語入力は使えない状況ですが目的がデータベースの動作検証ですのでキーボードの指定は後回しにして先に進むことにします。

あとはOSのバージョンに違いから若干手順が異なることは予想されますがネットブックで行った作業と同じ手順でDBMSが利用可能になるはずです。

rootパーティションの拡張

GUIの設定と日本語化が済めばRaspberry_Piもデータベースサーバー用途以前にパソコンとしては申し分ない仕様になります。

ところが、このOSイメージをストレージにコピーしただけのLINUXは、余裕のあるメディアを使用してインストールしても、もとのイメージ通りのストレージ領域しか確保できないらしく、やがてOS起動中にエラーメッセージが右上に表示されるようになります。

回避方法としては、rootパーティションを拡張する必要がありますがLINUXのパーティション拡張コマンドというのがまた難解なものでした。

一般的にはREADMEの記述を参考にして次のコマンドを実行します。

/usr/bin/rootfs-expand

私はコマンドラインから次の通り実行しました。

# rootfs-expand

おそらく同じ効果があると思われますが、READMEの記載は

/usr/local/bin/rootfs-expand

と書かれています。

これらの手法で、パーティションの拡張に成功すればハードウェアのスペックの良否を除いてPCにインストールしたCentOSと変わりなしに運用が可能になるでしょう。

パソコンのようにスペースもとらず費用的にも安価に導入可能なRaspberryPiは、今回のデータベース学習のほかにも手軽にハードウェアを用意したいときに役立ちます。