自宅に現在あるPCは,Mac x3, Windows10 x2, Linux x1の合計6台。これで十分今回のテーマであるPython開発環境は構築できるのですが,最近発売したばかりのカードサイズPCであるRaspberry Pi 4が気になったので,早速Amazonでスターターキットを購入。以前はRaspberry Piと言えば環境構築が結構大変で,ACアダプタ購入からなにからなにまで集めないといけなかった。楽になったもんだ。

今回購入したモデルは,Raspberry Pi 4のハイエンドモデルである4GBのRAMが搭載されたもの。お値段は全部コミコミで12,800円。今はウェブサービス全盛時代なので,Chromiumが快適に動けばこれで十分PCの代わりを果たせるほどのスペックになっています。

※2020年5月28日、驚くべきことにRAMが8GB搭載されたモデルが登場しました。ちょっとしたデスクトップ機としても使えそうなレベルのものが、9000円程度、キット化されたものでも14,000円程度で購入可能です。

 

難易度:

目次

内容物とスペック

スターターキットの中身

このスターターキット,結構お得なパッケージです。普通に一個ずつあつめてたら,楽にこの金額超えてしまいます(本体だけならは7000円程度で買えます)。内容物は以下の通り

  1. Raspberry Pi 4 Model B 4GB 本体
  2. microHDMI<->HDMIケーブル x2本
  3. USB Type-C ACアダプター
  4. Raspberry Pi用のCPUファン
  5. CPU, GPU等冷却用のヒートシンク x3個
  6. microSDカード 32GB x1 (Raspbianインストール済み)
  7. Raspberry Pi 4専用ケース

到着したらすぐに組み立てて,すぐに使えるように全部が揃っています。

図:こんな感じ。真ん中の穴は別売りのカメラ用の穴

スペック

Raspberry Pi 4はスペックが2012年頃のデスクトップPCと同等クラスということで,実際に今回のブログはRaspberry Piから書いていますが,非常に快適です。現代はウェブサービス全盛なのでローカルアプリでエンコードであったり,動画編集のようなハードな使い方ではなく,Chromebookで用を為す用途ならば,もはや家電量販店でPCを購入するのは勿体無いほど。Chromebookでもエントリーモデルは軽く4万円はするので,超小型のコレでもPCライフは送れそう。

さて,スペックですが,前モデルのアップデート版ということです。大きく変更されてる点もあります。

  1. 有線LANポートは本物のギガビットイーサに対応(1Gbpsで通信が可能です。前モデルまでは,USB2.0仕様であったので速度が激遅でした)。NAS運用がこれで満足になります。
  2. microHDMIポートが2個搭載になりました。ケーブルが2本ついてたのはこれが理由。つまり,デュアルディスプレイに最初から対応しています。4K出力にも対応してる。
  3. RAMがハイエンドモデルで4GBも搭載されました(LPDDR4)。前モデルからしたら2GBも増量。このおかげでかなり快適に使えています。
  4. microSDはClass1規格に対応。書き込み読み込み速度が早いので遅い昔のSDカードを使うのは勿体無いです。
  5. USBポートは,3.0規格が2個2.0規格が2個。NASの運用がはかどりますね。
  6. WiFiは802.11acまで対応。オンボードなのでUSBポートを消費しません。無線LANで1Gbpsの通信が可能になっています(もちろんルーター側で802.11ac対応が必要ですが)
  7. Bluetoothは5.0に対応。オンボードなのでUSBポートを消費しません。キーボードやマウスはBluetooth接続のものを別途用意するとUSB2.0ポートを空けられるので,推奨です。
  8. 4K 60fpsのハードウェアデコーダーを搭載
  9. もちろん,GPIOは搭載。電子工作が本来の目的ですから。
  10. CPUは1.5GHz x4コア。周波数は低いもののマルチコアによって処理能力はグンっとアップしています。
  11. GPUはVideoCore IV 500MHz。
  12. 電源はUSB Type-Cで,3Aが必要。
  13. OSはRaspbianが基本ですが,他にもいろいろなRaspberry Pi用の専用ディストリビューションがリリースされています。RaspbianはDebian GNU/Linux 10(Buster)がベースになっています。
  14. Pythonは,2.x系は2.7.163.x系は3.7.3がインストールされているので別途インストール不要。Python IDEは削除されているようです。
  15. Node.jsは,10.15系が最初からインストール済みです
  16. avahi-daemonはインストール済みなのでBonjourにて接続がデフォルトで可能になっています。
  17. ウェブブラウザはChromiumがインストール済み

へたなローエンドPCよりずっと充実したスペックかもしれません。

図:すでにPythonはインストール済み

事前準備

OS編

今回のスターターキットははじめからイメージ書き込み済みの32GBのSDカードがついています。なので、OSイメージ書き込み作業は事前準備としては必要ありません。が、Raspberry Pi用には様々なタイプのディストリビューションがリリースされていて、書き込むだけで目的に適した環境構築済みの環境が手に入ります。

公式イメージ書き込みソフト

Raspberry Pi Imagerという公式サイトが配布されてるOSイメージ書き込みソフトウェアが用意されています(これまではNoobsというものが担っていました)。様々なOSイメージが配布されていますがそれをSDカードに書き込んでくれるライターです。

