gyazoをec2サーバーで簡単に動かす方法メモ。コードの書き換え、構成の変更は極力避けています。
gyazoを自前のec2サーバーで動かすことで、画像の共有がむちゃくちゃ簡単、しかも許可したユーザー以外が見れなくて安心、になります。
gyazoって何なの?
選択範囲のスクリーンショットを簡単に公開するツールです。twitpicのさらにお手軽版みたいなものです。
gyazoはソースが公開されているので、twitpicと違って自社サーバーのみで運用することができます。なので、社内のみの画像共有にも安心して使うことができます。
ちなみにメインの開発者は日本人のようです。
全体の流れ
全体として以下のような手順が必要になります。
- ec2インスタンスを用意する
- apacheをインストールする
- upload.cgiを設置する
- 各OS用のクライアントを用意する
- セキュリティ設定を行う
ec2インスタンスを用意する
amazon linuxのec2インスタンスを起動してください。
この記事はamazon linuxを前提にしています。インスタンスサイズは数十人程度が使うだけならmicroで十分です。
Security Groupの設定で22番(ssh)、80番(http)のポートを開けるのを忘れないでください。
ruby1.8をインストールする
amazon linuxならデフォルトでruby1.8が入っています。ruby1.9だと、画像のアップロード時にエンコーディング関係のエラーがでます。
このエラーの直し方を知っている人がいたら教えてください…(^^)
rubyのバージョンは「ruby -v」で確認できます。
apacheをインストールする
yumでインストールできます。
sudo yum install -y httpd
下記のようにパーミッションを変えておくと後々便利です。
sudo chown -R ec2-user /var/www sudo chgrp -R ec2-user /var/www
apacheで*.cgiを実行する設定をする
/etc/httpd/conf/httpd.confを一行書き換えるだけです。
#AddHandler cgi-script .cgi ↓↓↓ AddHandler cgi-script .cgi
httpd.confを書き換え後、下記のコマンドでapacheを起動できます。apacheが起動できたら、「http://[ec2のpublic DNS]/」にアクセスできるか確認してください。エラーになるならapacheの起動(もしくは設定)に失敗しています。
sudo /etc/init.d/httpd start
upload.cgiを設置する
upload.cgiはrubyで書かれたファイルアップロードスクリプトです。
gyazoの公式リポジトリに入っています。
ネットで調べると、「upload.cgiは最新リポジトリに入っていない」という古い情報が多数見付かりますが、2013年9月時点ではリポジトリ内に入っています。
cd /var/www/cgi-bin wget https://raw.github.com/gyazo/Gyazo/master/Server/upload.cgi chmod +x upload.cgi # ついでに必要なディレクトリを作っておく cd /var/www mkdir cgi-bin/db mkdir html/data chmod 777 cgi-bin/db chmod 777 html/data
upload.cgiを少しだけ書き換える
下記の3箇所を書き換えます。
rubyのパスを正しいものに書き換える。正しいパスは「which ruby」で確認できます。
#!/usr/bin/env ruby ↓↓↓ #!/usr/bin/ruby
画像をアップロードするディレクトリを書き換える。こうしないと、cgi-bin/dataへのアップロードになるのですが、そのままだと画像がcgiみたいな扱いになってしまい色々と失敗します。
File.open("data/#{hash}.png","w").print(imagedata) ↓↓↓ File.open("../html/data/#{hash}.png","w").print(imagedata)
画像をアップロードするサーバーを書き換える。ブラウザから自動アクセスするURLに使われます。
cgi.out(headers){"http://gyazo.com/#{hash}.png"} ↓↓↓ cgi.out(headers){"http://[ec2のpublic DNS]/data/#{hash}.png"}
画像アップロード先をec2に変えたクライアントを用意する
gyazo公式から、windows、mac、linuxそれぞれ用のクライアントが提供されています。どれを使う場合であっても、「画像をアップロードするホストの書き換え」が必要です。
windowsの場合
ホスト名等を変えることのできるwindows用クライアントが公開されているのでそれを使います。
このページからダウンロードできます。
Gyazowinをforkして野良Gyazoサーバにポストできるようにホスト名,ポート,パスを指定できるようにした
ダウンロードしたgyazowin.exeへのショートカットを作ります。そして、ショートカットのプロパティを下記のように変更してください。
C:\\[path]\\gyazowin.exe [ec2のpublic DNS] 80 /cgi-bin/upload.cgi
念のため、上記のショートカットを実行して、指定したec2サーバーに画像がアップロードされることを確認してください。
設定が間違っていてgyazo.comにアップロードされてしまった時のために、当たり障りない画像をアップロードした方がよいと思います…!
mac、linuxの場合
mac、linux用のクライアントはシェルスクリプトで書かれているので、アップロード先を簡単に書き換えることができます。
とりあえずmacの場合は、「/Applications/Gyazo.app/Contents/Resources/script」の中の該当行を下記のように書き換えればよいようです。
HOST = '[ec2のpublic DNS]' CGI = '/cgi-bin/upload.cgi'
セキュリティ設定
各自のセキュリティポリシーに従ってもらえればいいのですが、簡単に済ますなら以下のような方法もあります。
アクセスできるIPアドレスを制限する
ec2のSecurity Groupとか、linuxのiptablesとかでアクセス元のIPアドレスを制限すればそこそこ安心です。
basic認証等をかける
簡単なんですが、パスワードが暗号化されずに流れる、総当たり攻撃への対策が別途必要、などなど危険な点がいくつかあります。
参考リンク
Gyazo: the simplest and fastest screenshot uploading tool
Gyazowinをforkして野良Gyazoサーバにポストできるようにホスト名,ポート,パスを指定できるようにした