RaspbeeryPiで子供のプログラミング教育 OSをセットアップ


1.OSインストール

RaspberryPiは購入した状態ではOS(WindowsやMacOSに相当するもの)が入っておらず只の基板です。
OSはラズパイ財団が提供しているものを用意したMicroSDメモリカードに書き込み動作させます。
現在はいろいろなものが用意されていますが今回は難易度が一番低いと思われるNOOBSというインストーラーを使用します。
なんだか難しそうですが基本的にはコピーするだけなので初心者でも簡単。

https://www.raspberrypi.org/downloads/

NOOBSのDownload zipをクリックしパソコン内に保存しましょう。
記事作成時点ではNOOBS_v2_1_0.zipというファイルがダウンロードされます。
V2_1_0の部分がバージョンなので時期により名前が違う事もありますが読み違えてください。
ダウンロードが完了したらファイルを展開し、展開されたファイルを丸ごと用意したMicroSDカードへすべてコピーします。
コピーが完了したらMicroSDカードをRaspberryPiに取り付けいよいよ電源投入

モニターやキーボード、マウスなど接続が完了したら電源ケーブルを刺しましょう。
電源スイッチは無いので問題なければNOOBSが起動します。
画面が真っ暗なままなら一旦電源ケーブルを抜き、MicroSDカードや接続部分の見直しをします。

電源が入らない場合のチェックポイント
MicroSDカードのフォーマット形式がFAT32になっているか?
モニターとの接続、モニターの入力ソースの設定などの正しいか?
RaspberryPiの基板上のLEDが点灯しているか?
電源の容量は足りているか?2.5アンペア以上

DSC02944

正常に起動すると上画面のようなNOOBSのインストーラが起動するのでRaspbianにチェックを入れ「Install」をクリック。

DSC02945

SDカードを上書きするよ的なメッセージが出るのでYesをクリック。
するとOSのコピーが始まりインストールが完了する。

DSC02946DSC02947DSC02949

OKをクリックすると再起動がかかりRaspbianというLinux OSが起動します。

DSC02950

↑起動画面

2.OSのインストール後初めにやること

OSのインストールが完了するとすでに一通りのアプリケーションがセットアップされているのですぐ使用する事ができますが、RaspberryPiの生まれが英語圏ということで色々な部分が外国使用です。それらの設定は「Raspberry Pi Configration」というツールで設定変更することができます。

画面左上のラズベリーボタンを押し、「Preferences」→「Raspberry Pi Configration」をクリックします。

設定が必要な部分はLocalisationの部分です。
Locale、Timezone、Keyboard、Wifi Countryをそれぞれ次のように設定してください。

Locale
2017-01-08-141947_1824x984_scrot

Timezone
2017-01-08-232021_1824x984_scrot

KeyBoard
2017-01-08-232052_1824x984_scrot

Wi-Fi Country
2017-01-08-232120_1824x984_scrot

設定が完了したら右下のOKボタンで閉じます。
Rebootが必要とでるのでYesを選択して再起動します。

3.日本語入力環境をセットアップ

2017-01-02-100332_1824x984_scrot

左上のラズベリーボタンがWindowsのスタートメニューのような役割です。
すでにインターネットブラウザやOfficeアプリケーションなどインストールされていますのでいろいろ使用できますがこの状態では日本語の入力ができません。
今回は最後に日本語の入力ができるようにしてみましょう。

その前にRaspbianのパッケージを最新のものに更新します。
WindowsのWindows upateのようなものですがRaspbianの場合はコマンドで行います。

左上の左から4番目のボタン、もしくはラズベリーボタン-「アクセサリ」-「LXTerminal」をクリックしコマンドライン端末を開きます。

sudo apt-get update
sudo apt-get –y dist-upgrade

此れだけです。
バラバラと英文字が表示されますがほおっておけば終わりますのでしばらく待ちます。

パッケージの状態によっては以下のようなメッセージが表示されて待機状態になる場合がありますのでENTERキーなどでスクロールさせ「Q」押します。

2017-01-02-104217_1824x984_scrot2017-01-02-104221_1824x984_scrot

日本語入力環境パッケージ

sudo apt-get install ibus-mozc fonts-takao

システムを再起動します。
(ラズベリー-「Shutdown」-「reboot」)

先ほどまで一部英語だったメニュー表示が日本語表記になり「半角/全角」キーでWindowsのように日本語入力ができるようになります。

次回はいよいよプログラミングの準備を始めたいと思います。

RaspbeeryPiで子供のプログラミング教育 ~準備編~


最近では小学校でもパソコン授業があるようで、そういった知識を持たない親御さんはどうしたら良いか、また今後プログラミングが必修科目になるなどプログラミング教室みたいなものに通わせようかなんて考えている人もいるかと思います。