Windows/Linux(Ubuntu)/macOS用とマルチプラットフォームで用意されていて、使い方も非常に簡単

  1. OSイメージを選択する
  2. SDカードドライブを選択する
  3. 書き込む

これだけです。

図:シンプルなアプリです

色々なRaspberry Pi用OSやサービス

通常は、汎用のRaspbianを利用します。特にコレといった尖った特徴もないDebian GNU/Linux(Buster)ベースのOSで、基本的なものは全て揃っています。RaspbianUbuntuLibreElECの場合オンラインでダウンロード&書き込みまでをやってくれます。それ以外のOSの場合には予めダウンロードして用意しておく必要があります。

Ubuntu MateOpenSUSEPidoraGentoo LinuxCentOSSlackware ARMなどメジャーなOSも出ていますが、Raspberry Pi 4では動かない、既にリリースがストップしてるものもあったり・・・この辺は素直にRaspbian使っていたほうが良いと思います。

主に知られている変わったディストリビューションやOSSプロジェクト、サービスは以下の通り

  • OSMC – メディアセンター構築用のOS。XBMCから派生したもので類似のものにLibreELEC(Kodi)があり、Amazon Primeが見られるらしい。
  • IchigoJam Basic – 子供用パソコンでBASIC言語を扱える変わったOS。専用の基盤も存在する。
  • RetroPie – 古いアーケードゲームなどのレトロゲームを動かすための基盤。
  • Windows10 IoT Core – Microsoft提供のIoT専用Windows10。GUIとか無いのでARM版 Windows10ではないです
  • Windows10ARM64 – Windows10のARM版です。スペック的に厳しいもののRaspberry Piでも動くようになった模様。
  • Flint OSChromium OSをRaspberry Piで動くようにしたもの。CloudReadyの会社に買収された模様。現在はGithubでフォークされたものがリリースされている。
  • Volumio – 音楽を聞くサーバーに特化したサーバ。結構初期からありましたね。ハイレゾ音源やMPD、Spotify、pHATに対応。同様のものに、Pi MusicBoxがある。
  • LineageOS – Raspberry PiでAndroid 9を動かせるようにしたもの。日本語化出来るみたい。
  • CrankShaft – Raspberry PiでAndroid Autoを構築するというOS。
  • NextCloudPi – オープンソースのクラウドストレージサービスであるNextCloudを簡単に構築できるディストリ。
  • Kali Linux – セキュリティ監査という名のハッキングツール満載のテスト用OS
  • motioneyeos – Raspberry PiにUSBカメラやカメラモジュールを取り付けて、簡単に監視カメラを作れるOS。動体検知カメラ(トレイルカメラみたいなもの)も作れるようだ。
  • Coder Project – Googleが提供しているNode.jsが最初から入ってる学習用開発環境。ウェブプログラミングをRaspberry Piで学ぶことができるキットです。
  • Sonic Pi – 音楽を作成する為のシンセサイザーディストリ。Rubyベースのようです。
  • Pi Cast – Raspberry Piから動画や音楽を配信する。Webブラウザで閲覧が可能。他にもRaspberry Castなんて拡張機能経由で配信するものもある。
  • raspap-webgui – Raspberry PiをWiFiルーター化する為のディストリ。スポットでWiFiのAPが必要になった時に役立つかも。
  • FruityWiFi – ネットワーク監視およびネットワーク脆弱性の監査などが可能。3Gと4Gにも対応してるみたい。同様のものに、SweetSecurityというものももある。
  • AirPi – センサーモジュールから環境測定を行う為のセット
  • MagiMirror2スマートミラーを制作する為のキット。
  • StreamPiStreamDeckと呼ばれる特殊なキーボードに様々なアクションを割り当てるものを、タッチパネルで再現するちょっと変わったツール。
  • Jasper – Alexaのような音声認識でアクションを起こしコントロールするのが目的のOSSプログラム。
  • RPiPlay – Raspberry PiをAirPlayサーバにする。音声だけでなく映像もミラーリング出来るようになるので、shairport-syncのように音声のみよりも高機能です。
  • Alexa Voice Service – AmazonのAlexaをRaspberry Piで実現する公式プロジェクト
  • softEther – Raspberry PiをVPNルーターにすることの出来る有名なソフトウェア。自宅サーバを公開するのにもってこい。
  • Piracast – Raspberry PiをMiracastサーバにする為のサーバ。Androidからのミラーリングなどが可能になります。
  • ReadyMediaminidlnaと呼ばれていた DLNAサーバにして動画や音楽をストリームするサーバにしてくれます。
  • Blynk – スマフォからBlynkサーバを経由してRaspberry Pi内のスクリプトを遠隔実行するサービスです。
  • Waveform Free – 無償DAW環境で最近フリーで配信されたばかりです。

コレ以外にも様々なものがまだまだリリースされています。SDカードのケースが欲しくなりますね。

ハードウェア編

CPUのファン

最新のRaspberry Pi 4はファンが必要です。それだけ高性能なCPUが搭載されているということ(但し、小型のType Aは不要)。しかし、このファンですが、3.3Vと5Vの2つどちらかをGPIOのピンに接続して給電してもらっています。

