在ubuntu上部署Flask应用程序的最快方法

时间:2016-11-23 09:21:58

标签: python ubuntu deployment flask

我知道flask deployment options,但对于我写的这样一个简单的烧瓶应用程序来说,所有这些选项对我来说似乎有些过分。它与flask自己的内置服务器一起工作得很好。

nw=$(echo $line | wc -w)
echo $line | cut -d ' ' -f$nw-

继承我的run.py文件

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

第一个问题是,一旦我退出ssh会话,服务器就会停止,因此我尝试使用一次性from kittapp import app if __name__ == '__main__': app.run(host=app.config['HOST'], port=app.config['PORT'], debug=app.config['DEBUG']) 作业cronat now将任务推送到后台命令。它工作正常,但第二个问题是几个小时后python进程(推送到bg)不再运行,webapp已关闭。

我知道我最终需要为此编写一个类似守护进程的启动脚本。只是想看看是否有任何其他简单但可靠的解决方案在ubuntu机器上部署烧瓶应用程序?

1 个答案:

答案 0 :(得分:0)

您可能正在寻找Supervisor

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是一个shell函数,而不是PATH中的可执行文件。在运行作业之前,主管不会提取您的~/.bash*~/.zsh*文件。它对它们一无所知。因此,workon将无法使用。相反,我们需要正确设置python路径以指向我们的venv的bin/目录。可以使用environment指令完成。

这是一个最小的Supervisor配置文件:

[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