Ubuntu Server 実践バイブル 現場で即運用に役立つサービス設定のノウハウ

日本語で読める、おそらく現時点では最高の Ubuntu Server 本がついに出版されました。著者は Ubuntu Japanese Team の hito さんこと黒幕。日本の Ubuntu 公式アーカイブミラー管理者でもある hito さんの、サーバー運用に関するノウハウがたっぷり詰まった一冊に仕上がっています。
タイトルに Ubuntu Server とあるので、いわゆる Ubuntu HowTo 本のサーバー版? と思われるかもしれませんが、実は違います。本書を構成する成分の多くは「サーバー運用に携る者が知っておかねばならない暗黙知」だったりします。本文は平易に、そして膨大な脚注やノートに「これはこういう経緯でこうなっています」「こうしがちだけど、こういう理由でヤバいからやっちゃだめ」「これは理論的に可能だけど、あんまり意味はありません」といった、書籍やWebではなかなか説明されない、それでいて知っていなければならない記述が満載です。あまりの脚注の多さに、まるで士郎正宗のマンガを読んでいるような。
たとえば第 6 章。SSH の解説の中に、次のようなノートがあります。

bash のヒストリーに(構築作業中に使ったであろう)「scp -r /etc root@remote:」などが入っているとします。ssh-agent を起動してパスフレーズを覚えさせた状態で Ctrl+R キーでヒストリー検索をし、うっかりこれを実行すると、システムを一撃で破壊することが可能です。

システムはうっかりミスで簡単に破壊されてしまうので、パスフレーズは不要になったら破棄せよ、履歴や補完でコマンドを実行する際には確認する癖をつけよ、という管理者としての心得ですね。HowTo を解説している本は多いですが、ここまで気を回してくれるサーバー本はなかなかないんじゃないでしょうか。
Ubuntu に限らず、Linux サーバーの初級、中級管理者には、ぜひ一度目を通して欲しいと思います。そういう意味では、タイトルの「Ubuntu Server」はちょっと損してるかもしれないですね。

ツッコミどころというか、気になった点もいくつか。
第 6 章では ssh-keygen の(鍵生成以外の)使い方も解説されているのですが、サーバーで SSH な話をするのならば、ssh-copy-id と ssh-import-id を説明してもよかったんじゃないかなと思います。ssh-import-id は Dustin だし。
第 12 章で Apache のバーチャルホストの設定をしていますが、ServerAlias を指定しています。ServerName を指定しないとリダイレクトした際に生成される URL が IP アドレス逆引きから求められるはずなので、意図しない URL が表示されちゃったりしないかなーとかちょっと気になりました*1

ちなみに本書がバカ売れしたりすると、さらに詳しい「本命」が出るかもしれないらしいですよ? というわけで*2みなさんぜひ購入を。

*1:ServerAlias でも大丈夫なんだっけ? Apache のドキュメントには書いてなかった……。

*2:その本、俺が読みたいので

Ubuntu Magazine Japan Vol.09 は 9 月 6 日発売です!

Ubuntu Magazine Japan vol.09 (アスキームック)

Ubuntu Magazine Japan vol.09 (アスキームック)

三ヶ月に一度のお約束。うぶまが発売の時期がやってきましたよ。
特集ではアプリ 2 本を担当しました。だいぶ控えめです。どのアプリが水野担当かわかるでしょうか? ……スクリーンショットですぐわかりそうですね。
実は今だから言いますけど、今回の特集、話が来た時はほんとに気に入らなかったんですよ。
そもそも Ubuntu は標準搭載のアプリで十分使えるものになっているわけで(もちろん GIMP のように、標準で CD に収録されていないものも多いですが)、Windows の「フリーソフト 100 選」みたいなノリでマイナーなアプリを紹介することにあまり意味を見出せなかった上、雑誌としてもネタ切れ感満載じゃないですか。ですができあがってくる原稿を見てみると……ん、なかなか面白いんじゃないですか?
押井守風に言うと
「気変わった。今、変わった」
という感じ。

詳しい話はまた発売後にしようかと思いますが、とりあえず書店で手に取って頂ければ幸いです。

Debian Liveで軽量なレスキューメディアを作ってみる

