Monthly Archives: 1月 2012

SOPA/PIPAからインターネットの自由を考える

最近、巷を賑わせている SOPA/PIPA。え、知らない?自分もあんま知りません。
InfoQ: SOPA, PIPA – 技術者としての関心
そんなわけで、とりあえず Wikipedia を見てみる。
Stop Online Piracy Act – Wikipedia
長い、ので途中まで読んでやめた。

Continue reading SOPA/PIPAからインターネットの自由を考える

Upstartをちゃんと調べてdaemontoolsを起動させた

前回の CentOS 6 に daemontools を入れようとしていた時に出会った upstart を調査した。前回書いたのはこれ。
久々にdaemontoolsをインストールした、CentOS 6に
CentOS のサイトではドキュメントは見つからない。RedHat のマイグレーションガイドには書いてあった。
4.2. Service Initialization
日本語はこっち。
4.2. サービスの初期化
コマンドの詳細は man を見ろ、だとさ。
とりあえず分かったのは、古くから使われきた SysVinit 系の init デーモンが Upstart プロジェクトで開発されているイベントベースの init デーモンに置き換えられたということ。Upstart プロジェクトはこちら。
upstart in Launchpad
まー、使い方は man 5 init、man 8 init を読めば大体分かる。/etc/init/ にタスクごとにファイルを作成し、initctl コマンドで制御する感じ。
詳しい説明が欲しいなら、ここがいいのかな。
Upstart をもう少し使い込んでみる – いますぐ実践! Linuxシステム管理 / Vol.189
あと、Ubuntu のクックブックは量が多い。
Upstart Intro, Cookbook and Best Practises
というわけで、早速 daemontools を起動してみる。設定ファイルはこんな感じ。
start on runlevel [2345]
stop on runlevel [S016]
respawn
exec /usr/local/sbin/svscan /service

ランレベル 2345 では起動し、その他は停止、落ちたら再起動で、最後に起動コマンドを指定。ファイルを作っただけだと何も起こらない。なので /etc/init/ 下で直接ファイルを編集して中途半端なファイルが存在していても問題はない。再起動までにはキレイにしておきましょう。
設定ファイルができたら initctl list で認識されているか確認。たぶん stop/waiting とかになっていると思う。そこで initctl start <設定ファイルの名前> を実行。起動するはず。kill しても復活する。
そして満を持してサーバを再起動。起動してきたところでプロセス確認。起動してる。素晴らしい。
この Upstart の init デーモンは単なる SysVinit 系の置き換えではない。色々と機能が追加されている。サービス起動前後に特定のスクリプトを実行したり、OOM killer の対象外とすることでメモリ逼迫時にも落ちないように指定したり、メモリや CPU の上限を指定したり、他にも色々な機能がある。すごい。がんばって daemontools を起動させたけど、もう daemontools はいらないね。

久々にdaemontoolsをインストールした、CentOS 6に

久々に CentOS に daemontools を入れてみた。
CentOSにdaemontoolsをインストールした
の改訂版。
公式の手順に従うと /command とかいうディレクトリを作らなければならない、など、非常にイライラします。/usr/local/ の下で収めろよって言いたい。そこで、非公式手順が必要になります。
まずはダウンロード。公式のページから落としてくる。
http://cr.yp.to/daemontools/install.html
そして解凍する。
まずはパッチを当てる。Gentoo のリポジトリから持ってきた。手元にあった Gentoo から。
次にコンパイル。解凍したディレクトリの admin/daemontools-*/src/ に移動。コンパイルオプションのカスタマイズは conf-cc に書き込む。まー、負荷のかかるプロセスではないのでデフォルトでいいと思うんだけどね。せっかくだから -march=core2 ぐらい書き足しておくかね。
さっそく make しようかという逸る気持ちを抑えて touch home。なぜだかは知らない。そうしておかないと make がコケる。そして、ようやく make。普通に完了すると嬉しいね。
最後にインストール。前に書いた記事では cp を使っていたけど、今回は install コマンドを使おう。strip もできる。エッチなやつじゃないよ。あんま詳しく知らないけど、余分なものを削り取ってくれるのかな?まー、なんとなく。
install -o root -g root -m 755 -s -t /usr/local/sbin/ $(grep -v svscanboot ../package/commands )
install -o root -g root -m 755 svscanboot /usr/local/sbin/
全部 /usr/local/sbin/ に入れとくよ。
後は起動設定だよねー、って /etc/inittab に起動設定を入れました。こんな感じ。
sv:2345:respawn:/usr/local/sbin/svscan /service
だけど、サーバを再起動しても起動してこない。設定したコマンドを普通に叩いたら起動する。なんだー?って思って man init とか見てたら、なんか CentOS 6 で起動の仕組みが変わったっぽい。パッケージ名は upstart。なんだこりゃ。
軽く見た感じでは、inittab で使っていた respawn も使えて、稼働中に追加した設定ファイルも読んでくれそう。それって、daemontools いらなくねー。ってことで、upstart を検証しなければ。

CentOS 6.2にGentoo Prefixを入れてみた

Gentoo Linux Projects — Gentoo Prefix
Gentoo Prefix というものがある。OS 自体を Gentoo で構築するのではなく、Unix ライクな OS の一部に Gentoo をインストールするものだ。レンタルサーバでは Gentoo を利用するのが難しいが、これを利用すれば手軽に Gentoo のパッケージを利用できるかもしれない、と思って試してみた。
で、この Gentoo Prefix、Linux に入れる手順はリストされていない。あるのは Mac OS X、Solaris 10、FreeBSD 8.x の三つだけ。なんだかなぁ、と調べていたら、Solaris 向けの手順が使えるとの情報。
UbuntuへGentoo Prefixを入れてみた
では早速、ということで、仮想マシンのまっさらな CentOS 6.2 に入れてみた。こちらの Solaris 向けの手順。
Gentoo Linux Documentation — Gentoo Prefix Bootstrap Process for Solaris
上手くいくかと思いきや、ちょいちょい emerge に失敗する。CentOS 側に必要そうなライブラリを yum してあげたら進んでいった。後で気づいたけど、Development tools をグループインストールすれば良かった。
つか、同じ Linux で GNU のツールも取得できる CentOS なら、もっと手順を簡略化できるよなー、って思っていたら、普通にあった。Linux に Gentoo Prefix を入れる手順。
Gentoo Linux Documentation — Gentoo Prefix Bootstrap Process for x86-linux on Gentoo Linux host
とりあえずコンパイル済みのバイナリを持ってくる感じだ。こっちは最後まですんなり行った。
これで出来たのか?と思い、とりあえず Apache と PHP を入れてみようとしたら、マスクされている様子。emerge の出力に従ってキーワードを追加し、再挑戦。PHP は上手くいかない。なんか色々ライブラリが足りない。libiconv は CentOS では提供されていないようなのでソースから導入。
GNU Project Archives
とりあえずインストールはできたっぽいけど、Apache で init スクリプトは入れてくれないのね。まー、本体の /etc/init.d に入れるわけにもいかないだろうし、そこは自分で用意するのがいいか。
そんな感じでインストールは完了し、試し起動。コマンドラインから apache2 -D DEFAULT_VHOST -D PHP5 -k start。うむ、phpinfo() もちゃんと表示される。
まー、それなりに使えるんだろうけど、やっぱメインのシステムとして使うには物足りない感じだな。