CentOS 7下搭建Nginx+uWSGI+Flask

继续之前pycharm上写好的的flask项目

CentOS 7下搭建Nginx+uWSGI+Flask_第1张图片
首先能保证flask能正常在服务器上启动

方法的选取

可以查看到flask的官方文档http://docs.jinkan.org/docs/flask/
CentOS 7下搭建Nginx+uWSGI+Flask_第2张图片
试了一下独立容器,最后到要配置守护进程的时候发现Supervisor守护神不支持python3,centos7不支持Upstart。

选择uWSGI

找到的几篇可行的资料
https://www.linuxidc.com/Linux/2014-05/101529p2.htm
https://www.linuxidc.com/Linux/2016-09/134907.htm
http://www.nowamagic.net/academy/detail/1330334
首先在进入到flask之前配置好的python虚拟环境下
先安装uwsgi

pip install uwsgi

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

<uwsgi>
<pythonpath>.pythonpath>
<module>appmodule>
<callable>appcallable>
<socket>127.0.0.1:8000socket>
<master/>
<processes>4processes>
<memory-report/>
uwsgi>

其中个参数表示:

  • pythonpath表示项目目录,由于已经在虚拟环境下了,所以指向当前目录
  • module表示项目启动模块,如上例为app.py,这里就为app
  • callable表示flask项目的实例名称,上例代码中app = Flask(name),所以这里为app
  • socket表示和nginx通信的地址和端口,和nginx配置里的uwsgi_pass一致。
  • processes表示开启多少个子进程处理请求。

使用-x使用配置文件启动uwsgi:

uwsgi -x uwsgiconfig.ini

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

uwsgi -x uwsgiconfig.ini -d uwsgi.log

使用这个命令可以终止守护进程

killall -9 uwsgi

可能的报错

(venv) [root@Foehn flask]# uwsgi -x uwsgiconfig.ini
uwsgi: invalid option -- 'x'
getopt_long() error

安装libxml2*重新编译安装uwsgi即可

yum install libxml*

nginx

官网下载
直接下载.tar.gz安装包,地址:https://nginx.org/en/download.html
使用wget命令下载

wget -c https://nginx.org/download/nginx-1.10.1.tar.gz
tar -zxvf nginx-1.10.1.tar.gz
cd nginx-1.10.1

配置
其实在 nginx-1.10.1 版本中你就不需要去配置相关东西,默认就可以了。当然,如果你要自己配置目录也是可以的。
1.使用默认配置

./configure

编译安装

make
make install

查找安装路径:

whereis nginx

将安装路径添加到环境变量

vim ~/.bashrc

加上一句
路径即为whereis找到的路径

export PATH=$PATH:/usr/local/nginx/sbin/

保存退出

source ~/.bashrc

然后就可以直接使用命令

启动、停止nginx
nginx 
nginx -s stop
nginx -s quit
nginx -s reload
nginx -s quit:此方式停止步骤是待nginx进程处理任务完毕进行停止。
nginx -s stop:此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程。

里程碑

nginx默认在服务器上是80端口
CentOS 7下搭建Nginx+uWSGI+Flask_第3张图片

寻找一下nginx的配置文件并按照路径将其打开

find / -name nginx.conf
vim /usr/local/nginx/conf/nginx.conf

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

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

这里就完成了反向代理

最后

最后启动nginx和uwsgi的守护进程就好了
CentOS 7下搭建Nginx+uWSGI+Flask_第4张图片
可以看到经过nginx的反向代理,跳转到了flask项目

你可能感兴趣的:(Linux,flask)