リバースプロキシ背後でRedmine

2010/4/16現在の環境で、
リバースプロキシ背後でRedmineを動かそうとして、
ちょっとばかり苦戦したのでそのメモです。

redmine動作サーバー(バックエンド)

サーバーを設定して準備できているものとします。
仮にここでは 192.168.1.1 というマシンAで動いていると仮定します。
また、redmineのページへアクセスするのに、
http://192.168.1.1/ というようにDocumentRoot設定が成されているとします。

リバースプロキシ側(フロントエンド)

リバースプロキシは、192.168.1.254で動いてるとします。
ここにアクセスして、特定のURL時にredmineのサーバーへ転送するようにするのが目的です。

設定について

本来素直にやるならば、リバースプロキシ側の httpd.confにて下記のように書けば終了です。

しかしこれではうまくいきません。
スタイルシートが読み込まれないし、画面上のリンクを押しても対象のページへジャンプ出来ません。

そこで、redmine側の設定を変更します。
設置してある場所で config/routes.rb を開きます。
そして2行目に、次の1文を入力します。

旧バージョンでは、ActionController::AbstractRequest.relative_url_root という設定項目だったとのこと。
これがどうやら現在のRailsで変更になっているようで、この修正に到達できるまでが大変でした。

この変更を適用することで、http://youraddress/redmine/ というアクセスを正しく処理できるようになります。


CATV環境

今更ながら建物自体でCATV導入で、本日工事に。
第3希望だったんだけど、なぜか選択されてしまった。

作業に着た人に”なぜ?”って聞いてみたところ、
「土日以外の希望がかかれていた場合、それを優先して採用」とのことで。
土日はすでにいっぱいいっぱいになっていて大変そうだった。
一方平日はゆっくりと作業できるらしい。

CATVで電話も、ネットも出来ると営業していて、
現在のままで満足しているこちらとしてはあまり乗り気じゃなかったんだけど、
とりあえずお試しでプラン選択してみた。

実際に試せるのは来月だけど、
全てにおいて問題がないなら、トータル料金は確かに安くなるし乗り換えを検討するところ。

固定電話については、心配点はないので検証から除外

ネットでの検証で不安な点は、下記の項目

  • 通信速度。今光ファイバーだがこれと比較してどのくらい変わるのか。
    • 現在の通信実行速度計っておかないと。
  • 通信速度2。いわゆる上り帯域計測
  • グローバルIPをきちんともらえるかどうか。
    • 説明ではもらえるといっていたが…
  • レンタルの専用モデム(orルータ)の性能
    • PPPoEブリッジがあるか、あるいは、ポートフォワーディング出来るか
  • パケットはきちんと通るか
    • GREパケット通らないとかあり得るので。
    • GREパケット通らないと、PPTP使えないし。

まずはこんなところだろうか。
自宅サーバーとして上記がクリアできないと乗り換えできない。


R2VB

どうやら最近のNVIDIAドライバ+新しめのボードだと、
R2VB(Render To VB)は使えないようだ。チェックしてみてもNGとなってしまう。
これってGeForce6200とかで使えたという噂を聞いたけど、
そのくらい昔のハードでしか使えないってことなんだろうか。

※ R2VB使うくらいなら DirectX10以降のストリームアウト使えってことか

DirectX9で、ストリームアウトはあきらめろということで結論かも。
OpenGLならエクステンション駆使して何とかできるのかもしれない。


WebMailの xuhekiを試す その2

前回はCentOSでダメだったので、
本家で対応が記載されているUbuntuで試してみることにしました。

しかし、結果は失敗でどうやってもインストールが完了させられませんでした。
(回避方法知っている方は是非教えてください)

確認環境

  • Ubuntu 9.10 Server

インストール手順

ひたすらapt-getでインストールしていく

Xuheki本体のインストール

ひたすらデフォルトのままEnterを押していく。
パスの入力させられる場面では

  • /usr/sbin/apache2
  • /usr/bin/apxs2

を設定した。

しかし、このまま継続してもunzipが発見出来ないのか失敗する。
”Cannot unzip, no unzip program available”というエラーメッセージが出てくるが、
unzipがインストールされていても出てくる。
そこで、CPANの環境設定を変更する。

この後再度インストールスクリプトを実行させてみると、また別の場所で失敗する。

というエラーメッセージで終わったため、ログをのぞいていくと

となっているのが発見できた。Smtpsendのテストで失敗しているようだ。
テストの該当箇所をのぞいて、acceptの前にsleepを入れると良いとあったので試してみたが、
これでもダメだった。

