2012年5月18日金曜日

GAEで動くプロキシサーバを使ってDropboxのホスティング環境に独自ドメインでアクセス

DropboxのPublicフォルダにファイルを置くと、そのファイルは一般に公開されます。

従って、HTMLファイル等をPublicフォルダに置くだけで、Dropboxを簡易ホスティング環境として使用することができます。

やり方はDropbox 活用術 PART3 – ホスティングとして利用 | Technolog.jp - ICTウェブマガジンを参照して下さい。

ただし、上記サイトにもある通り以下の制限があります。

  • 独自ドメイン使用不可
  • サーバサイドスクリプト使用不可

サーバサイドスクリプトはどうにもなりませんが、独自ドメインの方はいくつか解決策があります。

DropboxのPublicフォルダにindex.htmlを置いた場合、このindex.htmlには'http://dl.dropbox.com/u/1234567/index.html'というURLでアクセスできます。

1234567はDropboxのユーザ番号です。Publicフォルダのファイルのパブリックリンクを見ることで分かります。

従って、ここに'http://example.com/index.html'でアクセスしたい場合、'http://example.com/'へのアクセスを'http://dl.dropbox.com/u/1234567/'に転送しなければなりません。

DNSを直にいじれる環境ではApacheのリバースプロキシやmod_rewriteを使ってどうにでもなりますが、お名前.comのように設定項目が制限されている環境ではこの方法は使用出来ません。

DNSのCNAMEやお名前.comのURL転送ではドメイン部分に続くディレクトリの指定(/u/1234567/など)ができないからです。

今回はこの問題を解決するために、GAE(Google App Engine)で動作するプロキシdropbproxを使いました。

GAEは独自ドメインが使用できるので、独自ドメインで一旦GAE上のプロキシにアクセスし、そこからDropboxのPublicフォルダにアクセスするという仕組みです。

元のdropbproxではディレクトリにアクセスした際にindex.htmlを自動的に表示する機能がないため、今回dropbproxに少し手を加えて'http://example.com''http://example.com/'のようにディレクトリを指し示すURLは、そのディレクトリのindex.html(http://example.com/index.html)を表示する機能を付け加えました。

GAEに詳しくない方はチュートリアルをひと通りこなしてみてください。

設定手順は以下の通りです。

  1. GAEでdropbprox用のアプリケーション作成

  2. カスタマイズしたdropbproxをダウンロード(Google Project HostingからMercurialでもダウンロードできます)

  3. 解凍してapp.yamlとmirror.pyを以下のように編集

    • app.yaml
      • appidを1.で作成したアプリケーションIDに設定。
    • mirror.py

      • DROPBOX_USERに上で説明したDropboxのユーザ番号を設定。

      • DIRECTORIESにindex.htmlを自動的に付加したいディレクトリパスのリストを設定。必ず/から始まる必要がある。例えば’/dir/hoge’と設定しておくと、http://example.com/dir/hogeにアクセスした時にはhttp://example.com/dir/hoge/index.htmlが表示されるようになる。

  4. アプリケーションをローカルでテストしてちゃんとページが表示されるか確認。

  5. アプリケーションをデプロイ。

  6. Google App Engineで独自ドメインを使う - Shin x blogを参考にGAEに独自ドメインでアクセスできるように設定(GAEはexample.comのようなnaked domainからはアクセスできないので、さらに独自ドメインを転送する - Google Apps ヘルプを参考にwww.example.comに転送設定しておく)

以上、かなり面倒ですが全て無料で独自ドメインを使ったDropboxによるホスティングが実現できました。

Dropboxによるホスティングはファイルを変更すればFTPを使用しなくても即座にアップロードされますし、自動的にバージョン管理もしてくれるのがいいですね。

ただ、一度プロキシを介するせいかレスポンスはあまりよくありません。

まあ個人レベルのちょっとしたサイトにはこれで十分でしょう。

アクセスが多いサイトはちゃんとしたホスティングサイトを使用して下さい。

0 件のコメント:

コメントを投稿