最近FreeBSD使いの学生が増えそうな感じなので、FreeBSD での「サーバ運用」に必要な初歩的知恵をまとめることにした。 第一段はインストールとインストール後の設定について。
本文書はFreeBSD10.3時点のものである。
インストーラで最初の方に聞かれる「ファイルシステム」は、 FreeBSD/amd64 でメモリが4GB以上あるならまよわず「ZFS」にする。 それ以外はデフォルトの「UFS」であよい。UFSの場合、デフォルトでは 単一(/)パーティションになっているが、書き込みの激しい /var にトラブルが出たときを考えるとやっぱりまだ分けた方がよい。 経験的には最低
/ | 4GB(以上) | |
---|---|---|
/var | 4GB(以上) | |
/usr | 残り全部 |
くらいは分けた方がよい。
インストーラで聞かれる初期ユーザについて、 自分自身を追加することになるがこのときのグループは wheel と operator にしておく。前者はスーパーユーザが属するグループ、 後者はシャットダウン可能ユーザが属するグループであり、 最初からそこに入っていた方が面倒がない。とくにFreeBSDはデフォルトでは sudo がないので最初に wheel グループに入っておかないといちいち root でログインしないといけない。
FreeBSDインストール後に考えるべきは、 その後のOSアップグレードをどうするか、である。 巷には freebsd-update コマンドの説明があり、確かに楽ちんだが「遅い」。 *BSD はソースレベルで追いかける方が全体的にやりやすい。
FreeBSDのどのブランチを追いかけるか、 https://www.freebsd.org/releng/ にあるが、 「FreeBSDサーバ運用」という観点ではズバリ、stable/MAJOR ブランチを追いかけるのがよい。STABLE ブランチはFreeBSDの各メジャーバージョンにおける安定的開発版といえる。
cd /usr/src svnlite co svn://svn.freebsd.org/base/stable/10 mv 10/* 10/.??* . svnlite info Path: . Working Copy Root Path: /usr/src URL: svn://svn.freebsd.org/base/stable/10 Relative URL: ^/stable/10 Repository Root: svn://svn.freebsd.org/base Repository UUID: ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f Revision: 299060 Node Kind: directory Schedule: normal Last Changed Author: ngie Last Changed Rev: 299059 Last Changed Date: 2016-05-04 16:39:23 +0900 (Wed, 04 May 2016)
これで、/usr/src に FreeBSD10 の STABLE ブランチソースが得られる。 あとは、Makefile の中程に書いてある手順書を見る。
/usr/src/Makefile より
# For individuals wanting to upgrade their sources (even if only a # delta of a few days): # # 1. `cd /usr/src' (or to the directory containing your source tree). # 2. `make buildworld' # 3. `make buildkernel KERNCONF=YOUR_KERNEL_HERE' (default is GENERIC). # 4. `make installkernel KERNCONF=YOUR_KERNEL_HERE' (default is GENERIC). # [steps 3. &4. can be combined by using the "kernel" target] # 5. `reboot' (in single user mode: boot -s from the loader prompt). # 6. `mergemaster -p' # 7. `make installworld' # 8. `mergemaster' (you may wish to use -i, along with -U or -F). # 9. `make delete-old' # 10. `reboot' # 11. `make delete-old-libs' (in case no 3rd party program uses them anymore)
とくにカスタムカーネルを使っているのでなければ以下のような感じ。
cd /usr/src make -j3 buildworld && make -j3 kernel shutdown -r now : リブートして上がって来たら shutdown now : としてシングルユーザモードに落とす cd /usr/src mergemaster -p : /etc/group と /etc/master.passwd の更新を聞かれるので d を選ぶ make installworld mergemaster -iFU : 様々な /etc ファイルの更新を聞かれるので自分がいじったファイルでなければ : i を入力して最新版に置き換えてもらう。 yes | make delete-old shutdown -r now : delete-old-libs は個人的にはしていない(古いプログラムを保持したいため)
時が経ち、あるいは何かのセキュリティパッチが出てきたら、更新する。 その場合は /usr/src ディレクトリでソースのアップデートを行なう。
svn up
がーああー、っと新しいソースが入って来るので上記のビルド手順を行なう。
さらに時が経ち、FreeBSDの新しいメジャーバージョンが出た。 メジャーバージョンを上げたくなったとする。 経験的には、FreeBSD X.1 が出たら「その時」である(X.0は「まだ早い」)。 以下の例はFreeBSD10からFreeBSD11に変えるときが来た場合である。
svnlite switch svn://svn.freebsd.org/base/stable/11
その後のビルド手順はおそらく同じ。念のため /usr/src/Makefile を確認して進めよう。え、switch サブコマンドの後を忘れちゃったらどうするか? なら svnlite info だけ覚えておこう。svnlite info によって現在のリポジトリのパスが表示されるのでそこにある 10 ってのを 11 に変えるだけだ。"info" サブコマンドを忘れないように。
とくにこだわりがないのなら、もう FreeBSD なら ports じゃなくて pkg 使おう。
pkg install パッケージ名
でFreeBSD対応アプリケーションはさくっと入る。まずは sudo を入れよう。
pkg install sudo
一発めの起動では、pkgそのものの環境更新をするか聞かれるので y で答える。入れたいアプリケーションの正式なパッケージ名が分からなかったら search サブコマンドを使う。
pkg search virtualbox
phpvirtualbox-4.3.2 AJAX Web Interface for VirtualBox
virtualbox-ose-4.3.38_1 General-purpose full virtualizer for x86 hardware
virtualbox-ose-additions-4.3.38 VirtualBox additions for FreeBSD guests
virtualbox-ose-kmod-4.3.38 VirtualBox kernel module for FreeBSD
このくらい分かればあとはぐぐれば何とかなるレベル。
さあ、では、Webサーバを立ててみよう。