Smtpsend.tの中身

*1 : インストールの必要条件にあったりするけど


WebMailの xuhekiを試す

今度はXuhekiというWebMailを試してみました。
結論は、インストールをうまく完了させられませんでした。

CentOS5.4ではなく、Ubuntu使うといけるのかもしれませんが…。
やったことは、rpmforgeを使用可能な状態にして、以下のようにして依存モジュールをインストールしました。

perlのモジュールを上記のようにして入れたのには理由があります。
どうもインストーラーでCPANでインストールされるようにがんばってはいるようなのですが、
インストールできず失敗となってしまったためです。
それでこのようにインストールをしました。

その後下記のようにして、インストールスクリプトを実行して、Enterで質問に答えていきました。


しかし、最終的には次のようなエラーとなって、継続できず。
AfterLogicと比較してみたかっただけに、残念な結果です。

WebMailのシステムで(AfterLogic)

CentOS 5.4で、AfterLogicというWebMailのシステムをインストールしてみた。
そのときの記録を書いておきたいと思います。
日本語でのインストール記がほとんど見あたらなかったので。

なお、4/1の日記ですがエイプリルフールとは無関係に、事実を書いておきます。

準備

PHP版のAfterLogicLiteをダウンロード
必要なツール群のインストール
yum install mysql mysql-server apache php php-mysql

インストール作業

ダウンロードしてきた webmail_php.zip を展開。
/var/www/html 以下に展開してみた。

インストールマニュアルにあるようにパーミッションを変更していく

最後のユーザー設定はWebサーバーを動かしているアカウントに設定する。

その後サーバーにアクセスする。
ここでは、YourServer.netが自分のサーバーのアドレスとする。
http://YourServer.net/webmail/adminpanel/install.html

アクセスすると以下のページが出てるので、
“Run the installer”のリンクをクリックします。

afterlogic_1.png

事前チェックが実行され、足りないモジュールが発見されれば
それを再度インストールします。
問題がなければ、画面下部にあるNextボタンをクリックして進みます。
ライセンス情報を読んで I Agreeをクリックして次画面へ進み、
環境設定を行います。

データベース関連ではここでは適当に下記のようにしてみました。
ただしこの設定のために、mysql -u root -p でログインしてデータベースを作っておきます。

設定

設定したら Test connectionボタンがあるので押してみます。
問題がなければ、successfullyという緑文字が表示されるはずです。

問題がなければ、Nextボタンをクリックして次へ進みます。

管理用のアカウントでmailadm を設定する必要があるので
これ専用のパスワードを設定します。2回入力します。

続いて接続するE-Mailサーバーのアドレスを入れます。
今回自分自身がメールサーバーなのでlocalhostの設定にしておきます。
また、使うプロトコルにチェックを入れて Test connectionボタンを押すと、
使用可能か判断されて結果が出てきます。
問題が起こらなければ、Nextボタンをクリックして次へ進みます。

ここまででインストールが完了です。
問題がなければ、Exitを押して終わります。
また、install.htmとinstall.phpはもう不要のためセキュリティ的にも問題なので
削除しておきます。

まだ環境設定は続きます。
http://YourServer.net/webmail/adminpanel/
にアクセスして、さっき作成した管理用アカウントでログインします。

日本という環境を考慮して、下記のように設定を行いました。
Default user charset を Japanese
Default user time offset (GMT + 9:00) Osaka, Sapporo, Tokyo

ここで”Shift JIS”のほうのJapaneseを選択しないのがポイントです*1
また、今回POP3ではなくIMAPを目的としていたためそちらも変更しました。
設定したら、Saveボタンを押しておきます。

あとLogin Settingsにて Standard login panelを選択しておく方が
ログインのトラブルが少ないのかもと感じました。
うまくいったらほかのパターンで、ログインの手間を減らすといいのかもです。

*1 : ShiftJISのほうを選ぶと、メールの中身が化けて表示されます

感想

とりあえず動かないという結論にならなかったのは良かったです。
今のところRoundCubeを使用している状況で代替を探していたのですが
両手を挙げてこのAfterLogicWebMailLiteに乗り換えることは難しそうです。

個人的に感じた不満の第1位はこれ。
受信トレイの自動更新されないようです。
ログインしたときにメールボックスの中身が同期される仕組みのようです。
そのため開きっぱなしで、10分間に1回更新するというのすら不可能。
せめて、このあたりが改善されないとRoundCubeからさっくり乗り換える訳にはいかなさそう。

もっとも、その時間ピンポイントでメールを確認したいという用途ならば、
これで全く問題ない感じです。


