最新消息:yaf表单扩展中新增加了浮点数、日期和集合的校验。php yaf框架扩展实践三——表单

centos 6.4下nginx+uwsgi+flask的运行环境搭建详细记录

Linux运用 9352浏览 5评论

以下的安装过程,笔者在centos 6.4实际配置成功过,记录起来供大家参考,有问题可以联系我。

1、安装nginx

安装nginx之前先要安装gcc编译器和相关工具,使用yum安装,非常方便。

$ sudo yum -y install gcc gcc-c++ make autoconf automake

nginx的一些模块需要第三方库的支持,例如gzip需要zlib,rewrite模块需要pcre库,ssl功能需要openssl库。直接使用yum安装就行了。

$ sudo yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel

前往nginx官网nginx.org下载最新的版本,笔者下载的是1.2.7的版本。

$ wget http://nginx.org/download/nginx-1.2.7.tar.gz

解压安装

$ tar -zxv -f nginx-1.2.7.tar.gz
$ cd nginx-1.2.7
$ ./configure
$ make
$ sudo make install

这里configure使用的都是默认的参数,可以根据自己的需要进行修改。可以使用./configure –help查看帮助说明。

启动nginx服务器

sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

其中/usr/local/nginx/sbin/nginx表示启动程序,这里用全路径更加直观,可以根据自己的习惯做软链接到系统路径。

使用浏览器访问http://127.0.0.1/,如果看到Welcome to nginx!的字样,就表示安装成功了。

2、安装uwsgi

先安装相关依赖python-devel、setuptools,libxml2-devel,直接用yum安装。如果是自行编译安装的python,可以不用安装python-devel。

$ sudo yum -y install python-devel python-setuptools libxml2-devel

前网官网http://projects.unbit.it/uwsgi/下载uwsgi,虽然页面都是英文的,但是不难找到到下载页面。

$ wget http://projects.unbit.it/downloads/uwsgi-1.9.tar.gz

解压安装:

$ tar -zxv -f uwsgi-1.9.tar.gz
$ cd uwsgi-1.9
$ python setup.py install

3、安装flask

前往官网http://flask.pocoo.org/下载flask。

$ wget http://pypi.python.org/packages/source/F/Flask/Flask-0.9.tar.gz

解压安装

$ tar -zxv -f Flask-0.9.tar.gz
$ cd Flask-0.9
$ sudo python setup.py install

新建flask项目,就一个程序文件app.py,内容如下:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello World!"

if __name__ == "__main__":
    app.run()

确保用flask自带的web服务器能够运行。

4、配置nginx和uwsgi

这个步骤是比较麻烦,但是理解原理后也不难。

uwsgi在nginx 1.2.7是标准模块,所以不需要安装。编辑nginx的配置文件,使其加载uwsgi。

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

修改完成后可以测试下配置文件是否没有错误。

$ sudo /usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf

配置完成之后,重新启动nginx。先找到nginx主进程编号:

$ ps -ef | grep nginx

笔者电脑上是13367,然后重新启动

$ sudo kill -HUP 13367

在flask的项目下新建一个配置文件app_config.xml,用来设置uwsgi相关的参数,一会uwsgi在启动时需要指明这个配置文件,内容如下:

<uwsgi>
     <pythonpath>/home/chenjiebin/web/flaskdemo</pythonpath>
     <module>app</module>
     <callable>app</callable>
     <socket>127.0.0.1:3031</socket>
     <master/>
     <processes>4</processes>
     <memory-report/>
</uwsgi>

其中个参数表示:

  • pythonpath表示项目目录
  • module表示项目启动模块,如上例为app.py,这里就为app
  • callable表示flask项目的实例名称,上例代码中app = Flask(__name__),所以这里为app
  • socket表示和nginx通信的地址和端口,和nginx配置里的uwsgi_pass一致。
  • processes表示开启多少个子进程处理请求。

启动uwsgi:

$ sudo /usr/local/bin/uwsgi -x /home/chenjiebin/web/flaskdemo/app_config.xml

其中-x参数表示加载的配置文件路径。

这时候在浏览器里访问http://localhost,看到输出Hello World!就大功告成了。

小提示:如果需要让uwsgi以守护进程的方式运行,使用-d参数并指明日志路径就可以了。

$ sudo /usr/local/bin/uwsgi -x /home/chenjiebin/web/flaskdemo/app_config.xml -d /var/log/uwsgi/uwsgi.log

小结

nginx和uwsgi之间的通信这里是使用端口进行通信,也可以使用socket文件。uwsgi的配置也可以使用其他的配置文件,不一定要用xml,这里就不再说明了。有什么一问题可以来信交流。

转载请注明:快乐编程 » centos 6.4下nginx+uwsgi+flask的运行环境搭建详细记录

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (5)

  1. location / {
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:3031;
    root html;
    index index.html index.htm;
    }
    请问下这一句加在哪儿?
    zhuge20082年前 (2015-12-28)回复
  2. 你好,非常感谢,按照您的步骤,我一步一步都做出来了。虽然还是有部分不理解,但是,我第一次,按照步骤做出来。谢谢。
    庞飞1年前 (2016-05-11)回复
  3. gem install bundler --no-ri --no-rdoc这一步报错了:
    ERROR: Could not find a valid gem 'bundler' (>= 0), here is why:
    Unable to download data from https://rubygems.org/ - Errno::ECONNRESET: Connection reset by peer - connect(2) (https://rubygems.org/latest_specs.4.8.gz)
    sss1年前 (2016-06-08)回复
    • 陈杰斌
      没有成功下载。
      建议翻墙试试
      陈杰斌1年前 (2016-06-08)回复