作成したDashアプリをコアサーバーにデプロイした
今回したこと
作成した日本の降水量を可視化するpython製アプリをレンタルサーバ上にデプロイした.
前回の記事では作成したアプリをHerokuにデプロイしたことを書いた.
catdance124.hatenablog.jp
Herokuはローカルにファイルを保存できないこともあって動作に無理やり感があったので,サーバを借りてそこにアプリをデプロイしようと考えた.
そのURLはこちら
http://catdance124.m24.coreserver.jp/dash/weather-app/
ソースはこちら
github.com
レンタルサーバ選び
pythonが動いて安ければどこでも良いかなと思ったのでコアサーバを借りた.
特にスペックを求めなかったのでCORE-MINIを選択した.
12ヶ月契約なら 月200円程度なので良心的.
www.coreserver.jp
レンタルサーバは初めてなので普通のことかもしれないが,
- cronが最短1時間間隔(個数制限あり)
- 実行時間が長いプロセスはkillされる
あたりが使って気になった点
定期的にデータをダウンロードしようと思っていたのでcronをあてにしていたが,
うまいこと使えなさそうだったためアプリ側で定期ダウンロードするように対処した.
環境構築
前回はHrokuに挙げたので特有の書き方をしていたが,レンタルサーバはレンタルサーバで特有の書き方があるらしい.
まずは環境構築から
python3.7を入れるのはここを参考にした
qiita.com
普通にpythonファイルをあげるだけではアクセスできないらしく,CGIとして動かす設定をしないといけないようだ.
ここを参考に
kumahiyo.com
blowup-bbs.com
下記のように設定し,Dashアプリを動かすようにした.
下記ファイルはアプリのディレクトリにまとめて配置.
コアサーバーは~/public_htmlが公開範囲なのでその配下にアプリは設置する.
AddHandler cgi-script .py RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.py/$1 [QSA,L]
- index.py
shebangはwhich pythonなどで適切に設定する.
#!/virtual/catdance124/.pyenv/shims/python # coding: utf-8 import cgitb cgitb.enable() from wsgiref.handlers import CGIHandler from app import server CGIHandler().run(server)
- app.py
メインのDashソースコード.サーバを構築するためにflaskオブジェクトを生成する.server = app.serverとapp.config.updateが大切
import dash import dash_core_components as dcc import dash_html_components as html import ~~~~~~~~~~~~~~~~~~ app = dash.Dash(__name__) #dash obj server = app.server #flask obj app.config.update({ 'routes_pathname_prefix': '', 'requests_pathname_prefix': '' }) app.layout = serve_layout(hogehoge) if __name__=='__main__': app.run_server(debug=False)
index.pyの権限を705に編集する
.htaccessとindex.pyはこれ以上編集する必要はない.
この後app.pyをローカルで開発していく.
app.pyは単体で起動できる.
python app.py
ローカルで開発・動作確認した後,サーバへ送り,動作確認をする.
アプリで使うファイルについては適切に権限を設定し,URL指定アクセスで覗き見られないようにすること.
chmod 600 token.conf