MacOSX Server 移行ログ DNS、メール、その他編

先月購入したMaxOSX Lion Server入りMac mini Serverへの移行作業が割と手間取っています。LinuxサーバーでCUIでやっていたことと、OSX ServerのGUI上でのマッチングがよくわからなかったり。参考書籍も検索結果も10.6世代の情報ばかりで、しかも結構ファイル構成とか違ってたり。MC936J/Aの品薄感で焦ってしまったものの、もう少し情報出そろってからでも良かったかもですw。

でもまぁボチボチ進めてます。σ(^^)の様にLion Serverの値頃感で参入する人も多いでしょうからなるべく情報共有できるよう、作業ログはブログの方にあげてくことにします。

■初期設定&概要

まずハマりやすいのは初回起動時のユーザ設定。うっかり自分の普段使いのアカウント名を管理者として使ってしまうと、後でその名前でOpen Directoryアカウントが作れなくなり、結果としてメールサービスなどが設定できなくなります。adminなどの汎用アカウント名を設定しましょう。

次にビビるのは「サーバー管理」アプリがインストールされておらずAppleから自分でダウンロードして入れる必要がある点。最初から入っている「Server」というアプリからだとDNSやDHCPなどの項目がなくて、「Lion Serverは値段も下がったけど機能も削られてるのかっ!?」と一瞬青ざめました。

管理操作はクライアント側に「サーバー管理」をインストールすることで遠隔管理できます。また画面共有も使えます。のでMacから管理する限りは結構便利。ただ読み込み待ちが少し短縮されるといいなーという感じ。SSHを有効にすればコマンドラインであれこれもできますが、サービス再起動等のコマンドはLinuxと違うのでまだよくわからず。今のところemacsで設定ファイル書き換えたりする用。

■DHCP

特に難しいことはなかったですが、MACアドレスによる静的割り振りの設定にインポート機能がなかったので、従来のdhcpd.confから設定を書き写すのが手間でした。

■DNS

CentOSではdjbdnsをソースからコンパイルして入れてたので、Lion ServerのBIND9は結構面食らいました。外向け、内向けどちらかの設定のみならGUI(=「サーバー管理」アプリ)で全て設定完結できるんですが、1台で両方するにはCUIでnamed.confを編集してviewという記述を用いる必要があるようです。内向けは必要ないっちゃないんですが、技術的な興味で立ててみることにした感じです。

普通に外向けDNSサーバーを構築するだけなら結構簡単です。逆引きのレコードは勝手に作ってくれるし。ただ設定してて突然(GUI上から)設定内容が消える現象が発生。1つずつ検証していったところ、do-gugan.comのようにホスト名なしのCNAMEレコードを設定するとアウト(GUIがnamed.confを解釈しきれなくなる?)で全て真っ新になるようでした。AレコードにしたらOKっぽい。そんなことを繰り返してるうちに動作が微妙に。現時点でGUI上にログが表示されなくなってしまいました。また時々ゾーン転送を許可するチェックボックスが勝手に外れてしまうことがあります。などなどどうにも不安定でなるべく触らずにそっとしておきたい部分になってます。

DNS部分だけ設定をリセットして最初からやり直したいのですが、ググってもその方法が見つからないんですよねー。

■メール

内部的にはpostfix + dovecotで構成されていて、今までのCentOS環境と同じでした。ただし細かいところで違いも。

  • メール保存方式がmboxではなくMaildir
  • ユーザ設定はOpenDirectoryで行われ、「ワークグループマネージャ」というアプリを使用
  • サーバー振り分けはprocmailではなくSieveという実装を使用
  • エイリアスはpostfixレベルでaliasesに書く方法と、ワークグループマネージャを使う方法の2つ

あたり。mbox->Maildir変換はLinux側で行いLion Serverにフォルダーコピーすればなんとかなりそう。ユーザ管理は慣れてしまえばまぁむしろ楽です。サーバー振り分けはユーザ単位の設定であればWebメールでログインしてブラウザ上でルール設定ができるのでこれもわかってしまえば便利ですね。エイリアスが2種類あるのは一長一短みたいで後者は設定が楽だけどSieveルールが適用されないという弱点があるとのこと。postfixに慣れてるなら前者でやった方がいいかもです。あと仮想ドメインはGUIで設定できました。まだ本番運用してないのでちゃんと動くか未確認ですが。迷惑メールやウィルスチェックも統合されているのでGUIで簡単に管理できますが、細かい例外ルールとかは先々CUIを使うことになるかもって印象。

■ソフトウェア・アップデート

Appleのソフトウェア・アップデートをLion Serverがプロキシ&キャッシュサーバーになって経由させることができます。複数台Macがある場合には有効ですね。ウチは(サーバー自身を除くと)2台だけなので微妙ですが、技術的関心で設定。とりあえずクライアントMac上でのアップデートの確認が一瞬で終わるのが幸せ。

■TimeMachineサーバー

AirMac Extremeに外付けしたUSB HDDをTimeMachine領域にしていたのですが、使用中エラーになってAMEを再起動しないと復旧しなくなるという現象が頻繁に起きるのでこの機会にこれもLion Server担当に振り替えてみました。比較的遅くてあまり使い道がない内蔵500GBを指定。最初設定してもクライアントから見えなくて悩みましたが、サーバーを再起動したら解決。使用中エラーなどが改善するかどうかはしばらく見守ってみないとです。

 

とまぁあれこれ便利ではあるし、OSX Serverでしかできないこともあるんですが、1万円台で買える安鯖にLinux入れて出来てた事を、なんだかんだで10万近くかけて移行するのは(個人用としては)完全に自己満足の世界ですねぇ。ゼロから新規で立ち上げようという人にはリーズナブルだとは思います。

自宅サーバー用にMac mini Serverを導入

現在のdo-gugan.comサーバーは4,5年前に購入した激安サーバーhp ML115をCPU換装、HDD増設しつつ使っています。最初についてた160GBのHDD(OSが入ってるパーティション)がそろそろ心配になってくる頃です。HDDも合計4台となり消費電力、発熱、騒音面でもイケてない状態。LVMなので古いドライブから新しい大容量ドライブにパーティションを移動していけばいいんですが、仮想環境とあいまってややこしい状態になってて恐くて手を出せない(^^;)。また先日でたCentOS6は結構あれこれ変わっていて今までのようなアップグレードインストールは難しいっぽい。

ならいっそ、ということでLion入りのMac mini Server (MC936J/A)を購入しました。省電力、静音、省スペースと三拍子揃ったハード。光学ドライブがなく密閉度が高いのも好感度高いです。吊しの4GBメモリ、500GB HDDx2台モデルを購入し、メモリを8GBに増設(置換)、HDDの1台をSSD(Crucial m4 128GB)に換装しました。本体はLABIで3,000円引き、13%ポイント、メモリも爆安とはいえ、トータルで10万超え。ベース価格がアフォみたいに安かったML115(Lights-Out入れて5万弱だったような?)に比べると割高感がありますが、上記三拍子や我が家ですっかりメインになったMacとの相性や連携機能を考えればアリかなと。

内蔵ストレージは2.5inchなので弱いですが、FireWire800、Thunderbolt等インターフェイスは充実してますし、近々iSCSI対応のNASが手に入りそうなのでそれと連携してもいいかなとか。

ML115が一昨年くらいから夏に不調を来すようになってて、今年も予防策として扇風機の風あてっぱなしで運用してるくらいなので、とっとと移行したいと思っています。

予定では、メール、Webといった基本サービスはOSX Server、Linuxでないと動かせそうにないサービスはVMWare上のCentOSで。あとWHS2011も一緒に購入して来たのでこちらも移行するつもりです。

■ハード面

光学ドライブスロットがないのでとてもスッキリしていて良いです。デスクトップ用としてはポートやスイッチ類が全て背面にあるのはユーザビリティ的に不利ですが、サーバー用であれば無問題。

片方SSDにしたせいもあるんでしょうが、セットアップ作業厨、アイドリング状態では耳を近づけてもほぼ無音。ぴったり耳をつけるとモーター音がかすかにしてるかな、って位。2chで天板の熱が指摘されてましたがいまんとこ気になりません。エンコードやトランスコードをしない限りまったく心配はなさそうです(ちなみに天板よりにHDD、その下にSSDという配置)。

Thunderbolt I/FのついたRAID箱の登場が待たれます。

■換装作業

購入後一度も電源を入れずに換装作業実施w。換装作業はこちらのブログを参考にさせていただきました。工具としてトルクスドライバーのT6とT8が必要。またm4が厚み的に微妙に入らないのでケースの片側を外すのにプラスドライバーを使いました。試してないですが、ケースが干渉するのは入れる時だけなのでもう少し深くまで分解して入れるのであればそのままでも入るんじゃないかって印象でした。まぁSSDだし据え置き機なんであまり気にせず、元のHDDについてた絶縁シートだけ基板剥き出しの側に貼っておきました。

ちなみに2台のHDDは縦に積まれるように入っており、底面側からアプローチする形なのですが最初に見える下側のドライブにOSが入っていて、SSD換装には便利な作りになっていました。もう1台も換装する場合はさらにバラす必要があるっぽいです。あと元から1台しか入ってないモデルだとスペースはあるもののケーブルが内蔵されていないので現状追加は難しいようです。

難易度としてはMBPよりは面倒だけどメチャクチャ難しいという点はないです。普通の自作erならできるでしょう。唯一気をつけるべきなのは上記ブログにもあるように金属メッシュパネルを取り外す時。円形の窓の奥の方に若干刺さっているので、それを引き出してから持ち上げないと簡単にひん曲がってしまいます。

いまんとこ6Gbpsでリンクしてるようです。

■インターネット経由リカバリ

OSと共にリカバリ領域の入った下側のドライブを換装してしまってもLion世代のマシンはインターネットからリカバリできます。スゴい時代になったものです。電源投入時にCommand + Rを押すとリカバリーモードに入るとのことですが2点ハマりました。

1つはたまたま使ったUSBキーボードにCommandキーに相当するWinキーがついてなかった(^^;)。サーバー用ということで純正キーボードを用意せずに一時的にそこら辺に余ってるキーボードで済ますケースも多いと思いますが地味にハマります。またBluetoothキーボードはリカバリーモード前には上手くペアリングできませんでした。

あと「Command + Rを押しながら電源ON」とあちこちに書かれてますが、本当にCommand + R押さえてから電源入れるとうまくリカバリーモードになってくれませんでした(?マーク入りのフォルダアイコンが点滅する状態に)。先に電源を押して「ジャーン」が鳴った直後くらいに押したら行けました。

ちなみに電源ボタンは正面から見て右側背面にあります。

リカバリーツールのDLが3分程度。SSDにパーティションがないとリカバリーしようとしても指定できないので先にディスクユーティリティを選んで領域確保するのもポイントです。ディスクイメージのダウンロードは予測で3時間弱と出たので放置してテレビ見てたんですが実際には1時間かからないで完了しました。勝手に再起動してインストール。こちらも最初19分と出ますが実際にはもっと短い時間で完了。こっちはSSDのお陰もあるでしょう。

純正SSDではないので当然Trimは「いいえ」。Trim Enablerで強制オンにしてみました。いっそ問題が出るなら早め(移行作業中)に出てくれってことで。

 

そんなこんなで2時間弱くらいで初期設定が完了しました。これからサーバー設定を少しずつ進めてい
きます。

Softbnak ULTRA-SPEED対応ルーター 007Zを導入

昨日から始まったSoftbankの下り42Mbpsデータ通信サービスULTRA-SPEED対応モバイルルーター007Zを買って来ました。

発表時はあまり興味なかったんですが、直前の記事を改めて読んでいて、最近の自分の使い方ならさして帯域制限の影響を受けないしお得なんじゃないかという気がしてきました。また現在主に使っているWiMAXが、

  • DIS Mobile WiMAXのアカデミックプランが使えなくなった
  • 圧倒的に使用頻度が高い港北みなも(横浜市都筑区)店内の電波は弱いまま
  • WM3500Rの安定性がイマイチ

