WindowsでGyazoサーバを立ててみた
あまり話題に上ってこないのが不思議ですが*1、Gyazoには、サーバ用のCGIスクリプトが添付されています。そのCGIスクリプトは10数行程度のrubyのスクリプトなので、ちょっこっと変更するだけでWindows上でも動作させることができます。
で、自分のローカルマシンでGyazoサーバを稼働させることができたので、その手順を簡単に紹介したいと思います。
Apacheをセットアップ
まずはWebサーバをセットアップして、CGIとしてRubyスクリプトが実行できる状態にする必要があります。Apacheの設定になりますが、ここでは詳細の手順は省略します(正直いうと細かい手順を忘れてしまった...orz)
私の場合、ディレクトリ構成は以下のような感じなってます。
Gyazoのソースを入手
Windowsでは、通常dmgイメージをマウントすることができないのですが、XacRettというツールを使うことでdmgイメージの内容を展開することができます。
以下よりダウンロード/インストールしてください。(細かい手順は省略します)
XacRettにdmgファイルをドラッグ&ドロップするとディスクイメージが展開されます。
展開したすると以下のようなファイルが現れると思います。
- upload.rb
- upload.cgi
どうやら、upload.rbがクライアントのrubyスクリプトで、upload.cgiがサーバ用のCGIスクリプトのようです。これで、Gyazoのソースが入手できました。
ソースの修正
サーバ用スクリプト
基本的に各種パスを調整するだけで動作します。以下の点を環境に合わせ変更します。
- ruby実行モジュールのパス
- imagedata(画像)の格納先のパス
- imagedataを保存するときのファイルのモードは「バイナリ」を指定する必要があります*2
- アップロード先として出力するURL
参考までに、upload.cgiのパッチ(差分)を貼っておきます。
diff U3 C:\xampp\cgi-bin\upload.cgi.origin C:\xampp\cgi-bin\upload.rb --- C:\xampp\cgi-bin\upload.cgi.origin Wed Sep 05 23:34:28 2007 +++ C:\xampp\cgi-bin\upload.rb Tue Nov 11 23:06:05 2008 @@ -18,6 +18,6 @@ dbm[hash] = id dbm.close -File.open("data/#{hash}.png","w").print(imagedata) +File.open("c:\\xampp\\htdocs\\uploads\\#{hash}.png","wb").print(imagedata) -cgi.out { "http://gyazo.com/#{hash}.png" } +cgi.out { "http://localhost/uploads/#{hash}.png" }