3.3VはGPIOのPin01番。こちらは低速でファンが回りますので、低負荷な作業の場合にはこちらを使うと良いでしょう。5VはGPIOのPin02番。こちらは高速でファンが回るのでサーバ運用など少し負荷の高い場合に使うと良いでしょう。5Vのほうは高速で回るのでファンの音がかなり煩いです。そして、Pin06番がGNDでアースになりますので、もう一本の黒いラインをこちらに接続。

図:GPIOの配置と指すPinの番号

キーボードやマウス

普通に有線タイプのものであれば、USBポートに接続すればそのまま利用が可能です。おすすめはやはりBluetoothタイプのキーボードとマウス。自分は、AnkerのBluetoothタイプのキーボードとナンテこと無いBluetoothタイプのマウスを利用しています。昔と違い初めからBTが搭載されていて、モジュール追加なしでOSレベルでBluetoothが使える様になっているので便利です。

自分の場合、Fire TV Stickで利用していたBluetoothキーボードとマウスをそのまま流用しています。

AnkerのBluetoothキーボードの場合、以下の手順でペアリングします。

  1. Raspbianの右上にあるBluetoothのアイコンをクリックして、Add Deveiceをクリック
  2. キーボードのFnキーとZキーを長押しして、ペアリングモードへ入れる
  3. しばらくすると、キーボードマークのものが検出されるのでクリック。
  4. ペアリングコードを入れろと出てくるので、キーボードで表示されている数字を入れてEnterキー
  5. これでペアリング完了。

アプリケーション編

OSのアップデート

以前までのRaspbianインストールと比較して確かに敷居は低くなっています。Chromiumブラウザは標準搭載されていますし,日本語表示関係やモニターの解像度調整など一切が不要になっています。ただし,いくつかやっておかないといけないことがあります。

それがこのOSのアップデート。Windows Updateみたいなものがあるわけじゃないので,手動で自分でアップデートをします。以下の手順でアップグレードしましょう。

  1. ターミナルを起動する
  2. sudo apt-get  updateを実行する
  3. sudo apt-get upgradeを実行する
  4. sudo apt-get autoremoveを実行する
  5. sudo apt-get dist-upgradeを実行する
  6. 再起動する

これでOK。各種インストール済みのアプリケーションやライブラリ関係も一斉にアップデートが掛かるので,結構時間がかかります。途中インストールする?って聞かれるシーンでは,「Y」を入力すれば続行されます。

※autoremoveやdist-upgradeをしていない場合、標準のファイルマネージャが起動してすぐ落ちる現象が報告されています。また、本体を再インストールすると治ることもあるので、sudo apt-get install pcmanfmを実行しても良いかもです。(アップデート保留されている場合には、sudo apt-mark unhold pcmanfmも実行しておく)

ファームウェアのアップデートは

以前までは、sudo rpi-updateを行うのがさも当たり前のように語られていました。しかし、現在ではこの方法は推奨されておらず、また闇雲にファームウェアのアップデートを行うとむしろ障害が起きる可能性のほうが高いと言われています。理由は「まだ実験的に装備してる内容も含まれていたりするため」。

このrpi-updateは開発者向けの実験的なものが取り込まれたkernelなどの最新のものが含まれており、日常で利用する場合には非常に不適当ということですね。安定版リリースの場合にはsudo apt upgradeに含まれてくるので、ユーザが任意にrpi-updateをする必要はないということのようです。

また、現在はsudo rpi-eeprom-updateが利用されており、利用する場合にはこちらのコマンドをりようすべきでしょう。

日本語入力ソフトのインストール

Linuxではあるのですが基本が英語版です。そのため日本語入力ソフトのインストールが必要。入っていないんです最初は。以下の手順でインストールします。

  1. ターミナルを起動する
  2. sudo apt-get install ibus-mozcを実行する
  3. 再起動する
  4. また、初期設定だと日本語での読点が「,」つまりカンマになってしまっていてストレスなので以降の手順で変更する
  5. タスクバーの「A」や「あ」をクリック→ツール→プロパティを開く
  6. 句読点を「、。」に変更する。これでOK

入力はWindows同様に半角/全角のキーを押すことで日本語入力切り替えになりますし,右上のタスクバーにインジケータも表示されています。

図:ターミナルの作業は慣れが必要

図:句読点のモード変更はしておこう

スクリーンショットのアプリをインストール

日本語入力ソフトだけじゃなく,最初から搭載してるアプリには無いものの1つとして,スクショを取るアプリ。開発をしているシーンだといくつか上記のようにスクリーンショットを取らないと行けないシーンがあるので,ちょっとインストールしておきます。

  1. ターミナルを起動する
  2. sudo apt-get install gnome-screenshotを実行する
  3. 左上のメニューの中の「アクセサリ」に「スクリーンショット」が追加されます。
  4. ついで画像加工用にsudo apt-get install gimpでGIMPもインストールしておくと良いでしょう。

図:ウィンドウを選択してしばらく待つと取れる

開発用テキストエディタを用意する

Node.jsやPythonといったスクリプト言語は基本,テキストエディタがあれば開発は可能ですが,なんの支援もないテキストエディタだと流石に開発はキツイ。ということで,Microsoft Visual Studio CodeというElectronベースのテキストエディタをインストールする。AtomはARM7用のビルドが無いようだ。結構ターミナル作業が必要で,ターミナルを起動したら以下のコマンドを入力する。

