カテゴリー別アーカイブ: FreeBSD

FreeBSD pkg (pkgng)でのカスタマイズ環境アップグレード

FreeBSD 10から標準になったパッケージ管理システムのpkg(旧称pkgng)ですが、何しろ新しい機能でどのように使いこなせばいいのかわかりません。pkgだけで全て済むのであればいいのですが、カスタマイズしてportsをコンパイルした場合との共存はまだそれほどうまくいっていないように感じます。

とりあえず以前構築に関して紹介した本サーバのpkgをアップグレードしようと思ったのですが、次のような問題があります。

  • ja-wordpressはWordpress自体のアップグレード機能を使うので、pkgから管理する必要はない。
  • apache22は標準のprefork MPMではなくてworker MPMを使っているが、mod_php5のpkgの依存性はprefork MPMのpkgに向いている。そのためこれをpkgで更新しようとすると、新規にapache22のprefork MPMなpkgをインストールしようとしてしまい、衝突する。
  • worker MPMでmod_phpを利用するにはphpをZTSでスレッドセーフにビルドしなければならないが、標準のpkgはそうではない。
  • ja-wordpressのpkgの依存性は、上記の標準php5なpkgに向いている。
  • 以上のような事情で、php5およびphp5-extension系とja-wordpressはportsからインストールした。

なので、そのままpkg upgradeすると、悲惨なことになってしまうのです。もう少しpkgさんには頑張って欲しいところです。

続きを読む

VMware vSphereにおけるFreeBSDのP2V(dump/restoreを使う方法)

前回紹介したFreeBSDのP2V方法は、手順はそれなりに簡単ですが、イメージの取得と貼り付けにddを使うため、パーティションの切り直しなどが不可能で、シンプロビジョニングも活用できないという欠点がありました。

これを解決する方法として、dump/restoreを用いてP2Vを行う方法があります。

手順概要

基本的な手順は前回と同じため、手順が重なる部分は省略して解説します。おおまかな前提は次のとおりです。

  • FreeBSDの物理サーバからvSphere上の仮想ゲストマシンにP2Vを行う
  • それぞれのマシンは直接通信できるネットワーク上にない(直接通信できる場合は、この手順より少し楽ができる)が、双方に対してsshでアクセスできる、物理サーバのディスクイメージを格納できる十分なディスクを持ったマシン(以後、仲介マシン)がある
  • 物理サーバには起動用のCD-ROMなどは必要ない
  • ディスクやパーティションのサイズを変更できる
  • シンプロビジョニングが活用できる

前回と異なる部分は後半3項目です。

ddの代わりにdump/restoreを用いるわけですが、FreeBSDのdumpはUFS2のスナップショット機能を利用してくれるので、DBサーバやWebサーバなど、テンポラリな不整合を発生しがちなプログラムさえ止めておけば、物理サーバを起動した状態で十分健全なdumpを取得できます(もちろん、Live CDブートして作業を行えばより安全です)。

また、dumpしたパーティションと異なるサイズにrestoreできるため、リッチに使っていた物理マシンのディスクを、必要最小限的に領域を確保した仮想マシンに縮めることが可能です。

さらに、restoreの書き込みはイメージ書き込みとは異なるため、シンプロビジョニングも活かすことが可能です。

いいことばかりのように思えますが、手順は幾分複雑になります。

  1. 物理サーバを掃除して、仮想マシンに必要なパーティションサイズ計画を検討する
  2. 物理サーバからssh経由のdumpで仲介マシン上に各パーティションのバックアップを取得
  3. 仮想ゲストマシンでP2Vしたい対象と同じFreeBSDのバージョンを、計画したパーティションサイズで最小インストールする
  4. 仮想ゲストマシンをLive CDで起動し、インストールしたファイルをすべて消す
  5. 仲介マシンから仮想ゲストマシンにdumpイメージをssh経由でrestoreする
  6. 仮想ゲストマシンに対応する設定を修正する
  7. VMware Toolsをインストールする

続きを読む

VMware vSphereにおけるFreeBSDのP2V(ddを使う方法)

