Uda*_*day 20 python celery flask python-2.7
我有一个烧瓶应用程序,我目前正以下列方式启动:
#phantom.py
__author__ = 'uruddarraju'
from phantom.api.v1 import app
app.run(host='0.0.0.0', port=8080, debug=True)
当我运行这个脚本时,它通过打印成功执行:
loading config from /home/uruddarraju/virtualenvs/PHANTOMNEW/Phantom/etc/phantom/phantom.ini
* Running on http://0.0.0.0:8080/
但它永远不会返回,如果我执行CTRL-C,服务器就会停止.我正在尝试将其部署到生产环境,并希望在后台运行此启动,只要服务器启动,该进程就会保持运行状态.
做这个的最好方式是什么?
Jor*_*ley 17
$ python phantom.py &
可能是让它在后台运行的最简单方法.那说你不应该使用app.run()服务器为你的烧瓶应用程序服务,如果你正在将它移植到生产中,因为@LukasGraf提到(以及我相信他们的文档)
Rap*_*hDG 15
我最喜欢的生产方式是将烧瓶与uwsgi和nginx结合起来以保持持久性.以下是一些很好的设置说明,可帮助您入门:http://www.markjberger.com/flask-with-virtualenv-uwsgi-nginx/
JIST:
首先确保您的vps具有最新更新:
sudo apt-get update
sudo apt-get upgrade
现在安装python和virtualenv:
sudo apt-get install build-essential python-dev python-pip
sudo pip install virtualenv
为您的网站创建一个文件夹:
sudo mkdir -p /var/www/mysite
sudo chown -R <your user id> /var/www/mysite
cd /var/www/mysite
设置virtualenv并安装flask:
virtualenv .env --no-site-packages
source .env/bin/activate
pip install flask
将烧瓶应用程序放在此文件夹中.确保您的主机设置为0.0.0.0并且您的应用程序位于if下__name__ == '__main__':.如果你的应用程序在一个函数中,uwsgi将无法调用它.
现在是使用烧瓶开发服务器测试您的应用程序的好时机,看看到目前为止一切是否正常.如果一切顺利,请安装nginx和uwsgi:
deactivate
sudo apt-get install nginx uwsgi uwsgi-plugin-python
接下来,我们必须为nginx创建一个套接字文件,以便与uwsgi进行通信:
cd /tmp/
touch mysite.sock
sudo chown www-data mysite.sock
通过将mysite.sock的所有者更改为www-data,nginx将能够写入套接字.现在我们要做的就是为nginx和uwsgi添加配置文件.首先删除nginx的默认配置:
cd /etc/nginx/sites-available
sudo rm default
创建一个新的配置文件mysite并添加以下内容:
server {
    listen 80;
    server_tokens off;
    server_name www.mysite.com mysite.com;
     location / {
         include uwsgi_params;
         uwsgi_pass unix:/tmp/mysite.sock;
     }
     location /static {
         alias /var/www/mysite/static;
     }
     ## Only requests to our Host are allowed
     if ($host !~ ^(mysite.com|www.mysite.com)$ ) {
        return 444;
     }
}
为了启用站点,我们必须将配置文件链接到/ etc/nginx/sites-enabled /:
sudo ln -s /etc/nginx/sites-available/mysite /etc/nginx/sites-enabled/mysite
uwsgi的过程类似.创建文件/etc/uwsgi/apps-available/mysite.ini并添加以下内容:
[uwsgi]
vhost = true
socket = /tmp/mysite.sock
venv = /var/www/mysite/.env
chdir = /var/www/mysite
module = app
callable = app
Module是python脚本的名称,callable是flask实例的名称.因此,如果您的烧瓶站点位于名为mysite.py的文件中,如下所示:
from flask import Flask
my_app = Flask(__name__)
@my_app.route('/')
def hello_world():
    return 'Hello World!'
if __name__ == '__main__':
    my_app.run(host='0.0.0.0')
你的mysite.ini文件将是:
module = mysite
callable = my_app
将配置文件链接到enabled-apps文件夹:
sudo ln -s /etc/uwsgi/apps-available/mysite.ini /etc/uwsgi/apps-enabled/mysite.ini
最后,重启nginx和uwsgi:
sudo service nginx restart
sudo service uwsgi restart