サイトをFreeBSD10+python3.3+Bottleで作り直すメモ(1)-qjailとpkgng

サーバ入れ替えに伴ってブログエンジンを変えなきゃいけない、だったら自分で作ってみよう、という無謀な試み。コンテンツは今までどおりreStructuredTextで書きたいのでpythonベースの奴がいいよね&自分専用だからできるだけシンプルな方がいいよね&もうこれからはpython3だよね、ということでフレームワークはBottleを選択してみた。

OSはいつも通りFreeBSD。で、どのリリースを選択すべきか。ちょうど今はFreeBSDのライフサイクル的にちと微妙な時期で、

  • 8.4は来年7月までサポートだけどさすがに今8系を選択するのはない

  • 9.1は今年の年末まで、9.2は今年の9月まで

  • 10.0は来年の1月まで

ということで、とりあえず10.0を入れておいて、来年頭くらいに長期(2年)サポートの10.1が出たらそっちにアップグレード、というのがいいかなと。

てことで、まず10.0をインストール。デフォルトのパーティション/ブート管理がGPTという奴に変わって、スライスごとのパーティションの数の制限が緩和されたっぽい。サーバの仕様上パーティションをたくさん切る必要があるのでこれはありがたい。

さて、FreeBSD10系からjailの仕様が若干変わってezjailがうまく動かないらしいので、qjailを入れてみる。手順は以下の通り。まず、pkgngでqjailをインストール。

# pkg search qjail
(qjailの2系と3系(ここでは3.2)のパッケージが表示される)
# pkg install qjail-3.2

次に、/etc/rc.confにネットワークアダプタのエイリアスとqjail_enableを追加。こんな感じで。

ifconfig_ネットワークIF_alias0="inet IPアドレス netmask 255.255.255.255"
qjail_enable="YES"

で、ネットワークを再起動して、それからjailのベースを作成

# /etc/rc.d/netif restart
# source ~/.cshrc
# qjail install

さらに、qjailを作って実行

# qjail create -n ネットワークIF -4 IPアドレス jail名
# qjail start

qjailが起動したのちは、 qjail console jail名 (jexec jailID csh でもいいけど)でjailに入る。この時点でrootのパスワードがない状態なのでpasswdコマンドで作っておくのがいいと思う。ユーザランドのアップデートはホスト側から qjail update -b だけでOK。また、portsツリーのアップデートもホスト側から qjail update -p でOK。これはらくちんでよい。

ここで問題発生。jail側でpkgngが機能しない。「PACKAGESITEを設定ファイルから削除しろ」とか「pkgのデータ参照元のftpなんちゃらが見つからないよ」とかいうメッセージが出てpkgを構築できない。なんでかな?と思ったが、pkgngのデータ参照元のサイトがどっかのタイミングで変わったけど、qjailのデフォルトのユーザランドイメージ(qjail install でダウンロードされるイメージ)は古い参照元のURLを見に行っているようだ。もっと具体的に書くと、qjailのイメージだと環境変数PACKAGESITEが設定されていて、これをpkgngが参照している、ということ。で、PACKAGESITEをどこで設定しているか確認したところ、/root/.cshrcで設定されていた。なんで、.cshrcを編集して該当個所をコメントアウトしたところこの問題は解消された。

コメント(0)



Note

本サイトのハイパーリンクの一部は、オリジナルのサイトが閉鎖してしまったため"Internet archive Wayback Machine"へのリンクとなっています。そのようなリンクにはアイコン[archive]を付与しています。

本サイトはCookieを使用しています。本サイトにおけるCookieは以下の三種類のみであり、Cookieの内容に基づいてサイトの表示を変更する以外の用途には用いておりません。