ubuntu(Flask + Gunicorn + Nginx 部署)

Ubuntu 上的准备

准备一下 python 环境。html

$ sudo apt-get update $ sudo apt-get install python-dev python-pip python-virtualenv

而后安装 nginxpython

$ sudo apt-get install nginx

在 /var/www 目录下创建一个 myflask 的文件夹(你的项目目录),而后用 chmod 改一下权限nginx

$ sudo mkdir /var/www/myflask $ sudo chmod 777 /var/www/myflask

注:固然你可使用 nginx 的默认网站目录 /usr/share/nginx/htmlsql

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

$ scp -r abc root@abc.com:/var/www/myflask

Gunicorn

安装 Gunicorn

Gunicorn 应该装在你的 virtualenv 环境下,关于 virtualenv 就很少说了,若是没用过那就赶快脑补吧。安装前记得激活 venvflask

(venv) $ pip install gunicorn

运行 Gunicorn

(venv) $ gunicorn -w 4 -b 127.0.0.1:8080 wsgi:application

That's all! 它的安装就这么简单。不过这里得做一个解释。就是最后的那个参数 wsgi:application 这个是程序入口,我得写个小小的范例来讲明一下:ubuntu

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

# 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 的好了,咱们根本不用配什么配置文件的,一个指令就能够将它起动。app

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 的路径

相关文章
相关标签/搜索