学校では先生方も苦労しているなんて話も聞きますが、今回は子供(小学生くらい)を対象にした最適なプログラミング教材であるRaspberryPiを紹介します。
私のblog内でもさんざん扱っていますが、このRaspberryPiは海外で教育用目的で開発された安価なボード型のコンピューターで世界中である程度の実績を持っております。
改めて紹介すると、RaspberryPiは現在バージョン3のModelB。
初代と比較すると処理能力も大幅にアップ。
RaspberryPiの詳しいことは以下参照されたし。

https://ja.wikipedia.org/wiki/Raspberry_Pi

ここでは私の子供を交えて RaspberryPi で出来るプログラミング教育について考えてみたいと思う。
プログラミング教育と言っても将来プログラマーになって欲しいという訳ではなく、物事の考えからというか論理的な考える力をプログラミングを通して養ってもらいたいと思う。
私の子供が小学2年生になる頃、ログラミング授業が必修化になるようですが如何なる言語をつかうのか?
どのような端末で?
また文部科学省からは内容などについては学校の裁量でなど不透明な部分が多く不透明。
また現段階で如何なるプログラミング言語を選択したとしても将来的には陳腐化している可能性もあり様々な面で難しい問題を抱えているのも事実。
しかしプログラミングに要する思考は将来的にも役に立つと思うし、私が小学校の時に習得したBASICもすでに過去の遺物と化しておりますがその時の知識や思考過程は今のIT系の仕事をしていく上での基礎となっています。
当時はポケコンという関数電卓での簡易プログラム機能でしたので今とは比較になりませんがコンピュータの基礎的な部分は変わりません。
RaspberryPiでは様々な言語形態でプログラミングをすることが可能ですが、ここでは教育目的につくられたビジュアル的にプログラミングを行えるscratch(スクラッチ)を使用しプログラミング学習を進めていきたいと思います。
Scratchは最近であればiPadなどでも試すことができ子供向けのプログラミング教室などで広く採用されているものであります。
このscratch、

