Raspberry piをlampサーバに仕立てる
前々から気になっていたRaspberry pi(ラズベリー・パイ)という手のひらサイズのコンピュータがある。
この度、ようやく手に入れたので少しいじってみる。
用途としては、
- 自宅内のWebサーバ(phpとデータベースも動かしたいな)
- 自宅内ネットワークのDNSサーバ(PC, VMwareのゲストOSがやたら多いんで、これで名前解決を一元化したい)
- 外部から自宅ネットワークへ接続するためのVPNサーバ
に使おうかと。
今回はRaspberry pi B+を手に入れたので、これに
- 16GBのmicroSDカード
- 40GBの2.5インチHDD (たまたま家に余っていたIDEのハードディスク)
を取り付けよう。
HDDは次の専用のケースに入れてUSB接続する。
インストールするOSは、いろいろ試した結果Arch Linux のRaspberry Pi 対応版にすることになった。
というのは、Raspberry Piのメインの記録メディアがSDカードということもあり、なるべくSDカードを酷使しないよう、ファイルシステムに「f2fs」を利用したかったためだ。
当初、Pidoraを使おうとしたのだが、f2fsがうまく認識してくれず、あえなく挫折。
raspbianもなんだかイヤだ(偏屈!)なぁ、と思い、結局Arch Linuxになった経緯がある。
準備するもの
- Linux(何でも良い)が動作するPC
VMware上のゲストOSとして動くLinuxでも可。 - HDMIケーブル
- HDMI接続ができるモニタ
HDMI端子のあるテレビでもOK - USBキーボード
準備作業
OSイメージのダウンロード
以下のサイトからArch Linux Raspberry Pi 対応の最新版をダウンロードする。
http://os.archlinuxarm.org/os/rpi/
wget http://os.archlinuxarm.org/os/rpi/ArchLinuxARM-2015.10-rpi-2-rootfs.tar.gz
PCの準備
Raspberry Piに使うmicroSDカードの利用ができるようになっていること、USB端子に空きがあること、くらいが条件。
あとは、F2FSファイルシステムを扱うので、事前にf2fs-toolsをPCにインストールしておく。
sudo apt-get install f2fs-tools
SDカード、HDDの準備
Linuxが動くPCにSDカードを差し、Gpartedなどでパーティションを作成。
/boot用に50MB程度とりfat32でフォーマット、残り全てをf2fsでフォーマットして使う
・SDカードにシステムをコピー
# mkdir /mnt/boot # mkdir /mnt/rootfs # mount -t vfat /dev/sdc1 /mnt/boot # mount -t f2fs /dev/sdc2 /mnt/rootfs
・予めダウンロードしたディレクトリへ移動し、圧縮イメージを展開する。
# cd ダウンロード # tar -xf ArchLinuxARM-rpi-latest.tar.gz /mnt/rootfs/ # sync # cp -rp /mnt/rootfs/boot/* /mnt/boot/ <--- /boot の内容を/dev/sdc1にコピーする
/boot のファイルの設定
・config.txtの設定
最下行に下記を記述
→外部接続のHDDに電源を供給するため
# vi /mnt/boot/config.txt -------------------------------------------------------- : safe_mode_gpio=4 max_usb_current=1 --------------------------------------------------------
・cmdline.txtの設定
OSがF2FSでフォーマットされたルートを認識するための設定
# vi /mnt/boot/cmdline.txt
前
-------------------------------------------------------- root=/dev/mmcblk0p2 rw rootwait console=ttyAMA0,115200 console=tty1 selinux=0 plymouth.enable=0 smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 kgdboc=ttyAMA0,115200 elevator=noop
——————————————————–
後
-------------------------------------------------------- root=/dev/mmcblk0p2 rw rootfstype=f2fs rootwait console=ttyAMA0,115200 console=tty1 selinux=0 plymouth.enable=0 smsc95xx.turbo_mode=N dwc_otg.lpm_enable=0 kgdboc=ttyAMA0,115200 elevator=noop --------------------------------------------------------
外付けHDDの操作
40GBのうち、1GBをswapに、のこりをext4でフォーマットする。
GPartedで行っても可。
HDDには、頻繁にファイル書き込みが発生するであろう /var, /home, /root を置くことにする。
#mkdir /mnt/var # mount /dev/sdd2 /mnt/var
・外付けHDDのvarのUUIDを調べて/etc/fstabに設定
#blkid : /dev/sdc1: SEC_TYPE="msdos" LABEL="BOOT" UUID="D842-552C" TYPE="vfat" /dev/sdd1: UUID="12930a7d-a593-4402-8394-0f17df8db020" TYPE="swap" /dev/sdd2: LABEL="var" UUID="115dcc28-0b50-4f28-84a2-91dc56a693dc" TYPE="ext4"
vi /mnt/rootfs/etc/fstab -------------------------------------------------------- : /dev/mmcblk0p2 / f2fs discard,noatime,nodiratime 0 1 UUID=115dcc28-0b50-4f28-84a2-91dc56a693dc /var ext4 defaults 0 0 --------------------------------------------------------
・HDD, microSDカードをアンマウントし、Raspberry Piにセット
Raspberry Pi本体の設定
基本設定
ここからは、Raspberry Pi にmicroSDカード、HDDをセットし、HDMIケーブルでモニタと接続、キーボードを接続して行う。
rootパスワードの変更
#passwd
タイムゾーンの設定
#rm /etc/localtime # ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
ホスト名の設定
#vi /etc/hostname
ユーザの作成
# useradd -m -g users hoge # passwd hoge
ネットワークの設定
今回は、systemd-networkdを使う
固定IPへの変更
#vi /etc/systemd/network/eth0.network --------------------------------------------------------------- [Match] Name=eth0 [Network] #DHCP=both DHCP=none Address=192.168.0.100/24 Gateway=192.168.0.1 DNS=192.168.0.1 ---------------------------------------------------------------
DHCPサービスを停止
#systemctl disable dhcpcd@eth0.service
再起動し、sshでログインできることを確認。
更新・必要ツールのインストール
・パッケージの更新
#pacman -Syu
・vimのインストール
# which vi /usr/bin/vi # ls -l /usr/bin/vi lrwxrwxrwx 1 root root 2 Jul 6 2014 /usr/bin/vi -> ex # pacman -S vim rubyやらpythonやら、いっぱいインストールされる。 # ln -sf /usr/bin/vim /usr/bin/vi
・sudoのインストール
#pacman -S sudo #visudo %wheel ALL=(ALL) ALLのコメントを外す # usermod -G wheel hoge
当該ユーザは一旦ログアウト→ログインすること
MySQLのセットアップ
インストール
# pacman -S mariadb
# vi /etc/mysql/my.cnf
innodbのコメントをすべて外す。
# mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql #systemctl start mysqld
タイムアウトが原因で1回で起動しないことがある。
なんどかstartをトライすると起動する。その後、OK。
正常に起動したら下記実行
#systemctl enable mysqld
MySQLのセキュリティ向上設定
#/usr/bin/mysql_secure_installation
画面上の問いに答えていく。基本すべてデフォルト値で良い。
phpのセットアップ
インストール
#pacman -S php #vi /etc/php/php.ini
apacheのセットアップ
インストール
#pacman -S apache php-apache
設定
#systemctl start httpd Apache is running a threaded MPM, but your PHP Module is not compiled to be threadsafe. You need to recompile PHP. AH00013: Pre-configuration failed
といわれる。
httpd.confで対応
#vi /etc/httpd/conf/httpd.conf --------------------------------------------------------------- : #LoadModule mpm_event_module modules/mod_mpm_event.so <----- コメントアウト LoadModule mpm_prefork_module modules/mod_mpm_prefork.so <-- コメント外す : ---------------------------------------------------------------
Apacheの諸情報(OSの種類やらモジュールやら)の表示をやめる
#vi /etc/httpd/conf/extra/httpd-default.conf --------------------------------------------------------------- : #ServerTokens Full <--- やめる ServerTokens Prod <---- 新規に記述 : ---------------------------------------------------------------
以上
You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.
Leave a Reply