という状況で少し魅力が薄れてきたのも理由です。
AirVideoとかで自宅サーバーの動画をストリーミングで再生!とかやってた頃は帯域制限無しで高速、というのは代えがたい魅力だったんですが、最近めっきりやらなくなりました。だいたい週1,2回、1〜3時間程度のカフェ使用でWebやTwitterがイライラせずに使えればいい、というのが最近の要求仕様です。さすがにB-MOBILEの低速プランは使う気にならないけど、まぁ下りで数Mbps安定して出ればいいや、という感じ。あとはpingレイテンシが低いといいですね。

■ULTRA-SPEEDプラン

詳細は公式サイトを見ていただくとして、ごく簡単にまとめると、

  • Softbank網のメインエリアとE-MOBILE網のサブエリアが1台で使い分けられる
  • それぞれの下り42M(理論値)通信方式に対応している
  • SB、EMそれぞれ帯域制限がある(後述)
  • 定額プランだと月3,880円とWiMAXと同額
  • 更に月月割1,400円が24回
  • 海外でも使えるけどローミング代は高め
  • 2年単位の更新で途中解約は1万円程度の解約料

という感じです。本体が33,600円なので月月割で相殺して実質無料になりますが、σ(^^)は一括で購入しました。月々の体感料金は2,480円となります。でヨドバシでポイントがつく分、一括の方が一ヶ月分程お得かと。

問題の帯域制限ですが、GIGAZINEの記事によれば、

・ソフトバンクモバイルのネットワーク

前々月の月間パケット通信量が3000万パケット(約3.66GB)を越えた場合、当月1ヶ月通信速度を制限する場合がある

・イー・モバイルのネットワーク
24時間ごとのパケット通信量が300万パケット(約366MB)を超えた場合、当日の21時~翌日2時に通信速度制御を実施

となっています。自宅で固定回線代わりに使うわけではないので、σ(^^)の場合はまずひっかかることはないでしょう。>3.66GB
イーモバイルの場合、ちょっとWebみてれば行きそうではありますが、まさに制限時間対の21〜2時頃に使う場合が多いσ(^^)の場合どうなるんでしょう?翌日に制限?だとすると二日連チャンで使うことはあまりないので、これまた問題ないということになります。

■007Z

Pocket Wi-Fi D25HWよりも軽いですが厚みは若干増した、という感じ。WM3500Rと比べるとかなりコンパクトです。通信中は結構熱を持ちます。最大の弱点はバッテリーの使用時間が4時間という点でしょうけど、これはD25HW同様追々予備バッテリーが買えるようになることを期待。
充電端子はmicroUSBです。PCからの充電や通信中の充電ができるか、などは未検証。おいおいネットで報告が出てくるの待ち。

ざっと触った感じ、メインエリアとサブエリアの切換はブラウザから設定画面にアクセスしないとできないみたいです。本体操作でできてほしいですね。

■ベンチマーク!

routers

行き付けの港北みなも内マクドナルドで比較ベンチマークをしてみました。土曜日の夜9時台のデータです。

・店内無線LAN(BB mobilepoint)

mobilepoint

前はもっと出てたんですが最近こんな感じ。なぜか上りの方が速い。pingはサスガ。いずれにせよブツブツ切れる(認証画面が何度も出る)ので実用になりません。

・店内無線LAN(mopera-U/M-ZONE)

mopera-U

同施設内のスタバで使えるmopera-U。爆速ですが、こちらもたまに認証が切れて再接続操作が発生するんですよね。というかこのベンチ取るだけでも途中でパケ詰まりして4回ほど再接続が必要でした(^^;)。MacBook Air側の問題の可能性も高いですが。

・WM3500R (WiMAX)

wimax

この店内では電波1本ギリギリの環境なのでそれを差し引いて見ておいて下さい。屋外ではもう少し出ます。

・PWR-100F (EMチャージ)

emobile

一時期横浜では1Mbpsも出なくなったんですが少し増強されたか、たまたま休日だったからなのか。

 

さぁ、そして本命の登場!

・007Z (メインエリア=Softbank)

・007Z(サブエリア=E-mobile)

ultra-sub

どちらも7.2Mbps超えてないので42Mbpsエリアなのかどうか微妙。PWR-100Fより出てるのでサブエリアはG4対応エリアなんですかね?まぁいずれにせよ個人的には常にこれくら出てれば充分ですね。pingもイイカンジ。サブの方が若干速いのは気になるけど、トータルバランスと帯域制限のひっかからなそうさで当面はメイン使用メインで大丈夫そうです。

また本当に42Mbpsエリアかもあやしいので、別の場所でも試してみようと思います。

やはり速度でいえば公衆無線LAN接続には負けますが、どうもσ(^^)の使う店舗では不安定でイライラが募るので、Webが実用的に見られるならモバイルルーター常用でいいかって気分です。たまたまルーターを持ってない時とかのために契約は残しておくか悩ましいですが。

UIWebViewをコードでズームする方法の覚え書き

iOSプログラミングの話です。

アプリ内にWebブラウザコンポーネントであるUIWebViewを埋め込んで簡易的にWebページを扱えるようにする必要があったんですが、その表示倍率を直接制御するメソッドやプロパティがありませんでした。海外の掲示板も含めて結構質問は出てたんですが、有用な回答は得られず。

まず散見されたのはUIScrollViewの上にUIWebViewを置いて、UIScrollView側でピンチやスクロールを制御すればいいんじゃね?というアイデア。実際にやってみたんですが、以下の問題点がありました。

  • UIIWebViewの標準操作であるダブルタップでブロック最適化ズーム(?)動作が使えなくなる
  • ズームの品質が低い(文字がボケる)

そして何より、よくよくAPIガイドを読んだら「UIWebViewとUITableViewをUIScrollViewの上に置くのは予期せぬ動作を引き起こす可能性があるので推奨しない」と書いてあった。禁止ではないのでAppStoreの審査でリジェクトされるといほどではないかも知れないけれど、将来的なAPIの仕様変更でおかしなことにならないとも限らない。

で、悩んだ末に辿り着いた答えは、stringByEvaluatingJavaScriptFromStringメソッドを使ってWebコンテンツを書き換える方法。

まず単純な例。

[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat: @"window.scrollTo(0, 100);"]];

これを実行すると、Webコンテンツ上で「window.scrollTo(0,100);」というJavaScriptを実行したことになります。つまり画面が下に100ピクセル分スクロールします。

これを応用して、iOSのブラウザに対するズーム定義をmetaタグで追加してやる、ということをしてやるワケです。metaタグの仕様についてはAppleのドキュメントを参照するか、「meta viewport」などでググって下さい。

今回の閲覧対象ページはこのmetaタグ自体が存在しなかったので、タグ自体を作成してheadタグの中、titleタグの前に挿入しています。

[webView stringByEvaluatingJavaScriptFromString:@"var bodyNode = document.getElementsByTagName(‘head’).item(0);"  
"var titleNode = document.getElementsByTagName(‘title’).item(0);"
"var newNode = document.createElement(‘meta’);"
"newNode.name = ‘viewport’;"
"newNode.content = ‘width = 1024, initial-scale = 1.2, minimum-scale = 0.3, maximum-scale = 1.2’;"
"bodyNode.insertBefore(newNode, titleNode);"];

@””の文字オブジェクトは;で切らない限り改行入れて列挙できるので、見やすさの為にそうしています。

1行目でbodyNodeという変数にheadタグの位置を取得。

2行目でtitleNodeという変数にtitleタグの位置を取得。

3行目でnewNodeという変数にmetaタグを作成。

4行目でそれに「name=’Viewport’」に相当する記述を追加。

5行目に更に「content = ‘width = 1024, initial-scale = 1.2, minimum-scale = 0.3, maximum-scale = 1.2’;" 」を追加。数値は適宜状況にあわせて調整を。ちなみに=の前後にスペースがないとダメとどっかで読んだのでそうしてます。

6行目で、bodyNode(=headタグ)内のtitleNode(=titleタグ)の直前にnewNode(=metaタグ)を挿入して完成です。

 

最初から「<meta name=’viewport’…>」が書かれているページに対してはcontentだけを書き換えるような処理をしないといけないので、汎用的なWebブラウザとして使うなら分岐処理も入ったもう少し複雑なJavaScriptが必要でしょうが、今回は対象サイトが固定のアプリなのでこれだけで済みました。

