portsnap
会社のテストサーバ。 Proxyの中だったのでCVSupでソースが取得できないみたい。詳しいことは調べずにFW内だからいいかと思ってそのままにしていました。
ところがメンテナンスされていなかったそのサーバでDrupal 5.0-beta1を使っていたところ部署の情報共有サーバになりそうな流れに。それでも相変わらずFWの中のサーバなのですが、一応少しずつ勉強をしています。
調べてみるとCVSupの代わりにproxy内部でも最新のソースを取得することができるportsnapというものがあるみたい。ということで早速OSを最新にしてみました。OSを最新にすることはシステムビルドアップというらしいです。
以下個人的なメモです。
1.以下のサイトを参照にportsnapを使って
http://wiki.fdiary.net/BSDmad/?portsnap
# portsnap fetch && portsnap extract && portsnap update
2回目以降の更新は一手間減るそう。
# portsnap fetch && portsnap update
このサイトによると
CVSup と何が違うの?
Colin Percival 氏は従来の CVSup に関して以下のように述べています*1。
- CVSup は安全じゃない。プロトコルで暗号化も電子署名も使っていないし、通信を邪魔できる攻撃者であれば更新しているツリーに任意のデータを挿入できてしまう。
- CVSup は エンド-エンド じゃない。上記に関連して、これは CVSup ミラーを汚染できれば、そのミラーを利用しているユーザに任意のデータ供給が可能であることを意味する。
- CVSup は小さな更新を頻繁にするようには設計されていない。CVSup は CVS ツリーの配布には非常に良く、大きな変更がなされたツリー(例えば 1ヶ月以上の間があいた際のツリー)を更新するには非常に効率的である一方、わずかなファイルしか変更されていない場合でもツリーの全てのファイルのリス トを送信するため、極めて非効率である。
- CVSup は独自のプロトコルを使用している。これはファイアウォールの背後に居るユーザには問題(外部の 5999/tcp への接続許可が必要)であるし、非常に重いサーバ(cvsupd)が必要となる。
これに対する解として portsnap が誕生しました。portsnap には以下のような特徴があります*2。
- プロトコルには HTTP を使用する
- スナップショットには OpenSSL を用いて電子書名を行う
- スナップショットの配布のために、より洗練されたデルタ圧縮(Binary diff)を使用する
これにより、ファイアウォール下で CVSup ができないマシンなどでも HTTP による ports ツリーの更新が可能となるだけでなく、取得したファイルの安全性の確認が可能となること、また ports ツリーを圧縮した状態で転送するためにバイナリ差分が利用されるために(CVSup と比較して)短時間かつ低負荷での更新が可能となります。
ちなみに
- INDEX/INDEX-5/INDEX-6 ファイルを提供する
というのもポイントかもしれません。'make fetchindex' や 'portsdb -F' による INDEX/INDEX-5/INDEX-6 ファイルの取得も不要になりますね。
だそうです。インストール不要であっという間に更新されました。
どうもありがとうございました。
2.以下のサイトを参考に先ほど取得したソースをコンパイル
http://iris.homeunix.net/yayoi/freebsd/inst/cvsuprelease.asp
> su
# cd /usr/src
# make buildworld
1時間くらいかかりました
こちらのほうが良いらしい(今回は実行していません)
# make -j4 buildworld
# make buildkernel
30分くらいかな
# make installkernel
2分くらい
3.再起動
再起動後Apacheエラーログにこんな内容が書かれてApacheは動いているようなのですが
Webページは表示されず・・・
# tail /var/log/httpd-error.log
でエラーログを見てみると
[Thu Nov 30 14:22:16 2006] [alert] (EAI 8)hostname nor servname provided, or not
known: mod_unique_id: unable to find IPv4 address of "***.***.**.**"
Configuration Failed
[Thu Nov 30 14:24:33 2006] [warn] Init: Session Cache is not configured [hint: S
SLSessionCache]
うーん。アラートとワーニング。
調べてみると直前にホスト名を変えていたのですがその設定が足りなかったみたい。
#vi /etc/hosts
で中身を変更後のhostnameに書き換えて
#apachectl restart
で無事起動。
psu# uname -a
FreeBSD ***.***.**.** 6.1-RELEASE FreeBSD 6.1-RELEASE #1: Wed Nov 29 19:31:50 JS
T 2006 takaki@***.***.**.**:/usr/obj/usr/src/sys/GENERIC i386
これで最新みたいです。
--
apachectlのコマンドは以下の種類があるようです。
start Apache デーモンを起動します。
既に実行されている場合は、エラーを返します。
stop Apache デーモンを停止します。
restart Apache デーモンに SIGHUP
を送ることにより再起動させます。
デーモンが実行されていない場合は起動します。
このコマンドは Apache が停止しないことを確認するため
再起動を開始する前に configtest
によりファイルを自動的にチェックします。
fullstatus mod_status により全状態を報告します。
これが機能するためには、サーバ上で mod_status が利用可能で
システム上には lynx のようなテキストベースの
ブラウザが必要です。状態報告を得るために使用される URL は、
スクリプトで STATUSURL 変数を編集する
ことによって設定されます。
status 短い状態報告を表示します。
現在提供されているリクエストのリストを省略すると
いうことを除けば、 fullstatus オプションと似ています。
graceful Apache デーモンに SIGUSR1 を送ること
により段階的に再起動します。
デーモンが実行されていない場合は起動します。
現在利用中の接続は中断されないという点で通常の
再起動とは異なります。副作用は、すぐには古い
ログファイルを閉じることができないことです。
これはログの交換スクリプトを使用する場合、実際の遅延が、
ログファイルを処理する前に閉じられることを保証するのに
必要かもしれないことを意味します。
このコマンドは Apache が停止しないことを確認するため
再起動を開始する前に configtest
によりファイルを自動的にチェックします。
configtest 設定ファイルの文法テストを行います。
設定ファイルを分析して Syntax Ok か、
特定の文法エラーについての詳細情報を報告します。
help 短いヘルプメッセージを表示します。
仕事には全然生きてこないのですが4月からやるかもしれないシステムはFreeBSD&Apache&MySQL&PHPでやるかもです。暇を見て研修とかに行ってきます。
- takakiさんのブログ
- 新しいコメントの追加
- 閲覧数1510回
