目前,很多Python的web框架,如Flask,Django等,在生产环境一般是通过web服务器(比如Apache HTTPd,Nginx)+uwsgi构成的,本篇主要是讲解这个环境的搭建过程。本机IP:192.168.42.15。机器名:template。我们预计建两个demo,一个用正常的80端口,一个用8080端口,两个demo的工作目录分别是/srv/demo1,/srv/demo2。由于我们只是在内网测试,就不采用域名访问这两个demo了。

安装Nginx:

首先,我们需要安装epel软件仓库:

接下来安装Nginx:

epel上面的nginx是最新的稳定版1.10.2,非常好用,博主一般不推荐自己编译的版本。

把Nginx加入开机启动:

防火墙把80和8080端口打开:

安装uwsgi:

把uwsgi加入开机启动:

安装flask:

正式配置阶段

建立两个demo的工作目录:

改变下所有者:

设置下selinux上下文:

分别cd到demo1文件夹中,建立一个示例文件,vim test1.py,内容如下:

再进入demo2目录,vim test2.py,把上面代码的输出内容改成“This is demo2 site!”便于区分。

新建两个配置文件:
vim /etc/uwsgi.d/demo1.ini,内容如下:

这里的socket权限设置为666主要是socket本身的属主是uwsgi用户,需要被nginx读写,所以我们设置了666权限。接下来改变下次配置文件的属主:

生成下日志文件:

再建一个配置文件vim /etc/uwsgi.d/demo2.ini,把上述配置文件中的demo1,test1,改成demo2,test2,即可,权限也按照这个原理改变下。

新建nginx虚拟主机vim /etc/nginx/conf.d/demo1.conf

再生成一个虚拟主机vim /etc/nginx/conf.d/demo2.conf

注意,我们这里没有通过域名主机头来访问测试网站,直接用ip和端口号来限制访问。如果你有域名,或者通过修改hosts文件,也可以通过域名来访问测试网站,有域名的话,就不用单独设置8080的端口了,统一用80端口即可。

分别打开http://192.168.42.15/和http://192.168.42.15:8080/,可以看到我们期待的内容了。

补充内容:如果我们的web程序不仅仅是python程序,还有类似js,css,jpg等静态内容,可以再nginx配置中配置动静分离,以提高性能。例如,如果你的图像文件统一放在了demo1下的images文件夹来,所有请求中以/images路径请求的,我们可以这样添加配置:

或者用别名可以这样处理:

因为images文件夹本来就在默认的root目录下,所以此处的root和alias路径其实不是必须的。

如果想对特定的文件,例如js,css文件进行配置,可以这样:

location后面跟~,代表后面跟的是一个正则表达式,且区分大小写,~*表示后面跟的是不区分大小写的正则表达式。如果location下规则较多的话,注意规则的先后顺序。

 

CentOS7下搭建Nginx+uWSGI+Flask教程
Tagged on:             

发表评论

电子邮件地址不会被公开。 必填项已用*标注