您的位置:首页 > 运维架构 > Nginx

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

2016-01-27 12:13 751 查看


选择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了

常见问题

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 uwsgi
;
sudo kill -s HUP $(PID)



參考资料

1. Centos 6.4下nginx+uwsgi+flask的执行环境搭建
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: