成功からは学べませんねぇ、失敗から得る事の方が明らかに多い。
白眉の識者からは、レベルが低いと失笑されても公開しておく方が、誰かの役に立つかもしれないと思う次第です。
「Gitを利用して、Webサイトのコンテンツの変更履歴を残す。出来れば、公開サイトのサーバー内に存在する物理的に分離されたHDDにリポジトリを置いておきたい」
こう言う単純な発想から、httpdにWebDav機能を組み込み、MacのFinderからアクセスできる環境を作りはじめたが、勉強不足もあって可也ハマった。
普通ならサーバー設定→クライアント接続の順で記載するのが流れですが、自分の手元からサーバーへ向けて問題点を追って行く方が体験する方にとっても探しやすいと思います。なので、今回は、Macで発生した問題から辿って行きます。
"Mac" "Finder" "WebDav" などで検索を掛けると山の様に接続事例が引っかかります。
しかし、OSX 10.9(Marvericks) のFinderからの接続は、事例に出ている様に簡単にはいきませんでした。
自機の限定された問題、もしくは個人的なネットワーク環境の問題なのかもしれないので、3台のMacで試した結果、確信的に不具合が内在すると判断します。
「症状」:Finderからの接続がサーバーで認証拒否される。
一般的に公開されているMacのFinderからネットーワーク接続する方法はGUIを使った場合以下の手順です。
1.Finderを開く
2.メニューバーから[移動]-[サーバーへ接続]を選択する
3.サーバーへ接続のダイアログが表示される
4.接続URLを入力する 例:https://www.exsample.com/webdav を入力し[接続ボタン]をクリックする
5.ログオンダイアログが表示されるので、webdavの許可ユーザーとパスワードを入力し[接続ボタン]をクリックする
ここでエラーが出ます。
「サーバー"https://www.exsample.com/webdav"への接続で問題が発生しました。」
IPアドレス等をサーバー管理者に確認せよという内容です。
サーバーを立てた本人でもあるので、徹底的にサーバーのログを調べたsslでの接続要求でエラーが発生している。散々設定を検証してみたがどうしても通らない。試しにスマホでの接続すると同じ条件ですんなり通った。えっ、なんで・・・・
Macに問題がある可能性大とみて視点変更しMacのコンソールログを検査しました。
コンソールのログには、以下の3件が表示されます。
>webdavfs_agent: CFNetwork SSLHandshake faild (-9807)
>webdav_cert_ui: Unable to load nib files: MainMenu. exiting
>webdavfs_agent: network_mount: network_getDAVLevel returned error 89
MainMenuのnibファイルが存在しないとかいう内容の様に読めます。
奇妙なメッセージ、グーグル先生に聞いてみても「"Mac"の"WebDav"なんて"Finder"で3分で終わるぜ」という内容ばかり。
確かに自分使用機は結構弄ってるから何かシステム用のファイルでも消してしまったんだろうか、クリーンインストールやむ無しかと、悶々とした気持ちで色々とネットを掘っていたら、偶然ドイツ語のページで同じコンソールログに遭遇した。
http://funrecycler.com/?p=10398
ドイツ語では、良う判らんが 2013/11/25 の投稿で、FinderのWebDAVに問題があるらしい事は理解できた。解決方法は、至って簡単、単純なコマンドを打ち込むだけ。最終に解決方法で纏めます。原因は、webdav.fsの接続に使用するファイルが存在しないので、opensource.apple.comから取得せよという内容でした。
ここから情報が一気に集められた。"webdav_fs-334.2" "opensource.apple.com" で可也ヒットし、英語情報もありました。
https://discussions.apple.com/thread/5476839
「解決方法」
1.ターミナルを起動する
2.sudo bash でシステム管理者モードに入る(パスワードを要求されますがインストールした時の所有者パスワードでOK)
3.cd /System/Library/Filesystems/webdav.fs/Support/webdav_cert_ui.app/Contents/Resources/English.lproj/ webdav.fsのライブラリーへ移動
4.mkdir MainMenu.nib でディレクトリーを作成する
5.cd MainMenu.nib/ でMainMenu.nibへ移動する
6.curl http://www.opensource.apple.com/source/webdavfs/webdavfs-334.2/webdav_cert_ui.tproj/English.lproj/MainMenu.nib/classes.nib -o classes.nib でclass.nibをダウンロードする
7.curl http://www.opensource.apple.com/source/webdavfs/webdavfs-334.2/webdav_cert_ui.tproj/English.lproj/MainMenu.nib/info.nib -o info.nib でinfo.nibをダウンロードする
8.curl http://www.opensource.apple.com/source/webdavfs/webdavfs-334.2/webdav_cert_ui.tproj/English.lproj/MainMenu.nib/keyedobjects.nib -o keyedobjects.nib でkeyedobjects.nibをダウンロードする
9.ls -l で以下のファイルが3つあるか確認する
>-rw-r--r-- 1 root wheel 1270 1 9 18:44 classes.nib
>-rw-r--r-- 1 root wheel 1935 1 9 18:44 info.nib
>-rw-r--r-- 1 root wheel 10257 1 9 18:45 keyedobjects.nib
10.exit / exit でコンソールを終了する
11.Finderからの一般的な操作を実行する
因みに一度この設定を行ってからは、MainMenu.nib を消しても、本人用のライブラリーに勝手にこの一式が生成されます。不思議です。
これだけで問題解決します。サーバーの設定上の問題だと思い込みで3日も労しましたが呆気無い幕引きでした。珍しくOSXのバグっていうやつです。
しかし、日本語での情報では、殆ど「めっちゃ簡単、流石にMac、秒殺で繋がる」とそんな情報しかない、sambaのNASをローカルで繋ぐ程度で、webdavも一緒でしょ的な書き込みと記録で、また殆ど同じような記述文脈。明らかにコピペで書いてるようなものばかり、全く役に立たなかった。昔のOSXはそれで通っていたのかもしれないので、嘘が書かれているとは思いませんが、逆に翻弄されてしまってたのは事実です。もしかして、FinderでWebDav使うなんて本当は邪道なのかもしれません、やって見ないと判らないものです。
ドイツのfunrecyclersさん、本当に有難う! Danke schöen.
次回は、弄くり倒して試した CentOS 6.5 SELinux での httpd でハマった話を公開します。
2014/01/11
登録:
投稿 (Atom)