Version1.29でないと動かないようなので,1.29で固定するためにholdさせる。アプデ確認をする場合には,apt-cache policy code-ossで確認が可能。アップデート対象に戻す場合には,sudo apt-mark unhold code-ossを入力すれば良い。左上のメニューから開き,アクセサリ→「Code – OSS(headmelted)」がVisual Studio Codeの本体になります。

図:様々な言語用の入力補助機能が充実してる

しかし,このままでは英語版なので,日本語インターフェースに変える必要があります。

  1. 左側サイドバーの一番下の■のアイコンをクリック
  2. 検索窓でjapaneseを検索
  3. Japanese Language Pack for VIsual Studio Codeというものがあるので,クリック
  4. installボタンをクリックし,途中なにか聞かれるので,Yesで答えておく。
  5. インストール完了すると日本語化されています。

図:無事に日本語化されました。

設定編

SSHを有効化する

他のPCからリモート接続して操作する場合,SSHを使ってRaspberry Piにログインします。現在のRaspbianはavahi-daemonが最初からインストール済みであるので,アドレスはraspberrypi.localでmacOSなどからは接続が可能(AppleのBonjourがインストールされたWindowsからも接続可能)。

他のPCからmicroSDカードのbootパーティション内に「ssh」という空のファイルを作るだけでSSHが有効化します。デフォルトのIDはpi,パスワードはraspberryで接続が可能です。パスワードを変更している場合には注意。もし,IPアドレスで接続させる場合には,Raspberry PiのIPをDHCPではなく固定IPに変更しておく必要性があります。

ただ最新版ではデフォルトで有効になってたりする。VNCも有効になってるのでリモート接続も設定不要のようだ。接続する場合には別のPCからターミナルよりssh pi@raspberrypi.localで接続可能です。

図:やりたい設定はすでに設定済み

raspi-configも使えるよ

以前はraspberry pi の初期設定と言えば,raspi-configを利用していました。現在でも利用可能です。ターミナルを起動して,sudo raspi-configを実行するだけ。あとはターミナル内のコマンドを操作して設定を変更してゆきます。

ただ現在はほとんど使うシーンは無いかなぁ。標準でraspberry piの設定というGUIアプリがすでにあるので。

図:昔ながらのキャラクタベースのGUI

ホスト名変更

ホスト名変更をしないと、avahi-daemonでアクセスする場合のホスト名がraspberrypiのままです。そこでこれを変更します。対象となる設定ファイルは、/etc/hostnameおよび/etc/hostsの2つです。

  • hostnameファイルの場合は、raspberrypiと書かれてる部分を好きなホスト名に変更し保存
  • hostsファイルの場合は、127.0.0.1の行のraspberrypiと書かれてる部分を好きなホスト名に変更し保存
  • 最後に再起動する。

WiFi設定

以前は設定ファイルに自分で手書きで書かないとWiFi接続できなかったので,面倒くさい上にGUI設定するアプリのインストールもままならなかったのですが,現在はモダンなOSと同様に右上のWiFiのアイコンから接続させたいSSIDを選択して,パスワードを入力すればOKです。802.11acまでのAPがリストアップされるはず。

Raspberry Pi初回起動時にも同様の設定画面が出てくるので,予め起動前にSSIDとパスワードを調べておくとスムーズです。

iPadを外部モニタとして利用する

VNCで接続する

2つのmicroHDMIポートがついたので、デスクトップPCとしてデュアルディスプレイが使えるようになりました。結果、低価格の小型HDMIディスプレイなども販売されるようになりました。古いDSI接続のものも現在売っていますが、正直今更これを使うのはどうかなぁと思う所。しかし、ワイヤレスやリモートで使いたい要望のほうが多いと思います。その場合専用ディスプレイを使うよりは、iPadをモニタにしたほうが非常に効率が良いです(タッチパネルですし)

この方式の一番乗り点は既存のセッションに繋げて操作するので、iPad側でキーボードやマウスを繋げなくても、操作が画面に反映する点です。

なお標準インストール済みのVNC Serverはreal-vnc-serverで、再インストールは以下のコマンドで行えるます。

以下の設定とアプリの追加をします。

  1. iPadにVNC Viewerをインストールする
  2. Raspberry PiのタスクバーにVNC Serverが常駐してるのを確認する(開くとIPアドレスが確認できる)
  3. iPadのVNC Viewerを起動する
  4. address bookの右上にある+ボタンをタップ
  5. Addressにはraspberry piのIPアドレスを入れる。Nameは適当につける
  6. Connectをタップする
  7. UsernameとPasswordを問われる。デフォルトはID:pi PW:raspberryですが、パスワードを変更してるときは注意
  8. Remember PasswordのトグルをONにして、Continueをタップ
  9. すると、現在Raspberry Piで動いてるセッションにつながる(以前のように新しいセッションになり操作できないということがない)。
  10. もちろん、iPad側にキーボードやマウスをつなげる必要ないです。Raspberry Pi側につなげておけばオッケー。縦画面でもマウス追従でモニタ内移動してくれる。
  11. 2020年3月24日配信のiPad OS 13.4からはMagic TrackPadも使えるようなので、合わせて使うと利便性があがるかも

図:なかなか操作感は良いです

RDPで接続する

