nginx+uwsgi+flask在linux服务器上部署

1、nginx的安装

1.1、下载

官网地址:nginx.org/en/download.h

Nginx官网提供了三个类型的版本
Mainline version:Mainline 是 Nginx 目前主力在做的版本,可以说是开发版
Stable version:最新稳定版,生产环境上建议使用的版本
Legacy versions:遗留的老版本的稳定版

nginx+uwsgi+flask在linux服务器上部署

这里我以linux环境为例,咱们下载Stable version

nginx+uwsgi+flask在linux服务器上部署

1.2、安装需要的环境

1.需要安装gcc环境

centos版本:

yum install gcc-c++

ubuntu版本: ununtu版本的将yum换成 apt-get即可,例

apt-get install gcc-c++

2 zlib

zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。

yum install -y zlib zlib-devel

3 openssl

OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,

并提供丰富的应用程序供测试或其它目的使用。

nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。

yum install -y openssl openssl-devel

1.3、安装过程

由于在服务器上安装可能会有网络问题,所以我们现在本机下载好,通过xftp上传到服务器上,下面我们先下载俩个工具

1.3.1、XShell和XFTP的安装

Xshell是一款远程连接linux服务器的软件,下载地址:

家庭/学校免费 – NetSarang Website (xshell.com)

nginx+uwsgi+flask在linux服务器上部署

然后去邮箱查看下载地址,点击下载,

nginx+uwsgi+flask在linux服务器上部署

nginx+uwsgi+flask在linux服务器上部署

点击即可下载,不要安装在c盘,其他默认配置即可。

好现在我们正式开始操作:

打开XFTP:

nginx+uwsgi+flask在linux服务器上部署

好的连接成功,首先我们先创建一个文件夹放置安装包,双击进入文件夹

nginx+uwsgi+flask在linux服务器上部署

把刚才下载的nginx文件直接CTRL+C、CTRL+V复制到上面创建的那个文件夹

nginx+uwsgi+flask在linux服务器上部署

然后打开XShell,

nginx+uwsgi+flask在linux服务器上部署

nginx+uwsgi+flask在linux服务器上部署

连接成功后,进入刚才我们创建的文件夹,

cd /mypath

如果不记得文件名字可以输入

ls

nginx+uwsgi+flask在linux服务器上部署

开始解压

tar zxvf nginx-1.22.0.tar.gz

编译和安装

cd /nginx-1.22.0
./configure
make && make install

安装成功的话会在/usr/local/下出现一个新的目录 nginx,根据需要修改此目录下的配置。

启动

cd /usr/local/nginx/sbin

./nginx

查看是否启动

ps -aux | grep nginx

补充

systemctl start nginx//启动nginx
systemctl restart nginx//重启nginx
systemctl stop nginx//关闭nginx

2、Uwsgi的安装

2.1、uwsgi安装

直接使用pip管理安装(如果没有下载python,可以自己下载,这里不介绍)

pip3 install uWSGI

2.2、uwsgi的配置

将你的flask项目导入服务器,进入文件夹,在app.py的同级目录下创建uwsgi.ini文件

nginx+uwsgi+flask在linux服务器上部署

右键使用记事本打开,并写入下面这段代码:

[uwsgi]
socket=127.0.0.1:5000    #  启动程序时所使用的地址和端口,通常在本地运行flask项目,
chdir = /home/flaskproject/          #  项目目录
wsgi-file = app.py     # flask程序的启动文件,通常在本地是通过运行  python manage.py         runserver 来启动项目的
callable = app             #  这个是程序内为flask.FLASK赋值的变量名,一般命名为app
processes = 4          #  处理器个数,进程个数
threads = 2            #  线程个数
stats = 127.0.0.1:9191     #  获取uwsgi统计信息的服务地址
pidfile = uwsgi.pid        #  保存pid信息,方便停止服务和重启的时候用
daemonize=flaskweb.log  #  后台运行时记录uwsgi的运行日志
lazy-apps = true             #  当需要连接cassandra时,uwsgi无法启动服务,可以使用该选项设置
master-fifo = /opt/mt-search/web-service/mfifo   # 使用chain-reloading 逐个work重启,服务不中断, 命令是 echo c > mfifo
touch-chain-reload = true

详细配置可参考下面这篇文章:

uWSGI的安装及配置详解 – 知乎 (zhihu.com)

3、nginx与uwsgi进行通信

第2步我们队uwsgi进行了配置,但是不能进行访问,所以我们需要让nginx和uwsgi进行通信,一般选用socket进行通信,还有几种情况这里就不一一介绍了,可以参考上面那篇文章。

3.1、nginx的配置

进入/usr/local/nginx/conf文件夹,一般都在这个文件夹,找到nginx.conf文件

nginx+uwsgi+flask在linux服务器上部署

打开,编辑,找到http下面的server,默认端口为80,这里我们为了不混淆,所以我们自己创建一个server

 server {
        listen       8888;
        server_name  localhost;

        location / {
            include /usr/local/nginx/conf/uwsgi_params;
            uwsgi_pass  127.0.0.1:5000;
       }
    }

其中listen是访问uwsgi的端口,可以自行选择,include和uwsgi_pass都是固定参数,

include为运行uwsgi时自动产生的一个文件,默认路径为/usr/local/nginx/conf/uwsgi_params

uwsgi_pass 为之前设置的socket端口对应的端口,需要保持一致保存重启nginx

启动uwsgi

uwsgi --ini uwsgi.ini             // 启动
uwsgi --reload uwsgi.pid   // 重启

到此我们可以访问http://+服务器ip+:8888(端口号)来访问后端

4、问题发现

4.1、安装nginx后访问不到欢迎界面

解决方法

nginx+uwsgi+flask在linux服务器上部署

4.2、配置完成后无法访问后端

可以查看uwsgi的chdir参数,看是不是路径写错了,写路径时要用绝对路径,不要带/root。

Original: https://blog.csdn.net/qq_56688614/article/details/126807370
Author: 今朝.122
Title: nginx+uwsgi+flask在linux服务器上部署

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/744951/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球