zoukankan      html  css  js  c++  java
  • nginx和flask安装与配置

    网上的教程很垃圾,现自己写一份

    其实我也写的很垃圾,同事怎么也搭不起环境,原因是如果安装好nginx,那么nginx和uwsgi之间用socket通信,文章中的

     uwsgi --http :5000  --ini uwsgi_conf.ini -d ./uwsgi.log --pidfile=uwsgi.pid不应该去盲目测试,应该用

    uwsgi --ini uwsgi_conf.ini -d ./uwsgi.log启动uwsgi

    一、安装uwsgi,安装之前应该有python2.7,还有安装了pip,之前要用tensorflow和syntaxnet,环境已经有了。
        sudo pip install uwsgi
        安装flask
        sudo pip install flask


    二、我们写一个test.py的测试程序,放在自己的用户下也行,比如我放在py用户下

    py@ubuntu:~$ ls
    Desktop           ma        Public             test.py         uwsgi.pid
    Documents         models    syntaxnet-wrapper  test.pyc        Videos
    Downloads         Music     Templates          tfsegfault.txt
    examples.desktop  Pictures  tensorflow         uwsgi_conf.ini

    python程序内容

    #coding=utf-8
    from flask import Flask


    app = Flask(__name__)

    @app.route('/')
    def index():
        return 'Hello World!'

    if __name__ == '__main__':
        app.run(host="127.0.0.1", port=5000,debug=True)



    以下粗体先不要测试,否则从nginx到uwsgi跑不能!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    三、使用http协议启动uwsgi

    先编写一个uwsgi_conf.ini文件,内容如下:


    [uwsgi]
    socket = 127.0.0.1:5000  
    processes = 4   
    threads = 2
    master = true
    pythonpath = /home/py/test
    module = test
    callable = app
    memory-report = true


    应用程序要托管,需要告诉uwsgi应用程序的位置,用pythonpath = /home/py/test指明当前应用程序的项目路径,module指明uwsgi需要托管的主程序文件名,callable就是在应用程序中指明的uwsgi需要调用的应用程序,在程序中是
    app = Flask(__name__),因此callable指定为app. socket是uwsgi 进行socket通信的端口.
    执行命令:

        uwsgi --http :5000  --ini uwsgi_conf.ini -d ./uwsgi.log --pidfile=uwsgi.pid

    –http指定用5800端口启动http协议

    –ini 指定上述的启动配置文件

    -d指定uwsgi的log,方便我们调试

    –pidfile将启动的进程号写到uwsgi.pid文件中,方便我们在需要停止服务器时kill掉

    启动后查看uwsgi.log,如果一切正常,就在浏览器内访问:
    http://127.0.0.1:5800
    会输出hello world,表明此时uwsgi工作正常。

    再以socket形式(默认),启动uwsgi:

    uwsgi --ini uwsgi_conf.ini -d ./uwsgi.log

    socket端口为配置文件中的端口:5000.
    在浏览器内访问:
    http://127.0.0.1:5000
    会输出hello world。


    四、安装nginx
        sudo pip install nginx(此命令有可能失败,)

        sudo apt-get -y install nginx

    简间的管理命令
        sudo nginx -t
        sudo service nginx stop
         sudo service nginx start


        cd /etc/nginx/sites-available
        cat default

    server {
            listen       8888;
            server_name  localhost;
            location / {
                include uwsgi_params;
                uwsgi_pass  127.0.0.1:5000;
                }
            }

    以上是我修改的default文件,改完后
        sudo nginx -s reload


    访问http://localhost:8888,应该输出 hello world


    五、uwsgi的停止和启动

    重启uwsgi

    先找到指定端口的进程

    (ma) py@ubuntu:~$ sudo netstat -ap | grep 5000
    tcp        0      0 localhost:5000          *:*                     LISTEN      21458/uwsgi     

    结束进程
     kill -9   21458
     
    启动uwsgi
    uwsgi --ini uwsgi_conf.ini -d ./uwsgi.log






  • 相关阅读:
    .NET互操作技术杂谈
    VS2008 Remote Debug HOW TO
    Entity Framework一对多关系或一对一关系删除子对象的方法
    Associations in EF Code First: Part 1 – Introduction and Basic Concepts
    如何管理Entity Framework中得事务
    在asp.net mvc3中编译视图文件
    entity framework中对关系使用默认规则与配置
    使用Entity Framework时动态生成lamda表达式
    asp.net mvc 身份验证中返回绝对路径的ReturnUrl
    Entity Framework 事务处理SaveChanges(false)
  • 原文地址:https://www.cnblogs.com/herosoft/p/8134337.html
Copyright © 2011-2022 走看看