-
-
Notifications
You must be signed in to change notification settings - Fork 2.7k
Server guide.ja
README.md
を参照。
ウェブサーバーに使用しているturboというアプリケーションサーバーは、あまり安定しているとは言えず、たまにエラーで落ちることがあるためupstartで起動状態の管理と落ちた時に再起度するようにしています。
upstartのスクリプトは、appendix/waifu2x.upstart.conf
にあります。
- sudo cp appendix/waifu2x.upstart.conf /etc/init/waifu2x_1
- sudo initctl <start|stop|restart> waifu2x_1
このupstartスクリプトは、/home/ubuntu/waifu2x/appendix/run-web.sh
を呼ぶようになっています。
run-web.sh <GPU Device ID (start from 0)> <TCP Port Number>
.
となっています。マルチGPU環境では、upstartを/etc/init/waifu2x_1
,/etc/init/waifu2x_2
..と複数登録して、各upstart scriptのrun-web.sh
の引数を変えることで、異なるGPUとポートを使って起動するにしています。
またweb.lua
で、-force_cudnn
などのオプションを使いたい場合は、run-web.sh
の中に追加してください。(web.luaへの引数を全部渡せたほうがいいのかもしれませんが対応できていません)
また、run-web.sh
はTorch7用の環境変数等を読み込むために、最初の行で.zshrc
を読み込んでいます。bashを使っている場合や、サーバー用の環境変数を別のファイルで定義したい場合は、この行を変更してください。
web.lua
は./cache
に変換画像やリモートから取得した画像のキャッシュを保存していますが、削除はしていないため、CRON側から削除しています。(web.lua側から削除したほうが楽かなと思っていますが、対応できていません)
- crontab -e
-
*/30 * * * * /home/ubuntu/waifu2x/appendix/purge_cache.sh
の行を追加
purge_cashe.sh
は、purge_cache.lua
を呼び出して、古いキャッシュ(デフォルトでは4時間より前)を消します。またこのスクリプトも先頭で.zshrc
を読み込んでいます。
waifu2xのAPIサーバーの前にはnginxのゲートウェイを置いています。 理由として、以下のことがあります。
- APIサーバーが画像の変換中に静的ファイルのリクエストが待ち状態になってトップページの読み込みが遅いことがあるため静的ファイルへのリクエストはAPIサーバーに投げたくない
- APIサーバー(turbo)は許容しないデータサイズを受けるとHTTPエラーを返さずにコネクションを切断してしまう
- スクリプト等で連投するユーザーに制限をかけたい
- APIサーバーが複数あるときにリクエストを分散させたい
設定の例はappendix/waifu2x.nginx.conf
にあります.
- sudo cp appendix/waifu2x.nginx.conf /etc/nginx/sites-available/waifu2x.udp.jp (fill your domain)
- sudo ln -s /etc/nginx/sites-available/waifu2x.udp.jp /etc/nginx/sites-enabled/
- sudo service nginx restart
またclient_max_body_size 5242880
をnginx.conf
に追加することをおすすめします(API側の許容サイズ以上のリクエストはAPIサーバーの前で止めてHTTPエラーを返したい)。またlimit_req_zone
(連投の制限)はコメントアウトされているため、必要な場合は運用にあった設定を行ってください。(デフォルトでは1分間に10個以上画像を投げると503エラーを返すようになっています)
- テンプレート
webgen/templates/index.html.erb
を編集 -
ruby webgen/gen.rb
で各言語のHTMLを生成 -
./assets/*.html
を確認