りむっちスケッチ

ハニカムログ

さくらVPSにgyazo+sinatra+nginxでオレgyazoを構築

f:id:rimtty:20140323114235p:plain

有意義なオレgyazoの設置

gyazoは広告がでて鬱陶しいので、オレgyazoを作ってクライアントから利用するのが吉。どこでどう使うかってのはいろんなポイントがあって設置したら便利になるよってことをまず書いておく。

  • Macgyazo.appからオレgyazoへ投稿してClipboardにURLをペースト
  • Winのgyazo.exeからオレgyazoへ投稿してClipboardにURLをペースト
  • 公式Gyazoのインターネット上に載らなくて社内とかでも使えて便利
  • AndroidGyazoアプリからオレgyazoのURLを指定することで出先でもすぐgyazoれて便利
  • オレgyazoはウェブ上に載っかっていくので良い感じのViewerを一枚噛ませばとても便利

準備

設置する前に、rbenvとbundlerくらいは入れておいて。 それから、今回は簡単にするためにnginxとrackupを使って楽ちん構築とします。

環境

リポジトリ

rimtty/gyazoserver · GitHub

gyazoserverの設定

# gyazoserverのソースをGithubから取得

$ mkdir /opt/gyazoserver
$ mkdir /opt/gyazo
$ cd /opt/
$ git clone https://github.com/rimtty/gyazoserver

gyazoserver/gyazo.rbの最終行を自分のサーバーのドメインに設定しておく。
L34     "http://hoge.com/#{hash}.png"

$ cd /opt/gyazoserver 
$ rackup -p 8000 &

これでGyazoサーバーが起動。

nginxの設定

# nginxのリポジトリを追加

$ vim /etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

# nginxのインストール
$ yum install nginx
# nginxの設定ファイル編集

$ vi /etc/nginx/nginx.conf

worker_processes  2;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    # nginxのサーバーバージョンを返さない設定
    server_tokens    off;

    # logformatにLTSVをセット
    log_format  ltsv  'time:$time_local\t'
                      'msec:$msec\t'
                      'host:$remote_addr\t'
                      'forwardedfor:$http_x_forwarded_for\t'
                      'req:$request\t'
                      'method:$request_method\t'
                      'uri:$request_uri\t'
                      'status:$status\t'
                      'size:$body_bytes_sent\t'
                      'referer:$http_referer\t'
                      'ua:$http_user_agent\t'
                      'reqtime:$request_time\t'
                      'upsttime:$upstream_response_time\t'
                      'cache:$upstream_http_x_cache\t'
                      'runtime:$upstream_http_x_runtime\t'
                      'vhost:$host';

    sendfile        on;

    # keepaliveを60秒に
    keepalive_timeout  60;

    # gzipを有効
    gzip  on;

    # proxy cacheを有効に
    # key 32MB/max 300MB/最大有効期限7日
    proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=my-key:32m max_size=300m inactive=7d;
    proxy_temp_path /var/cache/nginx/tmp;

    # conf.d配下を読み込むようにセット
    include /etc/nginx/conf.d/*.conf;
}
# nginxへgyazoサーバーの設定

$ vi /etc/nginx/conf.d/gyazo.conf

upstream gyazo {
    server 127.0.0.1:8000;
}

server {
    listen       80;
    server_name  hoge.com;

    charset UTF-8;
    charset_types text/css text/plain;

    #gyazoれる画像サイズの最大MBを指定
    client_max_body_size 30M;

    #gyazo中のタイムアウトを5分で設定
    send_timeout            300;
    proxy_connect_timeout   300;
    proxy_send_timeout      300;
    proxy_read_timeout      300;

    #アクセスログの吐き出しを設定
    access_log /var/log/nginx/gya_access.log ltsv;
    error_log /var/log/nginx/gya_error.log;

    #ドキュメントルートを設定
    root /opt/gyazo;

    #ドキュメントルートにキャッシュを設定
    # ヘッダのキャッシュコントロール無視、200レスポンスは最大3日キャッシュ404キャッシュは10分
    location / {
        proxy_ignore_headers Cache-Control;
        proxy_cache_valid 200 3d;
        proxy_cache_valid 404 10m;
    }

    location /upload {
        proxy_pass http://gyazo;
        break;
    }
}
# nginxのスタート
$ /etc/init.d/nginx start

Gyazoクライアントの入手

Macの場合

Gyazo.appを本家から入手して、terminal.appからいじる。

vim /Applications/Gyazo.app/Contents/Resources/script

 50 HOST = 'hoge.com'
 51 CGI = '/upload'
 52 UA   = 'Gyazo/2.0'

Windowsの場合

イケてるgyazwinを使って、iniファイルにhost/cgi先を同様にセットすればOK
gyazowin+を最新のgyazowinのソースとマージした - tyoro.exe

Androidの場合

この子ならURLを指定できるので便利です。
GyazoAndroid - Google Play の Android アプリ