リモートデスクトップの方式で接続する場合です。こちらは完全にRaspberry Piが手元になくリモートにありキーボードなどはiPad側に接続して使う場合に有効。利点としては、VNCよりも高速で滑らかである点と、VNCと違い横画面運用した場合、ディスプレイサイズがiPadにきっちりフィットする点。どちらかというと自分はこっちのほうが好きです。ただ、Raspberry Pi側ですでに立ち上がってるセッションに繋げたい場合には、xrdp.iniを編集する必要があります。

以下の設定とアプリの追加をします。

  1. iPadにMicrosoft Remote Desktopをインストールする
  2. Raspberry pi側で、ターミナルを起動してsudo apt install xrdpを実行してRDPサービスをインストールする
  3. sudo service xrdp restartでサービスを再起動
  4. iPad側でRemote Desktopを起動する
  5. PCという画面の右上にある+ボタンをタップし、PCを追加をタップ
  6. PC名ではIPアドレスを入れる。ユーザアカウントにはVNCの時と同じくID:pi PW:raspberryを入れる(パスワード変更時は注意)
  7. 設定ができたら、作った設定をタップするとすぐに接続されます。
  8. タブレット上からのマウスの操作感は非常にGood。仮想キーボードも悪くない。右クリックは二本指タップで、ドラッグは三本指タップでできます。
  9. 以前使えていた既存セッションにつなげる方法・・・なぜか接続できない・・・これができたら最高なんだけれどなぁ

図:RDPだと画面がフィットして最高

LAMP環境の構築

外付けHDDつなげてマウントする

自分は外付けHDDはmacOS運用である為HFS+でフォーマットしています。通常はFAT32やexFATなどを使うことになるんでしょうが、NTFSもマウント出来ます。そのためにはいくつかソフトウェアの追加と事前準備が必要です。今回はHFS+でのマウントをさせてみようと思います。

事前準備

ソフトウェアを入れればマウントは出来るのですが、そのままだと読み取り専用なので不便です。Mac側で事前に対象の外付HDDのジャーナリング機能をオフにしておく必要性があります。まずは下記のコマンドでジャーナリングをオフにしましょう。

ディスクに付けた名前はMacでマウントした時に出てくるディスクの名称です。これでジャーナリング機能がオフになったので、ディスクのマウントを解除して取り外します。Raspberry Pi側に接続してあげましょう。

ソフトウェアの追加

Raspbian上でソフトウェアの追加をします。以下のコマンドを実行し、HFS+をマウントする為のツールをインストールします。NTFSの場合には、ntfs-3gをインストールしておくと良いです。

ツールが入ったら、マウントする場所を用意します。今回はmntディレクトリ以下にhddというディレクトリを作っておきます。自分はUSBメモリ用にもう一つ、/mnt/usbを作っておきました。

このままだと毎回、マウントするコマンドを入力しなければならないので、起動時に自動マウントされるように設定ファイルに追記します。以下のコマンドを実行して対象のディスクのUUIDを取得しておきます。

自分の場合、/dev/sda2が外付HDDだったので、それに付いてるUUIDをコピーしておきましょう。次に以下のコマンドでテキストエディタで以下の文字列を追加しておきます。leafpadを今回は使っています。

このファイルに以下の文字列を追記します。xxxxxの部分は先ほど取得したUUIDを入れておきます。項目の区切りはスペースではなくTABで区切ります。NTFSの場合には、hfsplusの部分をntfsと記述すると良いです。また、その場合forceの部分は必要ありません。Linuxの場合、NTFSは標準で書き込めます。

そして、保存したら、一度マウントしてみると良いと思います。以下のコマンドでマウントをして/mnt/hdd以下にディスクの中身が出てきたら成功です。

これで、次回以降はRaspberry PiにHDDをつなげたまま起動すれば、自動的にマウントされて利用することが出来るようになります。

SAMBAと外付けHDDでNASを作成する

HFS+のディスクがマウントできたら、次はSambaでファイルサーバを組みたい所。AFPで組むという事もできなくもないのですが、他のOSの事を考えるとあまり得策ではありません。早速Sambaとソレを管理する為のソフトウェアであるswatを入れておきましょう。

これでインストールは完了です。今回使用するディレクトリは先ほどマウントした/mnt/hddをそのまま共有対象にします。但し、そのディレクトリのパーミッションを一応変えておきましょう。共有できても読み書きが出来ないと不便です。サブディレクトリ以下も全部変えたい場合には、-Rオプションを付けてあげます。

次に管理用ツールであるswatをインストールします。ブラウザ上からsambaの各種設定を行えるので便利ですよ。テキストエディタ上の作業はこれがアレば不要です。新しい共有先の追加もこれで行えちゃいます。次回のサーバ構築編その3ではApacheなどもインストールするのですが、その際にWebminを入れるので、swatを入れずにWebminを使うというのも手です。AapcheやMySQLなど含めてSambaまでGUIでまとめて管理が出来ます。

これで、インストールは完了。早速他のマシンからブラウザでアクセスしてみましょう。しかし、このままだと管理画面上でフル機能を使えないので、rootユーザのパスワードを設定してあげ、swatにはrootユーザで入るようにします。piユーザではモニタしか出来ませんので。

