用uWSGI和Nginx部署Flask项目

概况

在开发过程中,我们一般直接用Python命令直接运行Flask程序。这样的运行只适合我们开发,方便我们调试。一旦程序部署到线上,这样运行的Flask程序性能会比较低。可以采用uWSGI+Nginx进行部署。

uWSGI

在部署之前,我们得先了解几个概念

  • wsgi
    web应用程序之间的接口。它的作用就像是桥梁,连接在web服务器和web应用框架之间。

  • uwsgi
    是一种传输协议,用于定义传输信息的类型。

  • uWSGI
    是实现了uwsgi协议WSGI的web服务器。

部署

首先准备一个flask程序,名字run.py

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return '部署'

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

安装uWSGI

 pip install uwsgi

在项目的目录创建一个uwsgi.ini的配置文件

[uwsgi]
#配合nginx使用
socket = 127.0.0.1:8000
#项目路径 /Users/xiaoyuan/Desktop/flask_test
chdir           = 自己项目路径
#wsgi文件 run就是flask启动文件去掉后缀名 app是run.py里面的Flask对象 
module          = run:app
#指定工作进程
processes       = 4
#主进程
master          = true
#每个工作进程有2个线程
threads = 2
#指的后台启动 日志输出的地方
daemonize       = uwsgi.log
#保存主进程的进程号
pidfile = uwsgi.pid
#虚拟环境环境路径
virtualenv = /Users/xiaoyuan/.virtualenvs/flask_test

然后配置Nginx,找到Nginx的配置文件nginx.conf,在http块下加上下面代码

server {
	# 监听端口
    listen 80;
    # 监听ip 换成服务器公网IP
    server_name 127.0.0.1;
 
	#动态请求
	location / {
	  include uwsgi_params;
	  uwsgi_pass 127.0.0.1:8000;
	}
	#静态请求
	location /static {
		alias /Users/xiaoyuan/Desktop/flask_test/static;

	}
}

启动

启动uWSGI

uwsgi --ini uwsgi.ini

启动Nginx

/etc/init.d/nginx start

然后访问Nginx监听的IP,由于我在本地部署,就直接访问http://127.0.0.1:80/

在这里插入图片描述

其他命令

  • uwsgi重启
uwsgi --reload uwsgi.pid
  • uwsgi停止
uwsgi --stop uwsgi.pid
uWSGINginx是一种常见的Flask应用程序部署组合。uWSGI是一种Web服务器,它可以在后台运行Python应用程序,并提供了许多高级功能,如负载均衡、缓存、网关接口等。Nginx是一种反向代理服务器,它可以将传入的请求转发给uWSGI服务器,并负责处理静态文件、SSL加密等。 下面是一些简单的步骤,可以帮助你使用uWSGINginx部署Flask应用程序: 1. 安装uWSGINginx 在Linux系统上,你可以使用包管理器来安装uWSGINginx。例如,在Ubuntu上,你可以运行以下命令: ``` sudo apt-get update sudo apt-get install nginx uwsgi uwsgi-plugin-python3 ``` 2. 创建Flask应用程序 在你的项目目录中创建一个名为`app.py`的文件,并编写Flask应用程序代码。例如: ```python from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello, World!' ``` 3. 创建uWSGI配置文件 在你的项目目录中创建一个名为`uwsgi.ini`的文件,并编写uWSGI配置。例如: ```ini [uwsgi] module = app callable = app master = true processes = 4 socket = /tmp/uwsgi.sock chmod-socket = 666 vacuum = true die-on-term = true ``` 其中,`module`参数指定了Flask应用程序的Python模块名,`callable`参数指定了Flask应用程序的实例名。`socket`参数指定了uWSGI服务器监听的Unix套接字路径,`processes`参数指定了uWSGI服务器的工作进程数。 4. 测试uWSGI服务器 在命令行中,进入你的项目目录,并运行以下命令启动uWSGI服务器: ``` uwsgi --ini uwsgi.ini ``` 如果一切正常,你应该能够通过访问Unix套接字路径来测试uWSGI服务器: ``` curl http://localhost/tmp/uwsgi.sock ``` 你应该看到Flask应用程序的输出。 5. 创建Nginx配置文件 在Nginx配置文件中添加以下内容: ``` server { listen 80; server_name yourdomain.com; location / { include uwsgi_params; uwsgi_pass unix:///tmp/uwsgi.sock; } } ``` 其中,`listen`参数指定了Nginx服务器监听的端口和IP地址,`server_name`参数指定了该虚拟主机的域名或IP地址。`location`块指定了请求转发规则,`uwsgi_pass`参数指定了uWSGI服务器监听的Unix套接字路径。 6. 启动Nginx服务器 在命令行中,运行以下命令启动Nginx服务器: ``` sudo service nginx start ``` 如果一切正常,你应该能够通过访问你的域名或IP地址来访问Flask应用程序。 注意:如果你使用的是Ubuntu 18.04或更高版本,你需要将Nginx配置文件中的`include uwsgi_params;`改为`include /etc/nginx/uwsgi_params;`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小_源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值