Raspberry Piでサーバ構築
Raspberry PiのRaspbianで、サーバを構築する情報です。
2013年11月12日 更新
RaspbianをQEMUで使う(Ubuntu)
RaspbianをQEMUで使う手順です。(Ubuntu)
- QEMUをインストールする。
- Raspbianを格納するディレクトリを作成する。
- Raspbianイメージファイルをダウンロードして解凍する。
- Linux kernel for Qemu をダウンロードする。
- Raspbianイメージファイルをマウントする。
- ld.so.preloadの内容を変更。
- Raspbianイメージファイルをアンマウントする。
- 一旦、QEMUから起動する。
$ sudo apt-get install qemu-system
$ mkdir ~/qemu_pi $ cd ~/qemu_pi
$ wget http://downloads.raspberrypi.org/raspbian_latest -O 2013-09-25-wheezy-raspbian.zip $ unzip 2013-09-25-wheezy-raspbian.zip2013-09-25-wheezy-raspbian.imgが解凍される。
$ wget http://xecdesign.com/downloads/linux-qemu/kernel-qemu
$ sudo mkdir /mnt/raspbian $ sudo mount ~/qemu_pi/2013-09-25-wheezy-raspbian.img -o offset=62914560 /mnt/raspbian
$ sudo gedit /mnt/raspbian/etc/ld.so.preload[変更前] /usr/lib/arm-linux-gnueabihf/libcofi_rpi.so
↓
[変更後] #/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so
$ sudo umount ~/qemu_pi/2013-09-25-wheezy-raspbian.img /mnt/raspbian $ sudo rmdir /mnt/raspbian
$ qemu-system-arm -kernel ~/qemu_pi/kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1" -hda ~/qemu_pi/2013-09-25-wheezy-raspbian.img -redir tcp:5022::22
# fsck /dev/sda2Fix<y>? の質問はそのままEnterキーを押す。
終わったら、シャットダウンする。
# shutdown -h now
この時点でのRaspbianイメージファイルを別にコピーしておくことで、ここからやり直すことが出来る。
もう一度、QEMUから起動する。
$ qemu-system-arm -kernel ~/qemu_pi/kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1" -hda ~/qemu_pi/2013-09-25-wheezy-raspbian.img -redir tcp:5022::22
参考:
HOWTO: Virtual Raspbian on Qemu in Ubuntu Linux 12.10
Raspbianの初期設定例
Raspbianの初期設定例です。
- 「1 Expand Filesystem」は選択不要。
- 「2 Change User Password」 → 「Ok」 → ユーザー「pi」のパスワードを入力。 → パスワード再入力。 → 「Ok」
- 「3 Enable Boot to Desktop/Scratch」 → 「Console Text console, ...」 → Enterキー
- 「4 Internationalisation Options」 → 「I1 Change Locale」 → Enterキー
→ 「en_GB.UTF-8 UTF-8」と「ja_JP.UTF-8 UTF-8」にSpaceキーで「*」マークを入れる。 → Enterキー
→ 「ja_JP.UTF-8」を選択する。 → Enterキー - 「4 Internationalisation Options」 → 「I2 Change Timezone」 → Enterキー
→ 「Asia」 → 「Tokyo」 → Enterキー - 「4 Internationalisation Options」 → 「I3 Change Keyboard Layout」 → Enterキー
→ 「Generic 105-key (Intl) PC」 → 「Other」 → 「Japanese」 → 「Japanese」
→ 「Right Alt (AlrGr)」 → 「No compose key」 → 「No」 - 「5 Enable Camera」はお好みで。
- 「6 Add to Rastrack」は選択不要。
- 「7 Overclock」はお好みで。
- 「8 Advanced Options」 → 「A4 SSH」 → 「Enable」 → 「Ok」
- Tabキーを押して、右矢印キーを押して、「Finish」を選択する。 → Enterキー → 「Yes」
ユーザー名 : pi
パスワード : 上記で設定したパスワード、またはraspberry
以下のコマンドで再設定できます。
$ sudo raspi-config
パッケージのアップデート・アップグレード
Raspbianが起動したら、まずパッケージのアップデート・アップグレードを行います
$ sudo apt-get -y update $ sudo apt-get -y upgrade文字化け(■が表示される)は気にせずに。
日本語対応(画面出力・キー入力)
日本語対応を行う手順です。
- jfbtermとuimをインストールする。
- 入力切り替えをCtrl+Spaceに変更する。
- ログイン時に日本語対応が有効になるよう変更する。
$ sudo apt-get -y install jfbterm uim uim-anthy
$ sudo vi /usr/share/uim/generic-key-custom.scm
[変更前] (define-custom 'generic-on-key '("zenkaku-hankaku" "<Shift> ") ↓ [変更後] (define-custom 'generic-on-key '("zenkaku-hankaku" "<Control> ") [変更前] (define-custom 'generic-off-key '("zenkaku-hankaku" "<Shift> ") ↓ [変更後] (define-custom 'generic-off-key '("zenkaku-hankaku" "<Control> ") |
$ vi ~/.bashrcファイルの末尾に以下を追記する。
case $TERM in linux) if [ -c /dev/fb0 ]; then jfbterm -q -e uim-fep -u anthy exit fi ;; esac |
次回ログイン時から日本語の表示・入力が可能になります。
参考:
Raspberry Piの日本語表示と日本語入力
t2g blog: Raspberry Piでやったこと履歴
NFS
NFSを使う手順です。サーバ=Raspberry Pi、クライアント=PC、です。
- 準備。NFSをインストール&設定する。
- nfs-kernel-serverをインストールする。
- exportsを設定する。
- サービスを登録する。
- クライアントにて、nfs-commonをインストールする。
- クライアントにて、マウントポイントを作成する。
- 運用。クライアントにて、サーバの/mnt/usbhddをマウントする。
$ sudo apt-get install nfs-kernel-server
$ sudo vi /etc/exports/mnt/usbhdd を読み書き可能で公開する場合は、以下を追記する。
/mnt/usbhdd *(rw,sync,no_subtree_check)
$ sudo update-rc.d rpcbind enable $ sudo update-rc.d nfs-common enable $ sudo update-rc.d nfs-kernel-server enable
$ sudo apt-get install nfs-common
$ sudo mkdir /mnt/pi
$ sudo mount -t nfs IPアドレス:/mnt/usbhdd /mnt/pi
Samba
Sambaを使う手順です。
- sambaをインストールする。
- 公開するディレクトリを設定する。
- サービスを再起動する。
$ sudo apt-get install samba
$ sudo vi /etc/samba/smb.conf/mnt/usbhdd を読み書き可能で公開する場合は、以下を追記する。
[share]
path=/mnt/usbhdd
read only=no
browsable=yes
guest ok=yes
force user=pi
$ sudo service samba restart
OpenSSL
OpenSSLを使う手順です。(オレオレ認証局)
- 準備。OpenSSLの設定を変更し、CA認証局を作成する。
- 設定ファイルを変更する。
- CAスクリプトを変更する。(鍵強度強化のため)
- CA認証局用ディレクトリを作成する。
- CA認証局を新規作成する。
- CA認証局の秘密鍵と証明書を確認する。 ~/CA/demoCA/private/cakey.pem : 秘密鍵
- 運用。秘密鍵と証明書を発行する。
- CA認証局用ディレクトリへ移動する。
- 秘密鍵を生成する。
- 秘密鍵からパスフレーズを除去。
- 証明要求書を作成。
- 証明書を作成。
- 秘密鍵と証明書を確認する。 my.key : 秘密鍵
$ sudo vi /etc/ssl/openssl.cnf[ usr_cert ]
変更前
# nsCertType = server
↓
変更後
nsCertType = server
[ v3_ca ]
変更前
# nsCertType = sslCA, emailCA
↓
変更後
nsCertType = sslCA, emailCA
$ sudo vi /usr/lib/ssl/misc/CA.pl変更前
$CADAYS="-days 1095" # 3 years
↓
変更後
$CADAYS="-days 36500" # 100 years
変更前
print "Making CA certificate ...\n";
system ("$REQ -new -keyout " .
"${CATOP}/private/$CAKEY -out ${CATOP}/$CAREQ");
↓
変更後
print "Making CA certificate ...\n";
system ("$openssl genrsa -des3 -out ${CATOP}/private/$CAKEY 2048");
system ("$REQ -new -key ${CATOP}/private/$CAKEY -out ${CATOP}/$CAREQ");
$ mkdir ~/CA $ cd ~/CA
$ /usr/lib/ssl/misc/CA.pl -newca
~/CA/demoCA/cacert.pem : 証明書
$ cd ~/CA
$ openssl genrsa -des3 -out my_pass.key 2048
$ openssl rsa -in my_pass.key -out my.key秘密鍵のパスフレーズを入力する。
$ openssl req -new -key my.key -out my.csr
$ openssl ca -days 36500 -policy policy_anything -out my.crt -infiles my.csr
my.crt : 証明書
my_pass.keyとmy.csrは不要。
SSH
SSHを使う手順です。サーバ=Raspberry Pi、クライアント=PC、です。
- 準備。
- サーバにて、クライアント秘密鍵を生成する。
- サーバにて、クライアント秘密鍵(OpenSSL方式)からクライアント公開鍵を作成
- サーバにて、クライアント公開鍵をサーバに登録 ・初回
- クライアントにて、クライアント秘密鍵をクライアントに配置
- サーバにて、パスワード入力無効
- サーバにて、sshdサービスを再起動
- 運用。クライアントにて、クライアントからサーバへ接続。
$ openssl genrsa -des3 -out private.key 2048パスフレーズを設定する。
$ chmod 600 private.key $ ssh-keygen -y -f private.key > public.key
$ mv public.key ~/.ssh/authorized_keys $ chmod 600 ~/.ssh/authorized_keys・2回目以降
$ cat public.key >> ~/.ssh/authorized_keys
$ mv private.key ~/.ssh/id_rsa
$ sudo vi /etc/ssh/sshd_config変更前
#PasswordAuthentication yes
↓
変更後
PasswordAuthentication no
$ sudo service sshd restart
$ ssh -i ~/.ssh/id_rsa pi@IPアドレス
Apache
Apacheを使う手順です。
- 準備。
- apache2をインストールする。
- 公開するディレクトリを設定する。
- 公開設定を変更する。
- デフォルトで検索されるファイル名の設定。
- CGI・SSIが有効となる拡張子の指定。
- 設定の書式をテスト。
- mod_pythonをインストール。
- apache2サービスを再起動。
- SSLを有効化。
- SSL設定を有効化する。
- SSL用設定を変更する。
$ sudo apt-get install apache2
$ sudo vi /etc/apache2/sites-enabled/000-default変更前
/var/www
↓
変更後
/mnt/usbhdd/www
$ sudo vi /etc/apache2/sites-enabled/000-default変更前
Options Indexes FollowSymLinks MultiViews
↓
変更後
Options Includes ExecCGI FollowSymLinks
ServerSignature Off
Includes : SSI有効
ExecCGI : CGIスクリプト有効
Indexes : 指定されたファイルがない場合ファイル一覧を表示
FollowSymLinks : シンボリックリンクを有効
ServerSignature Off : エラーメッセージにApacheのバージョンを表示させない
変更前
AllowOverride None
↓
変更後
AllowOverride All
AllowOverride All : 各ディレクトリの.htaccessを全て有効化
$ sudo vi /etc/apache2/mods-enabled/dir.conf
$ sudo vi /etc/apache2/mods-enabled/mime.conf#AddHandler cgi-script .cgi
のコメントを外す。
$ apachectl configtest「Syntax OK」と出力されればOK。
$ sudo apt-get install libapache2-mod-python
$ sudo service apache2 restart
$ sudo a2enmod ssl
$ sudo vi /etc/apache2/enabled-sites/000-default-ssl