if a==0 { ・・・

とか英文でのプログラミングでなく、部品を並べて行く感じのプログラミング手法です。
(https://scratch.mit.edu/)

学習というと勉強?
というと子供しては引いてしまう感がありますが今人気のMineCraftと組み合わせることでグッと興味をそそる事でしょう。
そう、この興味がある、が重要です。
MineCraftを組み合わせることで実行結果が目に見えて判るから楽しみながら自然と学習できます。
ラズパイを使用すれば以上の事は安価で実現できるのです。

では、さっそく始めましょう。

個人的な何でもない話ですが、昔コモドールという海外のメーカーが日本でのみ販売していたMaxMachineという家庭用のゲーム機のようなコンピュータがありまして、私もなけなしのお年玉で購入した一ユーザーでした。
MAX-BASICというBASICを使えるカセットでBASICのプログラミングが出来るのですが開いたマニュアルの初めの言葉が「さあ、はじめよう」だったと思います。
子供心に何かわくわくするものを感じた一瞬でした。
今回はとりあえず実行環境を準備するところを解説していきたいと思います。

RaspberryPi 本体と必要なものを準備しましょう。

最低限必要なモノリスト

(1)RaspberryPi3 ModelB本体

パソコン本体だと思ってください。これが無いと何もできません。
できれば専用のケースとセットのものが良いかもです。
私が代々 RaspberryPiを使ってみた感覚では RaspberryPi3Bでないと快適に動作しましえん。
価格差も差ほどないので過去のものを選択する利点はありません。
最新のものをチョイスしましょう。
無線LANが内蔵されている所もポイント高いです。

(2)MicroSDメモリカード 16GB~32GBくらい

スマホなどで使うMicroSDメモリカードです。
MicroSDカードはあらかじめFAT32形式でフォーマットしておきましょう。

(3)SDカードリーダー/ライター

セットアップ時に必要です。
パソコンからMicroSDカードへOSを書き込む際に必要です。
ノートPCだと本体に付いている場合がありますので余計に買わないように注意してください。

(4)電源+ケーブル

USBケーブルで給電するので容量が足りればスマホ用の充電器でも使えるかもしれませんが余裕をもって専用のものを使った方がトラブルがなくていいかも。
一応5V2.5A以上が安心です。
電源とRaspberryPiはMicroUSBのケーブルで給電します。
ちなみにRaspberryPi側に電源スイッチはありません。
電源挿したら即起動って感じです。

(5)キーボード・マウス

USBのものであればパソコン用のものが使えます。
あれば代用しても可。
新品を購入しても2000円くらいのものからあります。

(6)HDMIケーブル

RaspberryPiとモニターを接続するのに必要です。
安価なもので構いませんが長さは環境に合わせてチョイスしてください。
家電量販店などではメーカー製の高価なものしかありません。
amazonやPCショップのワゴンセールなどを利用すると安く済みます。

(7)モニター

モニターは今どきのものなら家庭用の液晶TVでも使用できます。
TVで代用する方はHDMI入力端子があることを確認しておきましょう。
ちなみに20インチ程度であればパソコン用の新品モニターは12000円くらいからあります。

(8)インターネット環境

常に必要ありませんが初めのセットアップ時にはいろいろと使います。
また必須ではありませんがOSやパッケージ(アプリのようなもの)を更新したりするときに必要です。

以上あればRaspberryPiでプログラミングの学習を始めることができます。
またRaspberryPiにインストールされているワープロソフトや表計算ソフトを利用できます。

次回はいよいよOSの導入をしたいと思います。

RaspberryPi3B+液晶モニター(タッチペン)


2017年、第一弾はRaspberryPiで行きたいと思います。

XojoのRaspberryPi版ライセンス購入に先立ち実行環境としてRaspberryPi3Bとビルドオン方式のRaspberryPi専用のタッチペン対応、800*480 5インチ液晶モニターを購入してみた。
価格は非常に安くAmazonで4800円ほどでした。

raspberryPi2と3に対応しているようです。
メーカーのwebに初期型に関する事項がないので2以降用かもですね。
処理速度の問題もあるので気になる方は3Bを使用したほうが宜しいかと思います。
商品は段ボールに梱包されておりますがマニュアル等は一切ありません。
と言っても取り付けはRaspberryPiのGPIOのコネクタ部に差し、同梱のHDMI接続用の基板でHDMI端子同士を接続して終わりです。
HDMIで映像信号、GPIOの端子で電源とタッチ情報のやり取りをしていると思いますのでHDMIは延長できてもGPIOの延長にはケーブル長がどれくらい取れるかは微妙、そういった用途に使う予定の方は注意です。
DSC02922DSC02923

DSC02924DSC02928

至ってシンプル。

今回はRaspberryPi3Bについては触れませんが、このために2台購入しました。

OSはRASPBIAN JESSIE WITH PIXEL(2016-11-25-raspbian-jessie.zip)を使用。
サムソンの64GBのMicroSDが安かったのでそれを使ってます。

このモニターを使うにあたりRaspberryPi3Bは推奨2.5A取れる電源が必要なのでこのモニター分電力が追加され、いささか電源が心配でしたがいつも使用しているモバイルバッテリーであっさり起動。
たまに電力不足のカミナリマークが表示されますがとりあえずは大丈夫そうです。
モバイルバッテリー自体はスペック的には5V2.1Aです。

はじめ画面の横の解像度がおかしいのでメーカーサイトにあるconfig.txtを参考に修正。

DSC02929

 

ドライバーのインストールは
https://www.elecrow.com/wiki/index.php?title=HDMI_Interface_5_Inch_800x480_TFT_Display
メーカーwebサイトを参照。

tar xvf LCD-show-150602.tar.gz
cd LCD-show
sudo ./LCD5-show

とするだけ。

DSC02936DSC02937

ペンが使えるようになりました。
専用のDS用のようなスタイラスペンが付属してきますが感圧式なようで指でも反応します。
なかなか良い感じですが、むき出しなので画面を去れって操作するのはちょっと不安。
専用のケースとかあれば良いですね。
いろいろ使用場面が膨らみそうです。

液晶自体の使用感としては5インチはやはり小さい。
パッと見た感じL版の写真程度の大きさっぽいです。
これより小さい3.5インチの製品もあるようだが私的には5インチ限界。(何しろiPhone6plusより小さいし)
左右の視野角はそこそこ良いように感じるが下方向からは見ずらい。
写真のように立てて使ってます。

私の購入目的は自作アプリの実行環境(予定)なので電卓のようにボタンを大きくすればそれなりに操作できるけど、他のアプリはやはりマウス&キーボードがないと操作しずらい。
800*480という解像度も何をするにも中途半端。

2016-12-31-152728_800x480_scrot

タブレットのように使うのはちょっと無理があるかもです。
操作パネルとか何も決まった内容を常に表示するとか用途には良さそう。

とは言え玩具としては低価格で購入できるので楽しい。
3月にXojoのライセンスの更新が必要なのでその時にProに移行してRaspberryPi開発環境がそろったらこいつを使って遊んでみたいと思います。

自宅サーバーのRaspberryPi化 つづき(1)


WordPressの高速化について

RaspberryPi2であればまぁまぁのレスポンスで動作するWordPressだが旧サーバーと比べるともたつく感じがする。
必要十分であるが高速化する方法はなかと調べてみた。

簡単なところで

  • WordPress super cache
    というプラグイン導入

多少ハードルが高いが

  • NginxのリバースProxy
    を利用する。

上記2点が効果がありそうである。

今回はとりあえず簡単にできるプラグインを導入して様子を見ることにした。

メールサーバーについて

メールサーバの構築は旧サーバと同じくpostfix+dovecotを使用する。
殆ど設定をコピッたため詳しい設定方法はネットの情報を参照していただきたい。

インストールは

~$ sudo apt-get install postfix sasl2-bin
~$ sudo apt-get install dovecot-core dovecot-pop3d dovecot-imapd

でおこなう。

メールサーバ稼働後は悪用されないように不正中継がされないかきちんと設定されている確認しておいたほうが良いでしょう。

http://www.rbl.jp/svcheck.php

stmpサーバー名を入れチェックボタンを押すと自動でテストしてくれます。
色々なテストが行われ

第三者中継テストの結果

全てのテストが行われました, no relays accepted.

となればひとまず安心ですね。

これ1冊でできる!ラズベリー・パイ 超入門 改訂第2版 Raspberry Pi Model B/B+/2対応ラズパイ超入門(日経BPパソコンベストムック)初めてのラズベリーパイ2

自宅サーバーのRaspberryPi化


大したコンテンツもないのにxeon搭載の大そうな自宅サーバーを節電の意味でもRaspberryPi(以下ラズパイ)化することにした。
ラズパイ化するに当たって所有している既存の旧機種を使用するか新しいタイプのものを使用するか迷ったが、WordPressがある程度快適に動くことを考慮してスペックアップした新機種(Raspberry Pi 2 Model B)を使用することにした。
大体性能的には旧機種の6倍早いらしいので貧相でみすぼらしい私のwebページ程度でしたらサクサク配信できるものと思います。
ただ現在の自宅サーバーはwebサーバーとしての働きより仮想化を使用した開発用のデバッグ環境にありますので引き続き使用することになりそうです。
(電源入れたり切ったりが面倒になりそう。)

新たに準備したもの

と言うわけで今回購入したものはこれ。

  1. Raspberry Pi 2 Model B本体
    なぜかケース付きのほうが安いのでそれをチョイス。
  2. 専用アルミケース。
    年中電源ONなので、まさかの発火時にアクリルケースでは不安です。
  3. SDカード 64GB
    ちょっとしたデジカメ写真ギャラリー程度は置くかもなのである程度の容量を準備。
    いつも購入しているトランセンド社のものにしました。

SDIM0505SDIM0507SDIM0510SDIM0515

 

現行のモデルはmicroSDを採用している。

このアルミケースにRsapberryPi2を取り付けるとmicroSDへのアクセスは手軽には出来なくなる。

SDIM0514

 

RaspberryPiサーバーで何をする?

現在の自宅サーバーのような容量を活かしたowncloudやclipbucketなどは64GBのマイクロSDでは無理なのでまずは以下の3つを構築しサーバー移転をする。

  1. Webサーバー
    WordPressを使用するのでmysqlも。
  2. メールサーバー
  3. メンテ用のsshサーバー

OSのインストールと初めにやった設定

以前、RaspberryPiでやったのと同様にRaspbianというOSをインストールするつもりでいたが現在はubuntuも動かせるらしく今回は慣れたubuntuで行こうかと思います。
導入自体は現在はNOOBSというものがあるようですがubuntuの場合は以前と同様にイメージファイルをSDカードに焼きます。
イメージの入手先
https://wiki.ubuntu.com/ARM/RaspberryPi
から
Download 2015-04-06-ubuntu-trusty.zip
を入手します。

Win32Disk imagerやDDWinなどを使用してイメージファイルをマイクロSDへ書き込みます。
書き込みが完了したらRaspberryPi2に取り付け、あっという間にubuntuが起動。

SDIM0518SDIM0521SDIM0522

私の場合はCUIで使用するのでこのまま、あとは必要なパッケージ類を導入するだけ。
とりあえずイメージ配布元のマニュアル通りにパーティションを拡大。
導入直後

~$ df
 Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 1707856 642124 960928 41% /
devtmpfs 468772 4 468768 1% /dev
none 4 0 4 0% /sys/fs/cgroup
none 94612 260 94352 1% /run
none 5120 0 5120 0% /run/lock
none 473052 0 473052 0% /run/shm
none 102400 0 102400 0% /run/user
/dev/mmcblk0p1 65390 19800 45590 31% /boot/firmware

ん、swapが無い?
まぁswap使用しない予定だったので問題ない。

fastabは

~$ cat /etc/fstab
proc /proc proc defaults 0 0
/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
/dev/mmcblk0p1 /boot/firmware vfat defaults 0 2

な感じ。

~$ sudo fdisk /dev/mmcblk0
[sudo] password for ubuntu:

Command (m for help): d
Partition number (1-4): 2

Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (1-4, default 2): 2
First sector (133120-125958143, default 133120):
Using default value 133120
Last sector, +sectors or +size{K,M,G} (133120-125958143, default 125958143):
Using default value 125958143

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

ここで一旦リブート

~$ sudo reboot

パーティションサイズをSDカードの上限まで拡張する。

~$ sudo resize2fs /dev/mmcblk0p2
[sudo] password for ubuntu:
resize2fs 1.42.9 (4-Feb-2014)
Filesystem at /dev/mmcblk0p2 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 4
The filesystem on /dev/mmcblk0p2 is now 15728128 blocks long.

パーティションが拡張されたか確認

~$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 61927164 645200 58734120 2% /
devtmpfs 468772 4 468768 1% /dev
none 4 0 4 0% /sys/fs/cgroup
none 94612 260 94352 1% /run
none 5120 0 5120 0% /run/lock
none 473052 0 473052 0% /run/shm
none 102400 0 102400 0% /run/user
/dev/mmcblk0p1 65390 19800 45590 31% /boot/firmware

ルートディレクトリ(/)が無事拡張され64GBのマイクロSDを目いっぱい使用できるようになりました。

次にパッケージを最新に更新

~$ apt-get update
~$ apt-get dist-upgrade

でパッケージを更新

このままではリモートで操作できないのsshサーバーを導入
それとipアドレスがDHCPになっているので固定化します。

openssh-serverのインストール

基本私の場合ラズパイはリモート操作で行うのでSSHでログインできるようにsshサーバーを入れる

~$ apt-get install openssh-server

ip address固定

~$ vi /etc/network/interfaces
# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#allow-hotplug eth0
#iface eth0 inet dhcp
auto eth0
iface eth0 inet static
address 192.168.10.150
network 192.168.10.0
netmask 255.255.255.0
broadcast 192.168.10.255
gateway 192.168.10.1
dns-nameservers 192.168.10.1

のように修正
(ipアドレスは環境に合わせてください。)

タイムゾーン等変更

ここでタイムゾーンがUTCになっていることに気が付いたので修正

$ echo “Asia/Tokyo” | sudo tee /etc/timezone
Asia/Tokyo

~$ sudo dpkg-reconfigure -f noninteractive tzdata
Current default time zone: ‘Asia/Tokyo’
Local time is now: Tue Jan 5 14:19:09 JST 2016.
Universal Time is now: Tue Jan 5 05:19:09 UTC 2016.

~$ sudo locale-gen ja_JP.UTF-8
Generating locales…
ja_JP.UTF-8… done
Generation complete.

~$ sudo dpkg-reconfigure -f noninteractive locales
Generating locales…
en_AG.UTF-8… done
en_AU.UTF-8… done
en_BW.UTF-8… done
en_CA.UTF-8… done
en_DK.UTF-8… done
en_GB.UTF-8… done
en_HK.UTF-8… done
en_IE.UTF-8… done
en_IN.UTF-8… done
en_NG.UTF-8… done
en_NZ.UTF-8… done
en_PH.UTF-8… done
en_SG.UTF-8… done
en_US.UTF-8… done
en_ZA.UTF-8… done
en_ZM.UTF-8… done
en_ZW.UTF-8… done
ja_JP.UTF-8… up-to-date
Generation complete.

~$ echo “LANG=ja_JP.UTF-8” | sudo tee /etc/default/locale
LANG=ja_JP.UTF-8

確認

~$ date
 Tue Jan 5 14:24:29 JST 2016

キーボードを日本語配列に

sshでログインしている場合は関係ないですが、直にキーボードをつないだ場合には英語キー配列になっているので

~$ cat /etc/default/keyboard
# Check /usr/share/doc/keyboard-configuration/README.Debian for
# documentation on what to do after having modified this file.# The following variables describe your keyboard and can have the same
# values as the XkbModel, XkbLayout, XkbVariant and XkbOptions options
# in /etc/X11/xorg.conf.

XKBMODEL=”pc105″
XKBLAYOUT=”us”
XKBVARIANT=””
XKBOPTIONS=””

# If you don’t want to use the XKB layout on the console, you can
# specify an alternative keymap. Make sure it will be accessible
# before /usr is mounted.
# KMAP=/etc/console-setup/defkeymap.kmap.gz

のusをjpに変更

~$ sudo dpkg-reconfigure -f noninteractive keyboard-configuration
update-initramfs: deferring update (trigger activated)
Processing triggers for initramfs-tools (0.103ubuntu4.2) …
update-initramfs: Generating /boot/initrd.img-3.18.0-25-rpi2
flash-kernel: installing version 3.18.0-25-rpi2
flash-kernel: copying /boot/vmlinuz-3.18.0-25-rpi2 to /boot/firmware/kernel7.img
flash-kernel: copying /boot/initrd.img-3.18.0-25-rpi2 to /boot/firmware/initrd7.img

 

時間の自動合わせ

ラズパイにはRTCが搭載されていないので時間が大幅に狂う可能性がある。
時刻サーバーを利用して時間の自動合わせをします。

~$ sudo apt-get install ntp
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following extra packages will be installed:
libopts25
Suggested packages:
ntp-doc
The following NEW packages will be installed:
libopts25 ntp
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 421 kB of archives.
After this operation, 1204 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1
http://ports.ubuntu.com/ trusty/main libopts25 armhf 1:5.18-2ubuntu2 [49.4 kB]
Get:2
http://ports.ubuntu.com/ trusty-updates/main ntp armhf 1:4.2.6.p5+dfsg-3ubuntu2.14.04.6 [372 kB]
Fetched 421 kB in 2s (147 kB/s)
Selecting previously unselected package libopts25:armhf.
(Reading database … 26818 files and directories currently installed.)
Preparing to unpack …/libopts25_1%3a5.18-2ubuntu2_armhf.deb …
Unpacking libopts25:armhf (1:5.18-2ubuntu2) …
Selecting previously unselected package ntp.
Preparing to unpack …/ntp_1%3a4.2.6.p5+dfsg-3ubuntu2.14.04.6_armhf.deb …
Unpacking ntp (1:4.2.6.p5+dfsg-3ubuntu2.14.04.6) …
Processing triggers for man-db (2.6.7.1-1ubuntu1) …
Processing triggers for ureadahead (0.100.0-16) …
ureadahead will be reprofiled on next reboot
Setting up libopts25:armhf (1:5.18-2ubuntu2) …
Setting up ntp (1:4.2.6.p5+dfsg-3ubuntu2.14.04.6) …
* Starting NTP server ntpd [ OK ]
Processing triggers for libc-bin (2.19-0ubuntu6.6) …
Processing triggers for ureadahead (0.100.0-16) …

このままでもOKだが時刻合わせ用のサーバーを国内のものに変更

sudo vim /etc/ntp.conf
のserverで始まる行をコメントアウトし代わりに
server ntp.nict.jp
を追記する。

~$ sudo service ntp restart
* Stopping NTP server ntpd [ OK ]
* Starting NTP server ntpd [ OK ]

Webサーバー構築

今回はサーバーが非力なのでできるだけ高速にwwwを配信できるようにnginxを使用します。
(nginxは初めて利用するので間違った記載があったらごめんなさい)

~$ sudo apt-get install nginx

Reading package lists… Done
Building dependency tree
Reading state information… Done
The following extra packages will be installed:
fontconfig-config fonts-dejavu-core libfontconfig1 libfreetype6 libgd3
libjbig0 libjpeg-turbo8 libjpeg8 libtiff5 libvpx1 libxpm4 libxslt1.1
nginx-common nginx-core
Suggested packages:
libgd-tools fcgiwrap nginx-doc
The following NEW packages will be installed:
fontconfig-config fonts-dejavu-core libfontconfig1 libfreetype6 libgd3
libjbig0 libjpeg-turbo8 libjpeg8 libtiff5 libvpx1 libxpm4 libxslt1.1 nginx
nginx-common nginx-core
0 upgraded, 15 newly installed, 0 to remove and 0 not upgraded.
Need to get 3060 kB of archives.
After this operation, 9160 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://ports.ubuntu.com/ trusty/main fonts-dejavu-core all 2.34-1ubuntu1 [1024 kB]
Get:2 http://ports.ubuntu.com/ trusty-updates/main fontconfig-config all 2.11.0-0ubuntu4.1 [47.4 kB]
Get:3 http://ports.ubuntu.com/ trusty-updates/main libfreetype6 armhf 2.5.2-1ubuntu2.5 [253 kB]
Get:4 http://ports.ubuntu.com/ trusty-updates/main libfontconfig1 armhf 2.11.0-0ubuntu4.1 [107 kB]
Get:5 http://ports.ubuntu.com/ trusty/main libjpeg-turbo8 armhf 1.3.0-0ubuntu2 [85.2 kB]
Get:6 http://ports.ubuntu.com/ trusty/main libjpeg8 armhf 8c-2ubuntu8 [2202 B]
Get:7 http://ports.ubuntu.com/ trusty-updates/main libjbig0 armhf 2.0-2ubuntu4.1 [23.3 kB]
Get:8 http://ports.ubuntu.com/ trusty-updates/main libtiff5 armhf 4.0.3-7ubuntu0.3 [129 kB]
Get:9 http://ports.ubuntu.com/ trusty/main libvpx1 armhf 1.3.0-2 [797 kB]
Get:10 http://ports.ubuntu.com/ trusty/main libxpm4 armhf 1:3.5.10-1 [32.1 kB]
Get:11 http://ports.ubuntu.com/ trusty/main libgd3 armhf 2.1.0-3 [123 kB]
Get:12 http://ports.ubuntu.com/ trusty/main libxslt1.1 armhf 1.1.28-2build1 [128 kB]
Get:13 http://ports.ubuntu.com/ trusty-updates/main nginx-common all 1.4.6-1ubuntu3.3 [18.1 kB]
Get:14 http://ports.ubuntu.com/ trusty-updates/main nginx-core armhf 1.4.6-1ubuntu3.3 [285 kB]
Get:15 http://ports.ubuntu.com/ trusty-updates/main nginx all 1.4.6-1ubuntu3.3 [5452 B]
Fetched 3060 kB in 14s (217 kB/s)
Selecting previously unselected package fonts-dejavu-core.
(Reading database … 26861 files and directories currently installed.)
Preparing to unpack …/fonts-dejavu-core_2.34-1ubuntu1_all.deb …
Unpacking fonts-dejavu-core (2.34-1ubuntu1) …
Selecting previously unselected package fontconfig-config.
Preparing to unpack …/fontconfig-config_2.11.0-0ubuntu4.1_all.deb …
Unpacking fontconfig-config (2.11.0-0ubuntu4.1) …
Selecting previously unselected package libfreetype6:armhf.
Preparing to unpack …/libfreetype6_2.5.2-1ubuntu2.5_armhf.deb …
Unpacking libfreetype6:armhf (2.5.2-1ubuntu2.5) …
Selecting previously unselected package libfontconfig1:armhf.
Preparing to unpack …/libfontconfig1_2.11.0-0ubuntu4.1_armhf.deb …
Unpacking libfontconfig1:armhf (2.11.0-0ubuntu4.1) …
Selecting previously unselected package libjpeg-turbo8:armhf.
Preparing to unpack …/libjpeg-turbo8_1.3.0-0ubuntu2_armhf.deb …
Unpacking libjpeg-turbo8:armhf (1.3.0-0ubuntu2) …
Selecting previously unselected package libjpeg8:armhf.
Preparing to unpack …/libjpeg8_8c-2ubuntu8_armhf.deb …
Unpacking libjpeg8:armhf (8c-2ubuntu8) …
Selecting previously unselected package libjbig0:armhf.
Preparing to unpack …/libjbig0_2.0-2ubuntu4.1_armhf.deb …
Unpacking libjbig0:armhf (2.0-2ubuntu4.1) …
Selecting previously unselected package libtiff5:armhf.
Preparing to unpack …/libtiff5_4.0.3-7ubuntu0.3_armhf.deb …
Unpacking libtiff5:armhf (4.0.3-7ubuntu0.3) …
Selecting previously unselected package libvpx1:armhf.
Preparing to unpack …/libvpx1_1.3.0-2_armhf.deb …
Unpacking libvpx1:armhf (1.3.0-2) …
Selecting previously unselected package libxpm4:armhf.
Preparing to unpack …/libxpm4_1%3a3.5.10-1_armhf.deb …
Unpacking libxpm4:armhf (1:3.5.10-1) …
Selecting previously unselected package libgd3:armhf.
Preparing to unpack …/libgd3_2.1.0-3_armhf.deb …
Unpacking libgd3:armhf (2.1.0-3) …
Selecting previously unselected package libxslt1.1:armhf.
Preparing to unpack …/libxslt1.1_1.1.28-2build1_armhf.deb …
Unpacking libxslt1.1:armhf (1.1.28-2build1) …
Selecting previously unselected package nginx-common.
Preparing to unpack …/nginx-common_1.4.6-1ubuntu3.3_all.deb …
Unpacking nginx-common (1.4.6-1ubuntu3.3) …
Selecting previously unselected package nginx-core.
Preparing to unpack …/nginx-core_1.4.6-1ubuntu3.3_armhf.deb …
Unpacking nginx-core (1.4.6-1ubuntu3.3) …
Selecting previously unselected package nginx.
Preparing to unpack …/nginx_1.4.6-1ubuntu3.3_all.deb …
Unpacking nginx (1.4.6-1ubuntu3.3) …
Processing triggers for man-db (2.6.7.1-1ubuntu1) …
Processing triggers for ufw (0.34~rc-0ubuntu2) …
Processing triggers for ureadahead (0.100.0-16) …
Setting up fonts-dejavu-core (2.34-1ubuntu1) …
Setting up fontconfig-config (2.11.0-0ubuntu4.1) …
Setting up libfreetype6:armhf (2.5.2-1ubuntu2.5) …
Setting up libfontconfig1:armhf (2.11.0-0ubuntu4.1) …
Setting up libjpeg-turbo8:armhf (1.3.0-0ubuntu2) …
Setting up libjpeg8:armhf (8c-2ubuntu8) …
Setting up libjbig0:armhf (2.0-2ubuntu4.1) …
Setting up libtiff5:armhf (4.0.3-7ubuntu0.3) …
Setting up libvpx1:armhf (1.3.0-2) …
Setting up libxpm4:armhf (1:3.5.10-1) …
Setting up libgd3:armhf (2.1.0-3) …
Setting up libxslt1.1:armhf (1.1.28-2build1) …
Setting up nginx-common (1.4.6-1ubuntu3.3) …
Processing triggers for ufw (0.34~rc-0ubuntu2) …
Processing triggers for ureadahead (0.100.0-16) …
Setting up nginx-core (1.4.6-1ubuntu3.3) …
Setting up nginx (1.4.6-1ubuntu3.3) …
Processing triggers for libc-bin (2.19-0ubuntu6.6) …

nginxをスタートして確認

~$ sudo service nginx start

ブラウザにraspberrypi2のアドレスを入れて動作確認
ここで一発

~$ sudo apt-get install sysv-rc-conf

を入れておく。
chkconfigの代わりになるのと

~$ sudo sysv-rc-conf

とすることで一覧表示&変更ができるようになります。

php+mysqlのインストール

~$ sudo apt-get install php5 mysql-server php5-fpm php5-mysql
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following extra packages will be installed:
libaio1 libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient18
mysql-client-5.5 mysql-client-core-5.5 mysql-common mysql-server-5.5
mysql-server-core-5.5 php5-common php5-json
Suggested packages:
libclone-perl libmldbm-perl libnet-daemon-perl libplrpc-perl
libsql-statement-perl libipc-sharedcache-perl tinyca mailx php5-user-cache
php-pear
The following NEW packages will be installed:
libaio1 libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient18
mysql-client-5.5 mysql-client-core-5.5 mysql-common mysql-server
mysql-server-5.5 mysql-server-core-5.5 php5 php5-common php5-fpm php5-json
php5-mysql
0 upgraded, 16 newly installed, 0 to remove and 0 not upgraded.
Need to get 11.1 MB of archives.
After this operation, 93.7 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
      :
   省略
      :
php5-fpm stop/waiting
php5-fpm start/running, process 8922

途中mysqlのrootパスを聞かれるので設定。

~$ sudo vim /etc/php5/fpm/php.ini

私の場合はwordpressで写真などもアップロードするので

upload_max_filesize

post_max_size

をともに32Mにしました。

~$ sudo vim /etc/php5/fpm/pool.d/www.conf

コメントアウトし32Mを64Mに

php_admin_value[memory_limit] = 64M

~$ sudo vim /etc/nginx/sites-enabled/default

既存の設定をすべてコメントアウトし

追記

server{
listen 80;
server_name www.k2-y.com;
access_log /var/log/nginx;
index index.php index.html index.htm;
root /usr/share/nginx/html;
try_files $uri $uri/ /index.php?q=$uri&$args;
location ~ \.php$ {
root /usr/share/nginx/html;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/html;
include fastcgi_params;
}
}

wordpressのデータの移行

私の場合は既存のシステムからの移行になるので、移行元のデータをバックアップしリストア。
WordPressの本体ファイルを丸ごとコピーした。

バックアップ(データベースのダンプ)

移行元(旧サーバー)

mysqldump -u wordpressのDBユーザー名 -p wordpressのDB名 > ダンプファイル名

Enter password:

移行先(RaspberryPi)

mysql> create database dbname default character set utf8;
Query OK, 1 row affected (0.02 sec)
mysql> grant all on dbname.* to dbuser@localhost identified by ‘passwowd’;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

移行元でバックアップしたファイルを流し込む

~$ mysql -u dbuser -p dbname < ダンプファイル名
Enter password:

新規にインストールする方は、新しいシステムにWordPoress用のDBを作成し、WordPressのインストールマニュアルに従ってやれば簡単にできるかと思います。

vsftpインストール

あると便利なのでftpサーバーをインストール

~$ sudo apt-get install vsftpd
 [sudo] password for ubuntu:
パッケージリストを読み込んでいます… 完了
依存関係ツリーを作成しています
状態情報を読み取っています… 完了
以下のパッケージが新たにインストールされます:
vsftpd
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 0 個。
99.8 kB のアーカイブを取得する必要があります。
この操作後に追加で 298 kB のディスク容量が消費されます。
      :
    省略
      :
vsftpd (3.0.2-1ubuntu2.14.04.1) を設定しています …
vsftpd start/running, process 1317
Processing triggers for ureadahead (0.100.0-16) …

ログインパスワードを変更

ネットにサーバを公開するので初期パスワードを変更しておきましょう。

~$ sudo passwd ubuntu
Enter new UNIX password: あたらしいパスワード
Retype new UNIX password: あたらしいパスワード
passwd: password updated successfully

一旦公開

WordPressが使えるようになったのでRaspberryPiでhttpを配信してみることにします。
多少重い思うがまずまずのレスポンスかなと思います。

2016/1/6よりRaspberryPiで自宅サーバー運用してます。
ちなみに電源はNexus7 2012に付属していた充電用の2AのものをUPSにつないでます。

ToDo

  • webページの高速化
  • メールサーバーの設定