サーバーに対して、外部メディアから OS を起動して何らかのメンテナンスをしたいというシチュエーションはよくありますよね。例えばディスクを完全に消去したい場合だとか、設定間違って起動しなくなったので復旧したいとか*1、故障したサーバーからデータを救出したいとか。KnoppixXubuntu を使うのもいいのですが、データセンターにあるサーバーに、リモート KVM 越しに起動メディアをマウントして起動するような場合、これらの OS は少々使い勝手がよくありません。デカいので起動に時間もかかりますし、そもそも GUI は不要ですし。
そんなわけで軽量なレスキューメディアが欲しくなりました。そういったディストリも世の中にはあるようですが、せっかくなので live-build を使って Debian をカスタマイズしてみようかと。

Ubuntu 12.04 上で Ubuntu 12.04 をビルドする

live-build は Debian だけでなく、Ubuntu もビルドすることができます。なのでまずは常用している Ubuntu 12.04 上で Ubuntu 12.04 のライブイメージを作成してみることにします。
基本的な使い方。まず以下のパッケージをインストール。

$ sudo apt-get install live-boot live-build live-config

そしたら、ワーキングディレクトリを掘って、config & build。

$ mkdir live
$ cd live
$ lb config --mode "ubuntu"
$ lb config -d "precise"
$ lb config -p minimal
$ lb config --parent-distribution "precise"
$ lb config --parent-archive-areas "main universe"
$ lb config --mirror-bootstrap "http://jp.archive.ubuntu.com/ubuntu/"
$ lb config --mirror-chroot "http://jp.archive.ubuntu.com/ubuntu/"
$ lb config --mirror-binary "http://jp.archive.ubuntu.com/ubuntu/"
$ sudo lb build

が、途中でコケる。chroot 環境に live-config を入れようとして止まってるぽい? なんで?

P: Begin installing packages (live pass)...
(...略...)
The following NEW packages will be installed:
  casper debian-installer-launcher fontconfig-config iso-codes libexpat1
  libfontconfig1 libfontenc1 libgl1-mesa-dri libgl1-mesa-glx libglapi-mesa
  libice6 libllvm3.0 libsm6 libutempter0 libx11-6 libx11-data libx11-xcb1
  libxau6 libxaw7 libxcb-glx0 libxcb-shape0 libxcb1 libxcomposite1 libxdamage1
  libxdmcp6 libxext6 libxfixes3 libxft2 libxi6 libxinerama1 libxmu6 libxmuu1
  libxpm4 libxrender1 libxt6 libxtst6 libxv1 libxxf86dga1 libxxf86vm1
  live-config live-config-upstart live-tools localechooser-data lzma psmisc
  ttf-dejavu-core uuid-runtime x11-common x11-utils xbitmaps xterm
The following held packages will be changed:
  live-config
0 upgraded, 51 newly installed, 0 to remove and 0 not upgraded.
Need to get 19.0 MB of archives.
After this operation, 67.8 MB of additional disk space will be used.
E: There are problems and -y was used without --force-yes
P: Begin unmounting filesystems...

Debian squeeze 上で Debian squeeze をビルドする

どうも live-build 自体がバグってるようなので、そのへんは henrich 先生にお任せして、実績のある squeeze でビルドすることに。squeeze の実機や仮想マシン環境は手元にないので*2、pbuilder-dist で squeeze の chroot 環境を作った上でビルドしています。

$ sudo apt-get install ubuntu-dev-tools
$ pbuilder-dist squeeze amd64 create
$ pbuilder-dist squeeze amd64 login --save-after-login
lb config
lb config --mode "debian"
lb config -d "squeeze"
lb config -p minimal
lb config --parent-distribution "squeeze"
lb config --username future
lb config --parent-archive-areas "main non-free contrib"
lb config --mirror-bootstrap "http://ftp.jp.debian.org/debian/"
lb config --mirror-chroot "http://ftp.jp.debian.org/debian/"
lb config --mirror-binary "http://ftp.jp.debian.org/debian/"
lb config --mirror-chroot-security "http://security.debian.org"
lb config --mirror-binary-security "http://security.debian.org"
lb config --mirror-chroot-volatile "http://ftp.jp.debian.org/debian/"
lb config --mirror-debian-installer "http://ftp.jp.debian.org/debian/"
追加パッケージリスト