2回パスワードを入力します。忘れないようにしてください。一旦ここでsambaを起動してみましょう。まだ共有フォルダを追加していないので、何も出てきませんが。また、OS起動時に自動的に起動するように既になっているので、自動起動の作業は必要ありません

起動しましたら、swatも使えます。以下のアドレスでアクセスします。ホスト名で今回も接続しています。違うてんはPort番号だけですね。rootユーザでログインして、パスワードを入力すると、フル機能の設定画面が出てきます。Mac上でChromeからアクセスしたら日本語表示もされてました。passwordの項目では、ユーザの追加と有効化が出来るので、Guest運用しない場合には、予めOS側でユーザを追加し、passwordの項目で同一の名前のユーザを追加し、有効化しておくと良いでしょう。


/mnt/hddをSambaの共有フォルダに追加する場合には、SHAREメニューを開き、create shareボタンの隣のボックスに/mnt/hddと入力して、そのボタンを押すだけです。細かい設定画面も出てきます。設定変更したらcommit changesボタンを押せば設定が反映されます。再度、sambaを再起動してみると、既にマウントされてるはずです。ちなみに、設定ファイル自体は、/etc/samba/smb.confで一番下に共有フォルダの設定項目が追記されていきます。以下のような感じで追記してみました。

きちんと、自分はゲスト運用はしていませんがユーザ運用で、きちんと他の端末からアップロードも出来ました。

DLNAサーバを構築して動画配信

外付けHDDも繋げられましたし、ファイルの共有もこれで出来ました。そうなるとヤリたくなるのがDLNA配信。家庭にあるDLNA対応のデカイ液晶テレビを活かすことが出来る素晴らしい機能を追加しましょう。DLNA配信なので、iOSやAndroidでもソフトウェアを導入すれば閲覧できます。まぁSambaが入ってるのでそれらのOSの場合、ファイラーから直接再生も可能ですが。まずは、ソフトウェアを導入します。

これでインストール完了。既に自動起動の設定もされています。しかし、これでは外付けHDDを読んでくれる訳ではないので、設定を変更する必要性があります。以下のコマンドで変更しましょう。

設定ファイルを開いたら、media_dirと書いてある行を探します。デフォルトでは、/var/lib/minidlnaとなっています。ここを/mnt/hdd以下のメディアが保存されてるフォルダのパスに書き換えて保存します。保存したらサービスを再起動します。

これで認識してくれたんじゃないかなと。ちなみに、デフォルトで使用してるポートは8200番です。ブラウザからもアクセスが可能です。認識されたファイルの個数が表示されるはずです。

認識されない場合には、以下のコマンドを入力してファイルリストを再構築すると良いでしょう。結構時間が掛かります。再構築したらminidlnaを再起動しましょう。

早速、Android上で使ってみましたら、起動時にきちんとDLNAサーバが認識されました。バッチリ動画も見られました。カクカクしてません。かなり凄いですねこれ。

Apache2でWebサーバ環境を構築する

Apache2をいよいよインストールしますが、Raspberry Piでは他にもlighttpdH2OなどといったWebサーバもあります。こちらのほうが軽量なので、オススメかもしれませんが今回は王道で行きます。

但し、設定ファイルが非常に細かくなっており、面倒なのでWebminを使って設定関係は弄ったほうが良いです。再起動してみてhttp://raspberrypi.local/でアクセスし、It Worksという文字列が出たら成功です。ちなみにDoumentrootは初期設定では、/var/www以下に設定されています。USBメモリや自分のHomeディレクトリに適当にフォルダを作って変更しておくと良いでしょう。特にUSBメモリにしておけば、SDカードの容量を圧迫せず、また、システムが吹っ飛んでも安心です。ログ・ファイルなんかも全部、そちらに保存するようにしてしまいましょう。

Documentルートの設定が書かれてるファイルは、/etc/apache2/sites-available/defaultです。

Apache2自体の設定が書かれてるファイルは、/etc/apache2/apaches.confです。

MySQLサーバを構築

データベース・サーバを構築する

MySQL自体のインストールはとても簡単です。下記のコマンドを実行すれば、インストールがなされて、パスワード設定画面も出てきます。

インストール完了後にrootパスワードを聞いてくるので、ここで設定しておきます。また、何かあった時に困るので後で導入する管理画面から別の特権ユーザも追加しておくと良いでしょう。但し、このままだと他のコンピュータから管理画面に直接アクセスやDBに直接アクセスする場合に困った事になるので、同じく管理画面からlocalhost以外からもアクセス出来るようにしておくと良いでしょう。リモートからMySQL WorkbenchやODBC接続する際に必要になります。

その他の設定:

  1. MySQLの設定ファイルは、/etc/mysql/my.cnfです。直接編集する場合にはこれを編集しますが、GUIツールからも設定変更が出来ます。
  2. 自分はLAN内でしか使わないのですが、手っ取り早くアクセスしたい時には、bind-addressの行はコメントアウトしてあげます。
  3. 今回、macOSのMySQL Workbenchからアクセスする時には、Standard TCP/IP over SSHで接続させるので、コメントアウトはしていません。
  4. rootアカウントのホストは%を指定しています。
  5. 設定ファイルの中にデータの格納場所などが指定されているので、これらをUSBメモリにでも変更しておくと良いでしょう。デフォルトではdatadirの設定が/var/lib/mysqlになっています。

