flask nginx+gunicorn部署应用(flask 112)

Ubuntu 上的准备
准备一下 python 环境。

sudo apt-get update sudo apt-get install python-dev python-pip python-virtualenv
然后安装 nginx

$ sudo apt-get install nginx
在 /var/www 目录下建立一个 myflask 的文件夹(你的项目目录),然后用 chmod 改一下权限

sudo mkdir /var/www/myflask sudo chmod 777 /var/www/myflask
注:当然你可以使用 nginx 的默认网站目录 /usr/share/nginx/html

然后用 scp 指令直接将本机上的 abc 项目传到服务器:

$ scp -r abc root@abc.com:/var/www/myflask
Gunicorn
安装 Gunicorn
Gunicorn 应该装在你的 virtualenv 环境下,关于 virtualenv 就不多说了,如果没用过那就赶快脑补吧。安装前记得激活 venv

(venv) pip install gunicorn 运行 Gunicorn (venv) gunicorn -w 4 -b 127.0.0.1:8080 wsgi:application
That's all! 它的安装就这么简单。不过这里得作一个解释。就是最后的那个参数 wsgi:application 这个是程序入口,我得写个小小的范例来说明一下:

新建一个 wsgi.py 的文件, 注意,这里和 Flask 项目中常用的 manage.py 引导脚本是没有半点毛关系的。(这是我笨,以前一直没分清被uwsgi搞糊涂了)

wsgi.py

from flask import Flask

def create_app():

这个工厂方法可以从你的原有的 __init__.py 或者其它地方引入。

app = Flask(name)
return app

application = create_app()

if name == 'main':
application.run()
好了,这个 wsgi:application 参数就很好理解了, 分两部:wsgi 就是引导用的 python 文件名称(不包括后缀/模块名)application 就是 Flask 实例的名称。这样 gunicorn 就会找到具体要 host 哪一个 flask 实例了。

从这里开始就可以体现 gunicorn 的好了,我们根本不用配什么配置文件的,一个指令就可以将它起动。

Nginx 的配置
关于 Nginx 我也就不详细讲了,我们就直奔主题,杀入 Nginx 的默认配置文件

sudo nano /etc/nginx/site-avalidable/default
暴力修改成为以下的内容

建议先备份一下 default 文件
sudo cp /etc/nginx/site-avalidable/default /etc/nginx/site-avalidable/default.bak

server {
listen 80;
server_name example.org; # 这是HOST机器的外部域名,用地址也行

location / {
    proxy_pass http://127.0.0.1:8080; # 这里是指向 gunicorn host 的服务地址
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

}
记得完成 nginx 需要重新起动 nginx 服务喔!

sudo service nginx restart
将 Gunicorn 作为服务运行
这就是最后一步了,我们在此将采用 UpStart 配置Flask程序作为服务程序在Linux起动时运行。首先建立起动配置文件:

sudo nano /etc/init/myflask.conf
然后加入如下配置

description "The myflask service"

start on runlevel [2345]
stop on runlevel [!2345]

respawn
setuid root
setgid www-data

env PATH= /var/www/myflask/venv/bin
chdir /var/www/myflask/

exec gunicorn -w 4 -b 127.0.0.1:8080 wsgi:application
OK 大功告成,启动 myflask 服务

sudo service myflask start
这里有一点必须补充的,请留意在 myflask.conf 中的

env PATH= /var/www/myflask/venv/bin
chdir /var/www/myflask/
这里所指向的地址就是你的项目路径和 virtualenv 的路径

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容