現行の live-build では、config/chroot_local-packageslists/custom.list のようなファイルにパッケージ名を列挙するだけで、パッケージをライブシステムに追加できます。今回追加したのは以下のパッケージ。

byobu
bzip2
ca-certificates
curl
dnsutils
dstat
ftp
isc-dhcp-client
less
lftp
lsb-release
lsof
lsscsi
net-tools
nmap
ntfs-3g
ntpdate
openssh-client
openssl
parted
patch
procps
psmisc
stress
tcpdump
tree
unzip
vim
wget
whois
zsh
フック

フックを利用することで、ライブシステムに対して様々な調整を行うことができます。ここでは root ユーザーのパスワードと、OpenSSH サーバーのインストールを行っています。追加パッケージでインストールしないのは、SSH サーバーを自動起動しない設定にしたいから。

$ vi config/chroot_local-hooks/10-update_password.sh

#!/bin/sh
echo "I: update password"
echo "root:(パスワード)" | chpasswd
$ vi config/chroot_local-hooks/20-openssh.sh

#!/bin/sh
echo "HOOK: ssh server"
apt-get install --yes --force-yes -y openssh-server
update-rc.d -f ssh remove

wget が消されるとかそんな

これでビルドを実行すれば ISO ファイルが作成されるのですが、動作を確認してみると何かおかしい。wget パッケージを入れたはずなのに、command not found になっちゃいます。はて? と clean --all してからもう一度ビルドしてログを確認してみます。すると

Selecting previously deselected package wget.
Unpacking wget (from .../wget_1.12-2.1_amd64.deb) ...

パッケージは取ってきてる。

Setting up wget (1.12-2.1) ...

インストールされた。

P: Begin executing hooks...
Reading package lists...
Building dependency tree...
Reading state information...
The following packages will be REMOVED:
  wget*
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 2421 kB disk space will be freed.

なぜかこの hook で削除候補に。

Removing wget ...
Purging configuration files for wget ...

ふぁっく。わけがわからないよ。
起動したライブシステム上でインストールすることも可能だし、なんかがコンフリクトしてるとかじゃないとは思うんだけど、これなんだろう?

*1:こら

*2:厳密に言えば二台あるけど、kirkwood と orion5x だとかそんな。

OSC 2012 Hokkaido セミナー動画を公開しました


月をまたいでしまいましたが、OSC 2012 Hokkaido の Ubuntu Japanese Team セミナーの動画を公開しました。よく見ると……12.10 で PAE カーネルの廃止とかスライド間違ってますね。正しくは"非" PAEカーネルの廃止です。
撮影は @naru0ga さん。音声は手元の iPhone で別録りしたものを、@78tch さんに合成してもらいました。PiTiVi でうまく動画のカットができなかったんだよう。

Ubuntu Linux 入門キット 12.04 対応

[rakuten:neowing-r:10752590:detail]
Ubuntu Linux 入門キットは、日本で最初にリリースされた Ubuntu 解説本です。最初のリリースは Ubuntu 6.06 が出た 2006 年で、それから LTS のリリースごとに版を重ね、今回で 4 冊目となります。もともとは Japanese Team リーダーの小林さんが執筆していたのですが、今回の刷新にあたり、水野が執筆を担当しました。また過去の 8.04 / 10.04 対応版は改訂という形で出版されたのですが、今では Ubuntu の中身もずいぶん変化しているため、今回は 12.04 のリリースに合わせて、全ページを書き下ろしています。
Japanese Team が執筆している Ubuntu 本といえば Ubuntu Magazine があります。うぶまがはとてもよい雑誌で、旬の話題や様々な Tips といった美味しいところを「つまみ食い」できる、バラエティに富んだ構成になっているのですが、その反面、まったく予備知識のない初心者が最初に読むテキストとしては向かない部分もあります。本書ではそのあたりをカバーすることも考え「Windows はちょっと使ったことがあるけど、Ubuntu は完全に未経験」という人が、これ一冊で一通りのオペレーションを行なえるようになるよう、必要な事項を網羅したつもりです。
さらに、単にデスクトップのオペレーションを解説するだけでなく、その背後にある Ubuntu の思想とコミュニティについてや、サーバー版、ARM 版についても言及しています。Ubuntu 本は市場にたくさんありますが、12.04(Unity) 時代の入門書としては、その中でも割といい出来になったのではないかなと思っています。
そんなわけで、よかったら手に取って頂けると嬉しいです。