いろいろな罠

ここ最近はまった罠を書いておこうと思います。

Mondorescueのバックアップにて

除外パスの設定で、末尾を”/”で終わるとバッファオーバーフローのエラーとなる。
除外パスは、そのディレクトリ名までで終わること。

この設定を施して SCSIのマウント関連を除外してやったら
VMware上でのバックアップもうまくいっている感じ。


mondorescue -E “/home/Recycled /home/Hoge”

VMware vCenter Converter Standaloneにて

VMwareWorkstationの仮想マシンをESXiに注入するときに、
このソフトを用いて設定しようとしたときに、”The session is not authenticated”というエラーが。
対象ESXiサーバーにログインし、仮想マシン一覧も取得できているのになぜ?という状態で起こる。

調べてみるとタスクが残る(残っている)ことがあるようで、それを終了すればこのエラーは復帰するらしい。
Windows7環境ではよくわからなかったのと、別件でPCを再起動する予定があったので、
PCを再起動させて再度チャレンジしたところ、この問題は解決した。


ESXi上の仮想マシンのバックアップを考える その2

前回の結論にどうも納得が出来ない状況だったので、
通常のバックアップをどうするかを検討してみました。

通常バックアップに求められる要件

  • 簡単にバックアップ処理/リストア処理ができること
  • バックアップ処理が割と高速に出来ること
  • システム全体を丸ごとバックアップ出来ること。

ESXiで管理されているスナップショットについて

なるべくなら残しておきたいが、通常運用時のバックアップファイルがあれば
通常運用が継続できる。スナップショットが失われても被害は少ない(はず)。
スナップショットを残して、どうにかしたい場合はESXiの管理下のファイルを丸ごと取っておく、とか。

バックアップ検討

ESXi上でのスナップショットや設定をあきらめることで、バックアップの新しい方法が見えてきた。
といっても新しい代物ではなく、Linuxマシンをシステムごとバックアップ取るという通常のものに戻っただけ。

そこでいろいろとバックアップ関連を調べてみたところ、
dumpコマンドによるものやほかのツールを使うものが該当した。
ここでは、mondorescueというツールを使って試してみることにした。

mondorescueの利点

  • isoファイルとしてバックアップデータを書き出せる。リストア時はこのイメージから起動して元に戻せる
  • コマンド1発でバックアップ処理が可能。

mondorescueの欠点

  • LVMを扱っている状態だと、リストア時に問題発生可能性が高い。
  • 環境によってはリストア出来ない・・・。expertモードで何とか出来るらしいが。

那由多屋 開発日誌さんのところでexpertモードによるリストア処理が説明されていて参考になりそうでした。

これらのことよりmondorescueを試してみることにした。

mondorescue

とりあえずインストール作業をして使用可能状態にしておく。

バックアップ処理

次のコマンドを入力して、4.2GBのDVDディスク向けとした状態でバックアップ処理を開始。

mondoarchive -O -i -L -d /backup/ -E /backup -s 4200m

この場合だと、/backup/mondorescue-1.iso というファイルができあがっていた。
これを元に続いてリストア処理を試してみる.

リストア処理

いくつか罠がある。
リストアの処理を確認するために、VMwareWorkstation6.5上の仮想マシンを利用した。

mondorescueでは、バックアップの環境とリストアの環境は全く同じハード状態を想定しているのか、
ハードディスクのサイズが違うとリストアに失敗した。
少なくとも、元サイズと同じディスクを接続しておかなくてはならない。

また、IDE/SCSI接続どちらで仮想PCを使っていたか、という点についても同じにしなくてはならなさそう。
(Expertモードによる復旧ならばこれもIDE->SCSIへの変換も可能なのかもしれないが)

この注意点に気をつければ、LVMパーティション使っていても正常にリストア処理が完了した。
ただし、ESXi上の仮想マシンをこれでバックアップし、VMwareWorkstation上で展開したのだから
きわめて近い状態へ書き戻しを行っているという点に注意する必要がある。

リストアの処理は、isoファイルをマウントしてこのディスクから起動するようにする。
そして、boot:で聞かれた時には、nuke を入力して放置。
これだけで自動でリストア処理が完了する。うまくいけばかなり手軽に戻せる。

boot: nuke

しかし物理マシン丸ごと交換の場合はこの方法は使えないだろう。
また、仮想環境のホストを交換して、このバックアップからリストア処理を用いてデータ移行するという方法も
ちょっと厳しいのではないかと考えられる。

mondorescueのインストールについて