MySQL Workbenchから管理してみる

MySQLには強力な管理ツールがOSXには提供されています。phpmyadminWebminがあるので、ローカルPCのアプリケーションで無くても良いのですが、好き好きというものがあると思います。以前はMySQL Administratorという名前で提供されていたものですが、今回、MySQL Workbenchを使って、Raspberry Piで稼働させてるMySQL Serverに接続してみました。インストールは簡単なので省略します。

今回は、bind-addressをコメントアウトしていないので、そのままでは接続できません。しかし、SSHサーバは稼働させているので、Standard TCP/IP over SSHで接続させて入ります。SSHアドレスにはホスト名で入れてしまいます。よって、raspberrypi.local:22で指定。ユーザはpi、そしてパスワードを入れます。MySQL部分はlocalhostを指定し、今回はrootとパスワードを入れてあります。

phpmyadminを導入し設定を行う

MySQLを管理するツール類はPHPで作られていますし、多くのウェブ系オープンソースツールはPHPで作成されているので、ここでまずはphpをインストールしておきましょう。導入は簡単です。

いよいよ、MySQL管理ツールの定番を入れます。この後にWebminも入れるので、そちらで管理するということであれば、このインストールは必要ありませんが、ツールというものは慣れというものがあるので、自分は両方入れてあります。途中、apache2とlighttpdどちらに自動設定するかを聞いてくる画面がありますが、今回はApache2を選択しておいて下さい。

聞かれる項目は以下の通り

  1. phpMyAdmin を動作させるために自動再設定を行う web サーバを選んでください には、Apache2を選択して下さい。
  2. phpmyadmin のデータベースを dbconfig-common で設定しますか? については、yesを答えればOK
  3. データベースの管理権限を持つユーザのパスワード については、先ほど設定したMySQLのパスワードを入力すればOK
  4. phpmyadmin 用の MySQL アプリケーションパスワード については、phpmyadminログイン用のパスワードです。好きなパスワードを入力します。

Apacheを入れた後でないと開けませんが、http://raspberrypi.local/phpmyadminでアクセスすると、ログイン画面が出てきます。

WebMinを導入する

Samba用にはswat、MySQL用にはphpmyadminといった具合に管理ツールをインストールしてきました。しかし、Apache用に用意されてる管理ツールであるWebminを使えば、それら全てが管理する事が可能になります。ブラウザベースのツールなので、どこからでもアクセスが可能です。

しかし、標準のパッケージで用意されているわけではないので、若干インストールは面倒です。様々なツールのインストールが必要であるからです。以下のコマンドで一気にインストールします。

インストールが完了したら、Webminに入る為のrootのパスワードを設定します。

これで準備完了。早速、https://raspberrypi.local:10000でログインしてみます。httpsなので注意してください。証明書が云々といった警告メッセージが出ますが、無視してそのまま進んでください。

sysv-rc-confで楽ちん管理

sambaやらLAMP環境やら結構たくさん入れてしまい、自動起動項目も増えてきました。しかし、Raspberry Piがいくらパワーアップしたといっても、使わないサーバや自動起動デーモンの類は停止させておいたほうが、無駄が少ないですし、本来限定的な用途に特化して組むのが定石のRaspberry Piでは、あらゆることを1台でやらせるというのは無理があるもの。

ということで、それら自動起動デーモンの類をCUIではありますが、簡単に設定が出来るツールがあります。インストールして活用することにしましょう。

実行は、sudoで実行させます。起動するものはXが記されており、スペースで有効にしたり外したりが可能です。qで脱出します。

バックアップと復元

raspberry piはOSやアプリを入れてるベースがmicroSDカードです。基本耐久性の高いドラレコ等に用いるようなタイプではない汎用品が多いと思いますが、書き込み回数などには限りがあり、常に壊れる可能性があります。また、自作のセンサーマシンなどを作り複製をしたい場合、そこに至るまでのセットアップを毎回行うのは、あまりにも面倒ですね。そこでとっておくのがバックアップ。macOSやLinuxの場合にはこの辺が結構簡単に出来るので、ある程度セットアップが完了したら、バックアップイメージを取っておきましょう。

ddコマンドを使う手法

バックアップ

macOSの場合もLinux同様にddコマンドを利用してのバックアップが行えます。ただし、危険は伴うのでよくよく慎重に対象のディスクがSDカードであることを判断してから行わないと、macOS自体を破壊する可能性があります。まずは、diskutilコマンドを使ってそのSDカードがどのドライブ名になるのかを見つけます。ターミナルで作業をします

今回は32GBのSDカードなので、すぐに見つかりました。

図:diskutilを使ってサイズからSDカードを特定

まずは毎回の如くですが、今回は、disk2がそれとわかったので、それで進めます。disk2なのでターゲットはrdisk2となります。そもそも、LinuxのパーティションはOSXではマウントが出来ないので、アンマウントの作業は必要ありません。cdコマンドでバックアップを作るフォルダまで移動してから次のコマンドを入れます。

ターミナルからディスクボリュームへのアクセス許可を求められるので、OKを押します。

これで、バックアップが開始されます。32GBのSDカードでおよそ40分ほど掛かります。途中でキャンセルする場合には、Ctrl+Cキーを押すことでキャンセル可能です。

