2016-11-23 2 views
-1

私はflask deployment optionsを知っていますが、それらのオプションはすべて、私が書いたそのような単純なフラスコのアプリのために私にとって過酷なようです。それはフラスコ自身の組み込みサーバーでうまく動作します。ubuntuにFlaskアプリケーションを配備する最も速い方法

workon kittapp 
python run.py // runs the webserver at configured port, everything's fine 

HERESに私は私のsshセッションを終了し、私は一度だけを使用してバックグラウンドにタスクをプッシュしようとしたとして、最初の問題がある

from kittapp import app 

if __name__ == '__main__': 
    app.run(host=app.config['HOST'], port=app.config['PORT'], debug=app.config['DEBUG']) 

は、サーバは、すぐに停止し、私のrun.pyファイルcronジョブ、at nowまたはnohupコマンド。それはうまく動作しますが、2番目の問題は、数時間後に(bgにプッシュされた)pythonプロセスがもう実行されておらず、webappがダウンしていることです。

私はデーモンのような起動スクリプトを書く必要があることを知っています。 ubuntuマシンにフラスコアプリケーションを配備するための他のシンプルで信頼性の高いソリューションがあるかどうかを見たいだけでしたか?

+0

チェックログは、なぜサーバーダウンし、より良いです。 –

+0

フラスコアプリのログはどこで確認できますか? –

+0

nohup.outまたはnohupを実行するときに定義する必要があるもの –

答えて

0

Supervisorを探している可能性があります。

スーパーバイザは、Unixライクなシステム用のプロセス制御ツールです。それはちょうどconfig filesを使用してデーモンのような監督されたプロセスを造り、管理する使いやすいインタフェースを提供します。

あなたのFlaskアプリケーション用のシンプルな設定ファイルを作成し、それをSupervisorに追加して起動すると完了です。

# Install supervisor 
sudo apt install supervisor -y # Or pip install supervisor 

# Start supervisor service 
sudo service supervisor start 

# Create your config file 
# I'll add a sample kittapp.conf later on... 
sudo vim /etc/supervisor/conf.d/kittapp.conf 

# Add and start your job 
sudo supervisorctl add kittapp 
sudo supervisorctl start kittapp 

簡単右:ここではどのようにですか?しかし、あなたがいるのは、virtualenvsを利用しているときにちょっとした問題があります。 workonはシェル関数であり、PATHでは実行可能ではありません。スーパーバイザは、ジョブを実行する前に~/.bash*または~/.zsh*ファイルのソースを取得しません。それはまったく分かりません。その結果、workonは利用できません。代わりに、私たちはvenvのbin/ディレクトリを指すようにpythonパスを正しく設定する必要があります。これはenvironment指示文を使用して行うことができます。ここで

は、最小限のスーパーバイザーの設定ファイルです:

[program:kittapp] 
environment=PATH="/home/user/virtualenvs/kittapp/bin" # Point it to the bin/ directory of your venv 
command=python run.py         # Here's the actual command that supervisor needs to run in order to start the server 
directory=/var/www/kittapp        # Instructs supervisor to cd into this directory before running the command 
stdout_logfile=/var/www/kittapp/logs/supervisor.log  # Write logs to this file 
redirect_stderr=true          # Redirect errors to supervisor output, so you'll have your errors in the log file 

まあ、それはそれで全部です。

そして、あなたは、これがスーパーバイザーにレッスンをLaracastsを見を持っている場合があります:スーパーバイザまたは類似した何かでそれをラップする
https://laracasts.com/lessons/supervise-this

+0

あなたの答えに感謝します。確かめます。 –

+0

がスーパーバイザーで起動しています。ビデオリンクありがとう。それが走り続けるかどうかを確認できます。 –

+0

いいえ! **本番環境では、devサーバーを実行しないでください。**特に安定しているわけではありません。これは悪いアドバイスです。 – davidism

関連する問題