参考になれば幸いです。

[宣伝] iOSアプリ「独りブレスト!発想会議」リリースされました

3月からプログラミングを担当していたU’eyes Design製のiOS(iPhone)アプリ「独りブレスト!発想会議」がリリースされました。5月の某研究会でβ版を初お披露目した時に「(Apple絡みだけに)泳げる頃までには(ってこのネタわかるのオサーン)」なんて言ってましたがなんとか実現して良かったです。

ちなみに審査にかかった時間ですが、Appleからのメール着信時刻で言うと、

  • 11/06/20 17:05  Waiting for Review (審査待ち)
  • 11/06/22 22:05  In Review (審査中)
  • 11/06/23 12:44  Processing for App Store (AppStore向けに処理中)
  • 11/06/23 12:51  Ready for Sale (販売準備完了)

という感じで、三日程で通ってしまいました。しかも一発合格。初めてにしては上出来じゃないすか?

AppStoreの審査は、例えばテーブルビュ-(リスト画面)で下位階層に遷移してから上位階層に戻った時に、最初のフォーカスがじわっと消える効果が入ってないとリジェクトされる、とか細かいガイドライン準拠もチェックされると聞いていたので、あれこれ気をつけつつもかなり不安だったんですが、ホント一安心です。

■アプリ紹介

せっかくなので公開したアプリの紹介も。

端的にいうと、商品企画などで新商品、新サービスの企画アイデアを生み出す為の支援ツールで、新しい発想を採り入れたいテーマ(下の写真の例では「扇風機」)を設定すると、1枚目の写真のように発想のトリガとなるキーワードが付箋紙として表示されます(写真1枚目)。このキーワードが全部で117種類あって、スワイプで次々めくったり、下部の「101」と出ている吹き出しをドラッグして好きなものを出したり、あるいは左下のシャッフルボタンでランダムに表示したりできます。

テーマに対して何か閃きをくれそうなキーワードに出会ったらタップして赤丸をつけます(写真2枚目)。「“自然の美しさを持つ”扇風機ねぇ…そうか!例えば花びら型とか?」なんて閃いたらミニ付箋にメモを書き込んでおくこともできます。

このアプリでは赤丸をつけることを「クリップ」と呼んでいて、トップ画面から「クリップリスト」を開いてテーマを選択すると赤丸をつけた付箋とそのメモ内容を一覧したり、メモの編集を行ったりすることもできます(写真3枚目)。またこのデータはExcel等で読み込みやすいCSV(カンマ区切りテキスト)形式にして、メールで送信したり、iTunesから取り出したりできます。CSV形式でクリップボードにコピーすることもできるので、Evernote等に貼り付けても良し、です。

 

mzl.eirkhwti.320x480-75mzl.qqnnybor.320x480-75mzl.gmguttdg.320x480-75

 

で、ここで使われている117の発想刺激ワードというのが、単に思いつきで書き殴ったものではなく、U’eyes Designのリサーチに基づいたものであることがこのアプリの価値となっています。簡単にいうと、「あなたが最近感動したものは?」というアンケート調査をして、その回答(感動シチュエーション)を分析して抽出された、いわば感動エッセンスとでも言うべきワード集なんです。これをU’eyes DesignではXB法(クロスビーと発音)としてチームで発想会議をする手法として導入しセミナー等を行ってきました。これをスマートフォン向けアプリとしてスピンアウトし、一人でも実践できるようにしたのがこの「独りブレスト!発想会議」というワケです。「独りなのにブレスト?会議?」というツッコミ待ちのネーミングが秀逸ですよね(σ(^^)の発案ではないので自画自賛ではない)。

商品企画に携わっていない人でも、家族や友人へのプレゼント選びのような「感動」させたい発想の支援に幅広く利用できると思います。お値段230円!プライベートでもご利用いただきやすいお手頃価格となっております。是非お試しあれ!

2011.07.14追記:

2011.07.12頃、ついにビジネス有料ランキングで1位を獲りました!ありがとうございます。

あとYouTubeに解説動画がアップされました。動いている様子をご覧いただけます!

 

独りブレスト!発想会議 - U'eyes Design Inc.