Ubuntu Magazine Japan Vol.8 発売!

Ubuntu Magazine Japan vol.08 (アスキームック)

Ubuntu Magazine Japan vol.08 (アスキームック)

Ubuntu Magazine Japan Vol.8 が本日発売されました。リリースされたばかりの Ubuntu 12.04 特集をはじめ、コンテンツは以下のような感じ。

  • Ubuntu 12.04 LTS の新機能
  • Ubuntu 12.04 LTS をインストールする
  • Ubuntu 12.04 LTS 完全活用ガイド
  • なんでも Ubuntu で使いたい!
  • うぶんちゅ! 第 12 回
  • Ubuntu ロードテスト
  • 発掘! お宝アプリ!
  • Unity をもっと便利にする技
  • デスクトップをカスタマイズする
  • Ubuntu Server 入門
  • 好漢・うぶんつ侍
  • ホンヤクしようぜ! 第 1 回
  • コマンドライン再入門

私は、完全活用ガイドを 2 項目とインストール手順を担当させて頂きました。あとは連載のロードテストとコマンドライン再入門。
ロードテストはいい加減ネタ切れというか、そろそろ新マシンを投入したいところですね。まーそれとは別に、Proxmox はご家庭で使うにはなかなかよい選択だと思うので、次回サーバー特集第二弾なんかがもしあったら、ページをもらって詳細に解説させてもらおうかなーとか思ってます。
コマンドライン再入門は、これから Linux をはじめるようなナウなヤングにバカウケかと思いきや、軍曹殿曰く「大きすぎるお友達にビミョーな人気」だそう。まあ自分も Windows から Linux に機種転換しようとして何度も Windows に出戻った過去があるので、そういう人の「再入門」に役立てればよいかなーなんて思います。

Ubuntu オレオレ Remix 12.04 を作ってみた

11.10から導入された ubuntu-defaults-builder を使えば、誰でも簡単に Remix を作ることができます。そこで 11.10 に続き、12.04 でもオレオレ Remix を作ってみました。色々なパッケージを最初から導入し、さらに最新にアップデート済みなイメージを作成しておけば、複数のマシンへインストールするのも楽ですからね。なお ubuntu-defaults-builder の使い方はレシピを参考にしてください。
テンプレートになっているパッケージ ubuntu-defaults-mizuno-as は私の PPA に置いてあります。こんな Remix を使ってみたいという手遅れな方は、どうぞご自由に。
いちいち deb をダウンロードしなくても、ubuntu-defaults-builder をインストールしたマシン上で以下のコマンドを叩けば ISO がビルドされます。locale オプションを悪用しているような気がしないでもないですが*1

$ ubuntu-defaults-image --components main,restricted,universe,multiverse --ppa mizuno-as/remix --locale mizuno_as

オレオレ Remix における、日本語 Remix からの変更点は以下の通りです。

  • 各種パッケージを追加
  • 一部の不要なパッケージを削除
  • /etc/skel に zshEmacs の設定を追加
  • Unity の Launcher に ChromiumEmacs を追加
  • gtk-key-theme を Emacs に変更
  • 日本語入力に ibus-skk を採用
  • Firefox のブックマークに日本語 Wiki と Launchpad を追加
  • 標準の壁紙を変更
  • ppa:mizuno-as/ppa をリポジトリに追加

追加した依存関係は以下の通りです。さりげなく mizuno-as-wallpapers なんていうパッケージがあります。もし興味がある方は PPA からどうぞ。

削除したパッケージは以下の通りです。

前バージョンである、ubuntu-defaults-mizuno-as-11.10 から削除されているパッケージは以下の通りです。

  • wl

*1:locale は ja_jp のような値を取るオプションで、これが指定されると ubuntu-defaults-ja-jp のようなパッケージをリポジトリから探してテンプレートとして利用します。ppa オプションを併用しているため、ここからオレオレテンプレートを取得して、となるわけです