ホームサーバの最近のブログ記事
データの物理的な格納場所を全てNASにまとめたので、今後の運用がちょっと楽になるはず。
と目論んで、USB HDDのデータもNASで共有するようにした。そうしたら、何のデータを扱うのも全部NASの性能が上限になってしまった。当たり前か…。
てゆーか、NASじゃなくてネットワークの上限かもしれない。我が家のネットワークはいまだに100BASEで構築されている。仕事部屋だけでも1000BASEでやり直したいのだが、HUBが高くて。
いま仕事部屋で使っている100BASE-TのスイッチングHUBは8ポート。既にポートはいっぱいで、テスト環境用のPCとノートPCは排他使用状態。次に買い換えるなら16ポートにしたいところ。ところが、1000BASEの16ポートはとても高い。8ポートまでなら割安なのに、16ポートから急に高いんだよ。コストを重視して多段化するか、がんばって16ポートを買うか…悩んでいるうちに1年以上経っちゃった(笑)
でも、今回の構成変更でネットワークがボトルネックになっているのだとしたら、コスト重視でとりあえずメイン環境周辺だけでも1000BASE化しないとダメかもなぁ。どうせ多段にする前提なら、5ポートの1000BASE-TスイッチングHUBでもいいかな?
自宅のサーバを再構築した。
■従来構成
・仕事用ファイル/保存用フォルダ:NAS(BUFFALO LS-WH1.0TGL/R1)
・メディアファイル他:USB HDDに保存してUbuntu DesktopでCIFS共有
・Webサーバ:Ubuntu ServerUbuntu ServerはUbuntu Desktopで動くVMware Server上で動くVM。Webサーバで配信するファイルはUSB HDDにあり、Ubuntu Desktopで提供される共有フォルダとしてUbuntu Server上にマウントし、配信。
仕事用ファイルは完全にNASとして独立しているので、サーバ構成の変更には影響なし。その他のファイルもUSB HDDにまとめられているので、サーバ機能とは切り離せる。
本当は容量の大きなHDDを買ってきて、そちらにデータをデュプリケートしながらのサーバ移行を考えていたのだが、今月はちょっと予算的に厳しいのと、ちょうど作業時間が取れそうなタイミングがあったのでデータはそのままでサーバ機能のみ移行することにした。
■新構成
・仕事用ファイル/保存用フォルダ:NAS(BUFFALO LS-WH1.0TGL/R1) ※変更なし
・メディアファイル他:USB HDDに保存してNASに外付けして共有
・Webサーバ:CentOS
・メディアサーバ:Clip Bucketサーバ群をVMwareからWalbrixへ移行。Webサーバで配信するファイルは、以前と同様にCIFS共有されたフォルダをマウントして使用。USB HDDの内容はそのままなので、配信サーバがUbuntu ServerからCentOSに変わっても配信内容が一切変わらない。マウント時のフォルダ名を変えたことに合わせて、BASIC認証のパスワードファイルの指定を書き換えた程度。
ClipBucketは、いわゆるYouTubeクローン。放り込んだファイルを自動的に変換して、FLVで配信してくれる。Androidで使えそうだったので導入してみた。
ClipBucketにインターネットからアクセスするために、リバースプロキシを立てた。新たなドメイン名をDynDNSで取得、CentOSにVirtualHostを2つ立て、アクセスに使用されたURLによってWebサーバとClipBucketに振り分けている。
Webサーバは、配信に使うサーバが変わったからといって特に変わることはない。Apache2を使っているのは一緒だし。その辺は特に問題なし。WalbrixだとLAMP環境をそのままダウンロードして起動できるので、インストールしてアレを設定してコレを設定して…とか考えなくて済むのは楽でいい。
ClipBucketは、無線LANで使う分にはいいけどインターネット経由だとどうも動作が重い。サーバの能力が足りないのかな。リバースプロキシもあるしなあ。
‐以下、自分用の技術メモ‐
CentOSでsmbをマウント
yum install samba-client でsambaクライアントをインストール。
mount -t cifs -o user=USERNAME,password=PASSWORD //TARGETIP/DIR /TARGETDIR
fstabは//TARGETIP/DIR /TARGETDIR cifs user=USERNAME,password=PASSWORD 0 0
CentOSネットワーク設定
/etc/sysconfig/network-scripts/ifcfg-eth0 にIPアドレス、サブネットマスク、ゲートウェイ情報を設定。
httpd.confの変更点
DocumentRoot他、ドキュメント関連のディレクトリ指定をUSB HDD上のディレクトリに。AddDefaultCharasetをコメントアウト。
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.sv1.com
DocumentRoot /DOCUMENT/DIR
</VirtualHost>
<VirtualHost *:80>
ServerName www.sv2.com
ProxyPass / http://CLIPBUCKET/
ProxyPassReverse / http://CLIPBUCKET/
</VirtualHost>
.htaccessの変更点
BASIC認証をかけてあったフォルダはパスワードファイルをフルパス指定してあるので書き換え。
Gentoo Linuxのネットワーク設定
/etc/conf.d/net を編集してIPアドレスを設定。
iface_eth0="192.168.x.x netmask 255.255.255.0"
gateway="eth0/192.168.x.x"
Walbrixのコンソールから仮想アプライアンスのコンソールにログイン
xm console VMNAME
オープンソースのグループウェア「Aipo」を、もう何年も愛用してきた。使い始めた当初はオープンソースではなく、バージョンは3だった。バージョン4からオープンソース化され、今では最新バージョンは5になっている??アップデートが面倒くさいので、我が家のAipoのバージョンは4で止まっているけれど??。とにかく、そのくらい使い続けたAipoなのだけど、ここにきて廃止を検討し始めている。クラウド化の波に今さら乗り、Googleカレンダーに移行しようかと考えているのだ。
Aipoは実に使いやすいグループウェアだった。グループスケジュール機能を使えば自分と家族と実家の家族の予定を並べて見ることができた。インターフェイスがわかりやすく、しかもユーザごとにホーム画面に表示できる機能をカスタマイズ可能なのがよかった。カレンダー機能だけを表示するようにすれば、実家の家族にも使ってもらえた。
ただ、ひとつだけ解消されない不満があった。それは、他のツールとの同期機能がないことだ。オンラインでさえあれば、どの端末からでも同じ情報にアクセスできるというのは大きなメリットではある。しかし、スケジュールを確認するたびにブラウザを起動し、ブックマークからAipoを選び、IDとパスワードを入力してログインしなければならない。ログインが完了してホーム画面が出るまでには数十秒の時間がかかる。普段は気にならないが、スケジュール確認の電話がかかってきたときなどは、相手を待たせるこの数十秒は結構鬱陶しい。BlackBerryやiPadを持ち歩いているのだから、起動→スケジュールチェック!とスムーズにいきたいのだが、今日現在ではそのためのデータ同期機能がない。サードパーティを含めても。
そこで、GALAPAGOS 003SH購入を機に、Googleカレンダーを使い始めてみた。同期前提なので、携帯端末類も一気にGoogleカレンダー同期環境を整えた。
■BlackBerry
Google Syncをインストールし、Googleカレンダーとの同期を設定。
標準のカレンダー表示では月間表示が使い物にならないひどさ(笑)なので、RocoCalをインストール。月間表示でもスケジュールの題名が確認できるようになる。1日表示や予定編集画面は標準のカレンダー機能が呼び出される。
テーマを、スケジュール表示付きのものに変更した。これまではホーム画面にアイコンが10個と新着メールが7通表示されるものを使っていたのだが、同じ人が作成したスケジュール表示付きのものに変更。直近の予定が3件表示される。
■iPad
こちらも標準のカレンダー機能はあっさり無視してさいすけをインストール。PDA時代から評判の高いスケジュールソフト。やや高価なアプリだけど、作りこまれたスケジュールソフトはインターフェイスが使いやすいので、安心して導入できる。実際、画面表示は見やすく、操作も直感的。Googleカレンダーとは同期するが、iPadの標準カレンダーとは同期しないようだ。
■GALAPAGOS 003SH
こちらも標準のカレンダーがそっけなく見づらいので、ジョルテをインストール。無料アプリだがなかなか使いやすい。ウィジェットとしてホーム画面に直近のスケジュールを貼り付けておくこともできる。
■PC
Outlookの予定表とGoogleカレンダーを同期してくれるGoogle Calendar Syncを導入。これまでまったく使っていなかったOutlook予定表を使うことにした。
モバイルのスケジュールツールは、いずれも国産ツールが自然に選ばれた。この手のツールは日本人と欧米人の感覚の違いが結構はっきり出るので、インターフェイスで選ぶとどうしても国産ツールになるね。Googleのインターフェイスが未だに嫌いだし(苦笑)
で、使い始めてみると、Googleカレンダーはなかなか具合がいい。カレンダーを何種類も作成し、それらをレイヤーのように重ねて表示できる。共有設定した他人のカレンダーも、そのレイヤーのひとつとして取り込める。俺のカレンダーには長男、次男、嫁のカレンダーが重ねて表示されており、それらがすべて色分けされている。色分けはiPadのさいすけにも反映される。
一方、スケジュールの入力、編集などの操作が機器ごとにバラバラになるのは結構大きなデメリット。今後機器が増えたり変わったりしたら、そのたびにアプリから探さなくてはならない。機種ごとに操作が違うので、他人に使わせてサポートするのも面倒くさい。Aipoのようなツールなら、サポート対象ユーザと全く同じ画面を確認できるので、教えるのは簡単なのだ。
本格的に移行してしまうかどうかは、実家の家族次第だな。母親がiPhoneにでもしてくれれば問題ないんだが(笑)
気付かないうちに、Aipoがバージョンアップしていた。2009年12月にリリースされていたらしい。
うちのサーバで動かしているのは、アイポ4。バージョンアップするかどうかは、これから検討。GoogleカレンダーかOutlookと同期できるようになるといいなと思っていたのだが、今のところ対応してはいない様子。
iPhoneで便利に使えるようになったようだが、きっと今回もBlackBerryには対応してくれていないだろう(苦笑) 開発工数をかけても報われないので、そこに対応しろとまでは言わないけど。こっちも。
2009年10月7日のエントリで書いた通り、BlackBerryからはAipo4をうまく扱えない。Aipo4には携帯電話向けのページ表示機能もあるのだが、2009年10月18日のエントリで書いた通り、BlackBerryからはアクセスできない。
BlackBerryの側で対応できないかと情報収集を続けてきたのだが、どうにもならない。BlackBerry側で対応できれば他のサービスにも応用できるので便利だと思っていたのだが、現状では諦めざるを得ないようだ。
他のサービスはともかく、Aipo4は自宅のサーバで動かしているので融通がきく。BlackBerry側で対応できないのであれば、サーバ側で対応してしまえばいい。
Aipo4ではブラウザをいくつかに分類し、それぞれに適したテンプレートを割り当てている。コンパクトHTMLを使うiモードやソフトバンク携帯電話向けにページへとBlackBerryを誘導するよう、ブラウザ判別にBlackBerryのブラウザ情報を追加する。今回はBlackBerry Boldをiモードとして認識させることにした。
関連すると思われるファイルは2つ見つかった。中身は同じだが、置いてある場所が違う。
インストールディレクトリ/aipo//tomcat/webapps/aipo/WEB-INF/conf/client.xreg
インストールディレクトリ/aipo//backup/webapps/aipo/WEB-INF/conf/client.xreg
残念ながらtomcatに造詣が深くないためどちらが影響しているかわからず、今回は乱暴に両方書き換えることにした。書き換えるのは、ブラウザ判別ルーチン。HTTP_USER_AGENTのパターンをiモード携帯電話の項目に書き加えた。
<書き換え前>
<user-agent-pattern>DoCoMo/1\.0.*</user-agent-pattern>
<書き換え後>
<user-agent-pattern>DoCoMo/1\.0.*|BlackBerry9000/.*</user-agent-pattern>
これで大丈夫かなーと思いきや、そうでもなかった。この状態でAipo4をリスタートしてみると、aipo//tomcat/webapps/aipo/WEB-INF/conf/client.xregの方が元に戻っているのだ。何度やっても、自動的に書き直される。何を基準に書き換えているのかは、やはりtomcatの知識もなく見当がつかない。もしかしたらOSごとリブートすればいいのかもしれないが、それも面倒くさい(笑)
ってことで。
今回はリブート後にaipo//tomcat/webapps/aipo/WEB-INF/conf/client.xregを強制的に上書きするという乱暴な手段に出てみた。結果としては、それで成功。BlackBerryから携帯電話向けのページにアクセスできるようになったのだった。これで実用性がぐっと高まった。
2009年6月7日現在のネットワークに関する覚書
| マシン名 | 用途 | 接続方式 |
| LAGREAT | メインPC | 有線/固定IP |
| BEAT | ノートPC | 無線/DHCP |
| MR2 | シグマリオン3 | 無線/DHCP |
| NATSUKO | さーらメインPC | 有線/DHCP |
| NEDOKO | さーらノートPC | 有線/DHCP |
| JIMNY | ファイルサーバ 仮想PCサーバ |
有線/固定IP |
| NSX | WEBサーバ | 仮想PC/固定IP |
| STEPWGN | Windowsテスト環境 | 仮想PC/固定IP |
| ELF | NAS | 有線/固定IP |
| BRN_B50B27 | 複合機 | 有線/固定IP |
| - | VPNルータ | 有線/固定IP |
| - | ニンテンドーWii | 無線/DHCP |
3月から段階的に進めてきたサーバ移行が完全に完了し、旧サーバの電源を落とした。
旧環境
| 用途 | オンラインストレージ(RAID1) | オンラインストレージ | Webサーバ | 実験用Windows PC |
| OS | Fedora Core 6 | Windows XP Home | ||
| ハードウェア | CHASER (Pentium4 2.4GHz) | JIMNY (Celeron D 2.66GHz) | ||
新環境
| 用途 | オンラインストレージ(RAID1) | オンラインストレージ | Webサーバ | 実験用Windows PC |
| OS | - | Ubuntu Desktop 8.10 | Ubuntu Server 8.10 (VMware on JIMNY) |
Windows XP Home (VMware on JIMNY) |
| ハードウェア | Buffalo WH1.0TGL/R1 | JIMNY (Celeron D 2.66GHz) | ||
数日前に注文してあった商品が、昨日届いた。Buffalo LinkStation。500GBのHDDを2基搭載し、RAID0/1に対応したNAS。送料込で19,800円だった。技術の進歩とそれに伴う価格下落には、買い物のたびに驚かされる。
これをRAID1に設定し、容量500GBのネットワークボリュームとして運用開始。旧サーバのRAID1ボリュームに保存されているデータをこれに移せば、3月から取り組んでいるサーバ移行が完了する。
ところで、NASを接続したら仕事部屋のHUBは8ポートすべて埋まってしまった。データ移行が終わって旧サーバをシャットダウンすればまた1ポート空くけど。そろそろもう1ランク上のHUBも考えないとダメかな。
今回AipoをインストールしたUbuntu Serverでは、すでにApache2が動作している。そのため、Aipo(tomcat)は自動的にポート81を使うようにインストールされる。これを、Apache2と連携させてhost.name/aipo/ でアクセスできるように設定する。
まず、Proxy関連のモジュールを有効にする必要がある。必要なモジュールは /etc/apache2/mods-available に入っている。
Ubuntu ServerをLAMPオプション付きでインストールした場合に自動的に作られるApache2.confでは、/etc/apache2/mods-enabled にあるモジュールをすべて読みこむ設定になっているので、必要なモジュールを /etc/apache2/mods-enabled から /etc/apache2/mods-available に移動する。詳しくどれが必要か選ぶのが面倒くさかったので、適当に(笑)
sudo mv /etc/apache2/mods-available/proxy* /etc/apache2/mods-enabled
次に、sites-available/default を編集し、<VirtualHost *:80> 〜 </VirtualHost> の中に次の1文を書き足す。
ProxyPass /aipo/ ajp://localhost:8009/aipo/
さらに、proxyへのアクセス権を設定するために /etc/apache2/mods-enabled/proxy.conf を編集。
<Proxy *>
AddDefaultCharset off
Order allow,deny
Allow from all
#Allow from .example.com
</Proxy>
後は apache2 を再起動したら、http://host.name/aipo/ でアクセスを確認。
Syo-Takasakiの日記 - アイポ4をDebianにインストール
だめぷろふ記 - aipo4 debian etch-and-a-half 覚え書き
このあたりを参考にさせていただき、Ubuntu Serverにaipoのインストールを試みる。
gcc
libreadline5-dev
zlib1g-dev
辺りが必要らしいのだが、厳密にどのパッケージが必要なのか、把握できない。面倒なので、
sudo su
apt-get install gcc
apt-get install readline*
apt-get install libreadline*
apt-get install zlib*
超手抜きだ。
その後、rpmを使ってパッケージチェックをしているくだりを、installer.shからコメントアウト。
#tmp_str=`cat ${script_path}/bin/rpmlist | grep readline-devel`
#
#if [ "$tmp_str" != "" ]; then
# echo "checking readline... ok"
#else
# echo "checking readline... error"
# echo "readline-develが見つかりませんでした。"
# echo "readline-develをインストールしてください。"
# check_str="ERROR"
#fi
#
#tmp_str=`cat ${script_path}/bin/rpmlist | grep zlib-devel`
#if [ "$tmp_str" != "" ]; then
# echo "checking zlib... ok"
#else
# echo "checking zlib... error"
# echo "zlib-develが見つかりませんでした。"
# echo "zlib-develをインストールしてください。"
# check_str="ERROR"
#fi
この辺はDebianにAipoをインストールした先人達の教え通り。
しかしこれでも全部はうまくいかなかった。postgresqlのパスワードが正常に設定されず、バックアップやデータリストアが動作しない。仕事のスケジュール管理までしているグループウェアで、バックアップができないなんてのは困る。
installer.shをチェックすると、乱数でパスワードを発生させている個所でエラーが発生している。そこで、パスワード生成の処理をすべてコメントアウトし、明示的にパスワードを設定してみることにした。
#str_seed1="abcdefghijklmnopqrstuvwxyz"
#str_seed2="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
#str_seed3="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
#str_seed4="0123456789"
#str_seed5="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
#
pass="PASSWORD"
#count=0
#while [ $count -lt 1 ]; do
# ran=`expr $RANDOM % 26 + 1`
# char=`expr substr $str_seed1 $ran 1`
# pass=$pass$char
# count=`expr $count + 1`
#done
#count=0
#while [ $count -lt 2 ]; do
# ran=`expr $RANDOM % 10 + 1`
# char=`expr substr $str_seed4 $ran 1`
# pass=$pass$char
# count=`expr $count + 1`
#done
#count=0
#while [ $count -lt 4 ]; do
# ran=`expr $RANDOM % 62 + 1`
# char=`expr substr $str_seed5 $ran 1`
# pass=$pass$char
# count=`expr $count + 1`
#done
#count=0
#while [ $count -lt 3 ]; do
# ran=`expr $RANDOM % 26 + 1`
# char=`expr substr $str_seed2 $ran 1`
# pass=$pass$char
# count=`expr $count + 1`
#done
#count=0
#while [ $count -lt 2 ]; do
# ran=`expr $RANDOM % 52 + 1`
# char=`expr substr $str_seed3 $ran 1`
# pass=$pass$char
# count=`expr $count + 1`
#done
で、これでインストールしたら、ちゃんと動いたよ! Aipo4!
詳細な環境:
Ubuntu Server 8.10
Aipo 4.0.2.0
Aipoを最新版にしなかったのは、現在別サーバで稼働中のものからデータをそのまま移したかったため。