VMware vCenter Converterを利用すれば、物理サーバを仮想化するいわゆるP2Vは比較的簡単に行うことができますが、対応しているOSは限られています。具体的には次のようなOSです。

  • Windows XP Professional SP3 (32-bit and 64-bit)
  • Windows Server 2003 SP2, R2 (32-bit and 64-bit)
  • Windows Vista SP2 (32-bit and 64-bit)
  • Windows Server 2008 SP2 (32-bit and 64-bit)
  • Windows Server 2008 R2 (64-bit)
  • Windows 7 (32-bit and 64-bit)
  • Red Hat Enterprise Linux 2.x (32-bit and 64-bit)
  • Red Hat Enterprise Linux 3.x (32-bit and 64-bit)
  • Red Hat Enterprise Linux 4.x (32-bit and 64-bit)
  • Red Hat Enterprise Linux 5.x (32-bit and 64-bit)
  • SUSE Linux Enterprise Server 8.x (32-bit and 64-bit)
  • SUSE Linux Enterprise Server 9.x (32-bit and 64-bit)
  • SUSE Linux Enterprise Server 10.x (32-bit and 64-bit)
  • SUSE Linux Enterprise Server 11.x (32-bit and 64-bit)
  • Ubuntu 8.x (32-bit and 64-bit)
  • Ubuntu 9.x (32-bit and 64-bit)
  • Ubuntu 10.x (32-bit and 64-bit)

要するにWindowsとLinuxの一部以外無理ということですね。まあ上記以外にももちろんCentOSとかはOKのようですが。

そうは言ってもFreeBSDのサーバとかも入れたい場合があるのです。特にもう再構築するのが果てしなく面倒くさいくらい作りこんだサーバなどが典型例でしょうか。というわけで、FreeBSDのサーバをP2Vする方法をまとめてみましょう。今回はddを使う方法です。

手順概要

今回の作業手順の前提は次のようなものです。なお、最後の2項目であるディスク・パーティションサイズの変更やシンプロビジョニングへの対応に関しては、もう少し面倒な別の方法を後日紹介します

  • FreeBSDの物理サーバからvSphere上の仮想ゲストマシンにP2Vを行う
  • それぞれのマシンは直接通信できるネットワーク上にない(直接通信できる場合は、この手順より少し楽ができる)が、双方に対してsshでアクセスできる、物理サーバのディスクイメージを格納できる十分なディスクを持ったマシン(以後、仲介マシン)がある
  • 物理サーバには起動できるCD-ROMが付いている
  • ディスクやパーティションのサイズは変更しない
  • シックプロビジョニングになる(シンプロビジョニングにしても意味がない)

なお、仲介マシン上に置かれるディスクイメージはセキュリティ上重要な情報を含むため、容易に外からアクセスされるマシンや、持ち出されることのあるノートPCなどは適しません。ファイルを削除した後もデータは残るので、特に重要なデータの場合は、消去後に空き領域を/dev/randomで埋めるなど、データを慎重に消してください。仮想システム上に使い捨ての仲介マシンを構築するのが一番お勧めです。普段利用されているマシンを使う場合は、別途安全な場所に保管や、ランダム書き込み初期化、廃棄処分が可能な外付けUSBディスクなどを使うのも良い手でしょう。

続きを読む

FreeBSDで作る学認用Shibboleth SP

学認などで利用されているShibboleth SPをFreeBSD上に構築してみました。環境としてはFreeBSD 10.0-RELEASEです。作業は非常に簡単です。

OSをインストールし終わったら、次のようにしてShibboleth SPをインストールします。

ただし、shibboleth-spのportはapache22に依存しているのですが、標準のapache22はprefork MPMのためにメモリを大量に消費します。できればこういうアプリのパッケージはapacheに依存性を付けないでもらえると嬉しいのですが、mod_shib22.soを入れる必要があるので必要なんでしょうね。

とりあえず、apache22を強制再インストールで問題はなさそうです。

ただし、/usr/local/etc/apache2/httpd.confのCGIモジュールの部分だけは、

から、

に修正しないと、worker MPMのApacheは起動しません。ちなみに、shibbolethのモジュールが

で正常に組み込まれていることも確認して下さい。もし入っていなければLoadModuleの行の最後にでも追加しましょう。

続きを読む

FreeBSD 10.0にWordPressをインストール

このサイトを立ち上げるにあたって、FreeBSD 10.0にWordPressをインストールしたメモです。FreeBSD 10からはpkgngがデフォルトのパッケージ管理システムになっているので、これを用いてインストールすることになりますが、色々問題があり、試行錯誤が必要でした。

普通に考えれば、

でインストールできるんじゃないか、と思うのですが、この状態だと次のような問題があります。

  • ja-wordpressの依存性でphp5がインストールされるが、このphp5にはmod_phpは入っていない
  • apache22のMPMがpreforkなので、mod_phpとか組み込んで色々やった日にはメモリをバカ食いする
  • apache22のMPMをworkerにするには、php5をスレッドセーフにしなければならないが、標準ではそうなっていない

そのようなわけで、結局次のような方法を取ることにしました。まずは上記の理想例同様に、ja-wordpressとmysql56-server、apache22-worker-mpmをインストールします。

そして、ja-wordpressとphp5関係をすべて削除します。

続きを読む