rpmforgeリポジトリを有効化してある状態ならば、yumでインストールが可能のようだ。
これで入るのが、mondo-2.2.4-1.el5.rf だった。最新ではない点には注意。

最新版をインストールする

ftp://ftp.mondorescue.org/rhel/5/mondo-2.2.9.2-1.rhel5.x86_64.rpm
からダウンロード可能だったので、これに更新してみる。

CentOS5用に出ていたのでこちらを使用してみます。
ftp://ftp.mondorescue.org/centos/5



まだまだ依存関係があるようだ。
# wget ftp://ftp.mondorescue.org/rhel/5/mindi-busybox-1.7.3-1.rhel5.x86_64.rpm

これで旧バージョンでは作業中に停止してしまいバックアップがうまく出来ないケースがあったが、
この更新によりバックアップ処理が最後までいくようになった。

ESXi上の仮想マシンのバックアップを考える

ESXiの制約

  • 動作中のVMのディスクにアクセス出来ない。
    • 故にスナップショットを使用して直前までのデータをバックアップとする。
  • scpくらいしか転送コマンドが使えない
    • ESXiホストにrsyncは入っていなかったし、ほかの圧縮・アーカイブ系のツールも含まれていない。
  • スナップショットの挙動が怪しい。操作が特殊なのかも
    • 試してみて解決です。詳細は後述します。

家環境での制約

  • スナップショットは複数使用している。
    • 故に、多くの環境でやられている snapshot.removeAll コマンドが使用できない。
  • バックアップをとる側はWindows上のVMwareマシン(CentOS)
  • 故に、マシン環境でルーティングを挟むため、通信帯域は少ない方がいい

バックアップ方針

  1. ESXiでvim-cmdを利用してスナップショットを作成
  2. scpにより別のPCへバックアップデータを書き込む
  3. 作ったスナップショットを削除する

スナップショットをとるものの、現在使用中のものはアクセス不能のためコピーできない。

scpの暗号化に -c オプションで指定をつける。
ローカル環境なのでそこまで強固な暗号化は不要ということで。

scp -c aes128-ctr

arcfourというものの方が軽いらしいのだが、手元の環境では使用できなかった。

メモ

VMのIDを取得する方法

VMの情報を取得
vim-cmd /vmsvc/getallvms
これで、vimIdを取得できる。

最新のスナップショットのみ削除する方法

vim-cmd /vmsvc/snapshot.remove 0 <削除スナップショット>

ここで、”削除スナップショット”の番号については下記のコマンドで求める。
vim-cmd vmsvc/snapshot.get | grep CHILD | wc -l

結果

コピーされた結果可変ディスク(シンディスク)であっても、全体のデータサイズで取れてしまう。
よって、使用領域数GBにも関わらずディスクサイズが 128Gとかになっている場合は 128GBの空き領域が必要。
だけどコピーそのものは出来た。

問題点

仮想ディスク全サイズ分占有問題は1つのVMだけで数時間におよぶ転送時間がかかることにつながるので、
ちょっと実用は難しいのかも。もっともこれが許容できるならばこれでバックアップとしても良いのかもしれない。

またスナップショットを作成してコピーしているが、
最新の動作状況に関する情報がコピーできないため、設定ファイル群とディスクとの不整合が起こっている可能性がありそう。

この方式を実用に向けて再チェックするときにこのあたりを仮にリストア処理させてみることで確認してみようと思う。


Windowsの共有フォルダのマウント

CentOS5.4からWindows側で共有されているフォルダをマウントする方法。
以前smbfsがなくて、cifsでマウントすると書いたものの、
今現在また苦労したのでここにメモとして書いておこうと思います。

必要なもの

必要なものとして samba,samba-clientが必要。これらを忘れたためにマウント出来なかった。

yum install samba samba-client

インストールした後には、mount.cifsがパス上に存在すると思うので、それで確認してみるといいかも。

その後、共有フォルダをマウントするには下記のようにコマンドを打ち込む。

mount -t cifs -o username=hoge,file_mode=0755,dir_mode=0755 //192.168.1.1/ShareFolder /mnt/winshare

エラーメッセージ

インストールを忘れていると、ログインに失敗した意のエラーメッセージが出てくる。
cifsが使えないという意味のエラーメッセージではないため、上記の解決に至るまでちょっと時間がかかった。
LOGIN FAILUREとか出てきたら、mount.cifsがその環境で存在するかを確認してみるといいかもしれない。

ほかにも、Windows側のファイアウォールを無効化してテストしてみるのも有効だと思われる。
(デフォルトだとpingも通してくれないし、設定中はいろいろとFWが邪魔になります)