復元する

復元する場合には空のSDカードを用意し、こちらはまずアンマウントしてから作業をする必要があります。diskutil listでそれが間違いなくSDカードであることを確認したら実行します。

そしたら続けて、バックアップしたイメージがあるフォルダまで移動。そこで以下のように実行します。

バックアップよりも書き込みのほうが時間は掛かるので、終わるまで抜くことなく待ちましょう。バックアップイメージをGUIで復元させるEtcherというソフトウェアもあります。コマンドは怖いという人はこちらを利用しても良いでしょう。特に復元書き込みはOSを最も破壊する可能性のある作業なので。

ディスクユーティリティを使う手法

macOS付属のディスクユーティリティを使ったバックアップと復元方法があります。macOS使いならば馴染みのある手法なので安心です。

バックアップ
  1. ディスクユーティリティを起動する
  2. 左上の表示をクリックして、全てのデバイスを表示しておく
  3. 対象のSDディスクをマウント解除でアンマウントしておく
  4. SDカードデバイスを右クリックして、イメージを作成を実行
  5. 保存場所を指定するとバックアップ開始

図:コマンドラインじゃない安心さ

復元する

復元する場合には、以下の手順を実行します。基本はバックアップの時とほぼ同じ手順です

  1. ディスクユーティリティを起動する
  2. 左上の表示をクリックして、全てのデバイスを表示しておく
  3. 対象のSDディスクをマウント解除でアンマウントしておく
  4. SDカードデバイスを右クリックして、復元を実行
  5. イメージボタンをクリックして、イメージファイルを選択する。
  6. 復元ボタンをクリックすると復元される。

大容量USBディスクにサーバ類のファイルを移動させる

SDカードもUSBメモリも大容量化の時代で、安く手に入るのは良いのですが、如何せんSDカードは耐久性で問題があります。SDはブートだけを担当させてその他全てをUSBディスクにするという方法もあるのですが、これはこれで、折角の大容量の大半をOS等で消費するのは勿体無い。ということで、現在自分が設定してるやり方は、データ類だけはUSBメモリに移動をさせて運用するというものです。特にサーバー系のファイルの置き場に関しては、USBディスクに退避させておいたほうが、バックアップも取りやすいので、オススメです。

MySQLのテーブルデータを移動させる

センサーデータの蓄積やホームサーバーとして使う時に各種オープンソースのウェブアプリケーションの土台として使われる為、気が付くと容量が増えている事が多いデータベースサーバですが、これをUSBメモリに移動させてしまいます。失敗すると、MySQLが起動しなくなりますので、ご注意下さい。必ず、設定ファイルのバックアップを取る様にしてください。また、USBメモリは、FAT32ですと、上手くいかないので、ext4などでフォーマットしておきましょう。

設定値の変更は、Webminからやると書式が壊れることがあるので、可能なかぎりnanoなどのテキストエディタ上で直接編集するようにしてください。

バックアップを取ったら、my.cnfの設定を書き換えます。サービスを止めてから作業を行います。人によって違う箇所もあるかと思いますが、基本インストール直後であれば、以下の部分の書き換えだけで済みます。

mysqldセクションのdatadirがデフォルトでは、/var/lib/mysqlとなっています。これを自分のUSBメモリの所定のフォルダへのパスに書き換えます。今回は/mntフォルダ内の/usbフォルダにマウントさせているので、その直下にmysqlフォルダを作ってここに格納します。

データをコピーしたら、パーミッションの設定もしておきましょう。書き込みができない状態ではサーバーを起動することが出来ません。これで完了です。/var/lib/mysqlのフォルダは削除しても問題ありませんが、いざというときの為にそのままにしておいても問題ありません。start後に無事にOKと出れば問題なし。Failと出たら、パーミッションや設定したフォルダの場所などが間違ってる可能性があります。

Sambaのフォルダ共有先を移動させる

Sambaの場合、非常に簡単です。SWATWebmin上から、新しく作成したフォルダを共有先として追加するだけです。ただし、新しく追加したフォルダはパーミッションの設定がなされていない、書き込み許可がないなどが普通なので、これらの設定をしてあげる必要性があります。また、Samba上でのアクセス権限と実ファイルのアクセス権限は別ですので、フォルダやファイルにアクセス権限をchmodで変更しておくことを忘れずに。

ですので手順的には

  1. 新たに/mnt/usbとしてファイル共有を加える
  2. 実際のディレクトリに対してchmodでアクセス権限を付与
  3. さらにSamba上からゲストアクセス許可を与え書き込み許可を与える

Apacheのホームディレクトリを移動させる

ウェブサーバーのコンテンツ類も、USBメモリに移動させておくとバックアップがし易いですし、無駄にSDカードを消費するようなことを防ぐことに繋がります。こちらも、基本は簡単です。編集するファイルは以下の通りです。編集を行ったらapache2を再起動しましょう。これもwebmin上から編集が出来るので、そのほうが楽です。

このファイルの最初のほうにあるDocumentRootという項目。ここにパスが書いてあります。これを変更するわけです。/mnt/usb/apacheに自分は変更しています。ここに一つだけindex.htmlを入れておいて、書き換え再起動後、アドレスを叩いてindex.htmlが見えればOKです。

関連リンク

共有してみる: