• Ubuntu下nginx+uwsgi+flask的执行环境搭建


    选择web framwork是个非常艰难的事情, 主要分为轻量级和重量级框架. 因为没有搭建站点这样的须要, 所以回避SSH, Django这样的框架, 而选择一个轻量级框架. 自己也比較青睐python这门语言, 就选择了flask框架, nginx代理server享誉盛名, 所以拿来使用咯.

    一. 开发环境搭建

    採用离线安装方式, ubuntu开发环境(centos等环境类似)

    nginx

    安装

    $ wget http://nginx.org/download/nginx-1.6.0.tar.gz    #仅784k
    $ cd nginx-1.6.0.tar.gz
    $ tar -zxvf nginx-1.6.0.tar.gz 
    $ ./configure
    $ make
    $ sudo make install
    

    经常使用命令

    启动: sudo /usr/local/nginx/sbin/nginx [-c nginx.conf]
    重新启动: sudo /usr/local/nginx/sbin/nginx -s reload
    关闭: sudo /usr/local/nginx/sbin/nginx -s quit

    验证安装启动成功

    curl localhost显示welcome的话就OK了

    常见问题

    1. port号被占用:
    sudo netstat -tulpn | grep 80
    sudo kill -s (PID)
    

    uwsgi

    安装

    wget http://projects.unbit.it/downloads/uwsgi-2.0.5.1.tar.gz  #752k
    sudo python setup.py install
    

    验证成功

    /usr/bin/uwsgi -h 出现帮助提示即可了.

    flask

    安装

    wget https://pypi.python.org/packages/source/F/Flask/Flask-0.10.1.tar.gz
    sudo python setup.py install
    

    验证成功

    flask.py

    from flask import Flask
    app = Flask(__name__)
    
    @app.route("/")
    def hello():
        return "Hello World!"
    
    if __name__ == "__main__":
        app.run()
    

    python flask.py, 訪问curl 127.0.0.1:5000成功就可以

    mysql

    sudo apt-get install mysql-server, 使用mysql -u root -p保证登陆成功就可以.

    python mysql组件: sudo apt-get install python-mysqldb

    二. nginx和uwsgi配置

    nginx本身仅仅能调用静态文件, 它须要依赖网关协议文件来调用脚本. uwsgi是nginx的标准模块, 用于调用其他脚本.

    改动nginx的配置文件conf/nginx.conf以指向uwsgi

    location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:5000;
        root   html;
        index  index.html index.htm;
    }
    

    改动uwsgi文件, 配置脚本文件app_config.xml, 即执行的文件名称以及应用名(nginx, uwsgi和app间须要通过socket进行交互)

    <uwsgi>
         <pythonpath>/home/chenjiebin/web/flaskdemo</pythonpath>
         <module>flask</module>
         <callable>app</callable>
         <socket>127.0.0.1:5000</socket>
         <master/>
         <processes>4</processes>
         <memory-report/>
    </uwsgi>
    
    • pythonpath表示项目文件夹
    • module表示项目启动模块,如上例为app.py,这里就为app
    • callable表示flask项目的实例名称。上例代码中app = Flask(name),所以这里为app
    • socket表示和nginx通信的地址和port,和nginx配置里的uwsgi_pass一致。
    • processes表示开启多少个子进程处理请求。

    三. 执行

    启动nginx

    sudo /usr/local/nginx/sbin/nginx 将默认调用conf/nginx.conf文件

    启动uwsgi

    前台程序 sudo /usr/local/bin/uwsgi -x $(WD)/app_config.xml

    deamon程序: sudo /usr/local/bin/uwsgi -x $(WD)/app_config.xml -d /var/log/uwsgi/uwsgi.log

    关闭应用与重部署

    • nginx.conf发生变化: nginx -s reload会重载配置文件
    • python脚本发生变化: 须要重新启动uwsgi
      • ps aux | grep uwsgisudo kill -s HUP $(PID)

    參考资料

    1. Centos 6.4下nginx+uwsgi+flask的执行环境搭建


  • 相关阅读:
    结对-四则运算-最终程序
    结对- 四则运算器-结对项目总结
    课后作业-阅读任务-阅读提问-3
    课后作业-现代软件工程-阅读笔记
    软件工程课程总结
    团队-学生成绩管理一阶段互评
    结对-英文词频检测程序-测试过程
    团队-学生成绩管理-项目进度
    团队-学生成绩管理-模块开发过程
    eclipse下的文件路径问题
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5162801.html
Copyright © 2020-2023  润新知