美文网首页玩耍PythonPython 运维FLASK入门
Python日记——nginx+Gunicorn部署你的Flas

Python日记——nginx+Gunicorn部署你的Flas

作者: 饥渴计科极客杰铿 | 来源:发表于2016-09-04 16:07 被阅读1330次

    大家在学习python的时候常常都是输入

    python 文件名.py
    

    这样启动小脚本

    但实际应用中往往没有那么简单,因为通常都要多线程处理并发,处理头部,这时就需要nginx和Gunicorn了

    首先安装gunicorn

    pip install gunicorn
    

    然后在入口文件的app.run()加上

    from werkzeug.contrib.fixers import ProxyFix
    app.wsgi_app = ProxyFix(app.wsgi_app)
    

    from flask import Flask
    
    app = Flask(__name__)
    
    
    @app.route('/')
    def hello_world():
        return 'Hello World!'
    
    if __name__ == '__main__':
        from werkzeug.contrib.fixers import ProxyFix
        app.wsgi_app = ProxyFix(app.wsgi_app)
        app.run()
    
    

    然后命令行启动gunicorn

    最简单的启动方式是

    gunicorn 入口文件名:app
    

    默认是监听127.0.0.1:8000

    如果是要处理高并发则要开多个进程和修改监听端口的画

     gunicorn -w 4 -b 127.0.0.1:8000 入口文件名:app
    

    这样就可以启动4个进程同时处理HTTP请求,提高系统的使用效率及性能。
    还可以把端口8000改为其他

    这时你可以在本机的浏览器上访问127.0.0.1:8000,浏览器上就会出现Hello World!

    注意:如果是想通过外网访问的话就要把ip改为内网的ip

    之后配置nginx

    首先先备份配置
    输入命令

    sudo cp /etc/nginx/sites-available/default default.bak
    

    修改配置

    输入命令

    sudo nano /etc/nginx/sites-available/default
    

    把配置改为

    server {
        listen 80;
        server_name example.org; # 这是HOST机器的外部域名,用地址也行
    
        location / {
            proxy_pass http://127.0.0.1:8000; # 这里是指向 gunicorn host 的服务地址
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    
      }
    

    这样启动之后80端口就可以转发到8000端口了

    检查配置

    输入命令

    nginx -t
    

    若出现

    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful
    
    

    则配置成功

    重启nginx
    输入命令

    sudo service nginx restart
    

    在已经运行了Gunicorn的前提下,在浏览器访问127.0.0.1就会出现Hello World!了

    相关文章

      网友评论

      • Aengus:配置好后,在本地机可以运行,但服务器上没办法运行。启动gunicorn没有报错,不知道为什么。
      • c7b654338f99:如果可以把相关说明也加入就好很多,这样感觉像记流水账
        Aengus:@萧萧马鸣 流水账就很好呀。

      本文标题:Python日记——nginx+Gunicorn部署你的Flas

      本文链接:https://www.haomeiwen.com/subject/kzvlettx.html