python开发web后台项目部署方式

python写的web后台项目的部署不像java直接丢到tomcat部署一样简单,目前比较流行的部署方式有nginx+uwsgi和ginx+gunicorn,如果只是提供后台接口服务,只用gunicorn也可以的。uwsgi和gunicorn是支持WSGI(Python Web Server Gateway Interface)协议的http服务器,gunicorn比uwsgi配置简单,文章用gunicorn方式来部署。

第一种:只用gunicorn部署

1.安装gunicorn:

pip3 install gunicorn

3.使用gunicorn启动服务

    3.1直接命令启动

gunicorn -w 1 -b 127.0.0.1:8080  app:app 
  
-w 1  #代表开启的工作进程数
-b 127.0.0.1:8090 #代表访问的服务地址,如果是外网访问,要绑定外网的地址,比如:http://10.3.211.23:8080
app:app #用pycharm工具创建flask项目,默认的入口文件是app.py

    3.2通过gunicorn的配置文件启动

在项目的根目录,与app.py同级下新建 gunicorn.py 文件(也可以用gunicorn.conf文件名,都是一样的)

import os

bind = '127.0.0.1:8080'  # 服务绑定访问的ip
workers = 1  # 开启的工作进程数,也可以用 multiprocessing.cpu_count()获取cpu个数
threads = 2  # 每个工作进程的线程数
daemon = 'false'  # 设置守护进程,将进程交给supervisor管理,在生产环境下可以打开,防止关闭服务器连接后程序挂掉
worker_class = 'gevent'  # 工作模式,默认sync,可以安装用gevent
worker_connections = 1000  # 最大客户端并发连接数,默认1000,只适用于eventlet,gevent工作模式
timeout = 30  # 超时时间,默认是30
backlog = 2048  # 最大挂起的连接数,默认是2048
debug = True  # 是否开启debug模式
loglevel = 'debug'  # 输入日志的级别
accesslog = 'logs/gunicorn_acess.log'  # 日志文件路径
errorlog = 'logs/gunicorn_error.log'  # 错误日志文件路径
access_log_format = '%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s" "%({X-Real-IP}i)s"'  # 日志记录的格式

    启动用:gunicorn -c gunicorn.py app:app    #需要用-c命令指定配置文件名

4.查看gunicorn进程

ps -ef|grep gunicorn #查看gunicorn的进程

5.重启gunicorn进程

kill -HUP 30080

6.结束gunicorn进程

kill -9 30000 #根据进程号杀死进程

也可以使用 CTRL+C 快捷键快速杀死gunicorn的进程

 

第二种:在gunicorn的基础上部署后用nginx做静态资源服务器


1.配置nginx的conf,在nginx.conf文件的server中修改配置:

    server {
        listen       8090;
        server_name  localhost;

        # 配置python部署的后台地址
        location ^~/backend{
            proxy_pass http://127.0.0.1:8000; # 动态请求转发到该地址下面
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

2.nginx配置proxy_pass的地址 http://127.0.0.1:8000,即是对应的启动的gunicorn服务地址,nginx作为动态代理请求地址到gunicorn

你可能感兴趣的:(python)