使用waitress与nginx在腾讯云上进行flask项目部署

2023-12-02 15:20

本文主要是介绍使用waitress与nginx在腾讯云上进行flask项目部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.首先介绍一下waitress与nginx是啥,

  1. Waitress:

    • 类别: Waitress 是一个用于 Python Web 应用程序的 WSGI(Web Server Gateway Interface)服务器。WSGI 是 Python Web 应用程序和 Web 服务器之间的标准接口,允许开发人员使用不同的框架编写 Web 应用程序,而不用担心与特定的服务器兼容性问题。
    • 用途: Waitress 主要用于运行 Python Web 应用程序,它可以作为一个独立的服务器来提供 Web 服务。
  2. Nginx:

    • 类别: Nginx 是一个高性能的开源 Web 服务器,也可以用作反向代理服务器、负载均衡器和 HTTP 缓存。
    • 用途: Nginx 主要用于托管静态内容、处理反向代理以及负载均衡。它是一个轻量级、高度可定制的服务器,被广泛用于提高 Web 应用程序的性能和可用性。

简而言之,Waitress 是一个专注于运行 Python Web 应用程序的服务器,而 Nginx 是一个通用的高性能 Web 服务器,适用于托管各种类型的 Web 内容和服务。在一些场景中,你可能会将 Waitress 与 Nginx 结合使用,其中 Nginx 充当反向代理服务器,而 Waitress 处理 Python Web 应用程序的请求。这样的组合可以充分利用 Nginx 的高性能和 Waitress 的专业性。

2.为什么使用Waitress而不是其他的服务器,例如uWSGI,gunicorn

这与我的开发环境与生产环境有关,我使用的环境皆是windows,而当我试图在windows上安装uWSGI,gunicorn时出现了错误,修改到最后还是放弃了这个方案

uWSGI的错误出现在安装它的时候

C:\Users\Administrator>pip install uwsgi -i https://pypi.tuna.tsinghua.edu.cn/si
mple
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting uwsgiUsing cached https://pypi.tuna.tsinghua.edu.cn/packages/79/73/b5def500729e134d
1cb8dfc334e27fa2e9cfd4e639c1f60c6532d40edaed/uwsgi-2.0.23.tar.gz (810 kB)Installing build dependencies ... doneGetting requirements to build wheel ... errorerror: subprocess-exited-with-error× Getting requirements to build wheel did not run successfully.│ exit code: 1╰─> [19 lines of output]Traceback (most recent call last):File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\
site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 353,in <module>main()File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\
site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 335,in mainjson_out['return_val'] = hook(**hook_input['kwargs'])File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\
site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 118,in get_requires_for_build_wheelreturn hook(config_settings)File "C:\Users\Administrator\AppData\Local\Temp\2\pip-build-env-m26e9hf4
\overlay\Lib\site-packages\setuptools\build_meta.py", line 325, in get_requires_
for_build_wheelreturn self._get_build_requires(config_settings, requirements=['wheel'
])File "C:\Users\Administrator\AppData\Local\Temp\2\pip-build-env-m26e9hf4
\overlay\Lib\site-packages\setuptools\build_meta.py", line 295, in _get_build_re
quiresself.run_setup()File "C:\Users\Administrator\AppData\Local\Temp\2\pip-build-env-m26e9hf4
\overlay\Lib\site-packages\setuptools\build_meta.py", line 480, in run_setupsuper(_BuildMetaLegacyBackend, self).run_setup(setup_script=setup_scri
pt)File "C:\Users\Administrator\AppData\Local\Temp\2\pip-build-env-m26e9hf4
\overlay\Lib\site-packages\setuptools\build_meta.py", line 311, in run_setupexec(code, locals())File "<string>", line 3, in <module>File "C:\Users\Administrator\AppData\Local\Temp\2\pip-install-pg6_kfal\u
wsgi_05f18753100a4e25a475b36504fbabe5\uwsgiconfig.py", line 8, in <module>uwsgi_os = os.uname()[0]AttributeError: module 'os' has no attribute 'uname'[end of output]note: This error originates from a subprocess, and is likely not a problem wit
h pip.
error: subprocess-exited-with-error× Getting requirements to build wheel did not run successfully.
│ exit code: 1
╰─> See above for output.note: This error originates from a subprocess, and is likely not a problem with
pip.

 gunicorn的错误出现在我试图使用它运行flask项目的时候

User
C:\Users\Administrator\Desktop\******>gunicorn -w 4 -t 30 -b 0.0.0.0
:5000 app:index
Traceback (most recent call last):File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\runpy.
py", line 197, in _run_module_as_mainreturn _run_code(code, main_globals, None,File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\runpy.
py", line 87, in _run_codeexec(code, run_globals)File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\Scripts\gu
nicorn.exe\__main__.py", line 4, in <module>File "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-p
ackages\gunicorn\app\wsgiapp.py", line 9, in <module>from gunicorn.app.base import ApplicationFile "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-p
ackages\gunicorn\app\base.py", line 11, in <module>from gunicorn import utilFile "C:\Users\Administrator\AppData\Local\Programs\Python\Python39\lib\site-p
ackages\gunicorn\util.py", line 8, in <module>import fcntl
ModuleNotFoundError: No module named 'fcntl'

它们的运行或安装无一例外都是需要UNIX/Linux,都是默认在 UNIX/Linux 上运行,因此选择 Waitress作为windows上的服务器是最好的选择

3.nginx命令

先来了解一点nginx命令方便下面操作

nginx.exe 启动nginx
nginx.exe -t 检查conf配置有没有问题
nginx.exe -s stop 停止nginx
nginx.exe -s reload 更新nginx

4. Waitress命令

waitress-serve --host=0.0.0.0 --port=5000 myapp:application

修改成与flask项目配置有关的端口号与地址

如果您的 Flask 应用程序在名为 的文件中定义myapp.py,并且 WSGI 应用程序对象名为application

5.开始!

1.准备好你的flask项目

2.启动它

3.使用 Waitress与它绑定并监视来自nginx的请求

waitress-serve --host=0.0.0.0 --port=5000 myapp:application

4.修改nginx配置文件,使其适用于你的项目

server {listen       8080;  # 修改为您的所需端口server_name  localhost;location / {# 允许所有请求方法,包括 POSTallow all;proxy_pass ****;  # 更改为您的Flask应用程序的主机和端口}location /static/ {root ******;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
}

5.启动nginx

nginx.exe 启动nginx
nginx.exe -t 检查conf配置有没有问题
nginx.exe -s reload 更新nginx
nginx.exe -s stop 停止nginx
nginx.exe 启动nginx

6.通过域名访问,大工告成!

这篇关于使用waitress与nginx在腾讯云上进行flask项目部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/445839

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出

Linux jq命令的使用解读

《Linuxjq命令的使用解读》jq是一个强大的命令行工具,用于处理JSON数据,它可以用来查看、过滤、修改、格式化JSON数据,通过使用各种选项和过滤器,可以实现复杂的JSON处理任务... 目录一. 简介二. 选项2.1.2.2-c2.3-r2.4-R三. 字段提取3.1 普通字段3.2 数组字段四.

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Nginx分布式部署流程分析

《Nginx分布式部署流程分析》文章介绍Nginx在分布式部署中的反向代理和负载均衡作用,用于分发请求、减轻服务器压力及解决session共享问题,涵盖配置方法、策略及Java项目应用,并提及分布式事... 目录分布式部署NginxJava中的代理代理分为正向代理和反向代理正向代理反向代理Nginx应用场景

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

vite搭建vue3项目的搭建步骤

《vite搭建vue3项目的搭建步骤》本文主要介绍了vite搭建vue3项目的搭建步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1.确保Nodejs环境2.使用vite-cli工具3.进入项目安装依赖1.确保Nodejs环境

Nginx搭建前端本地预览环境的完整步骤教学

《Nginx搭建前端本地预览环境的完整步骤教学》这篇文章主要为大家详细介绍了Nginx搭建前端本地预览环境的完整步骤教学,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录项目目录结构核心配置文件:nginx.conf脚本化操作:nginx.shnpm 脚本集成总结:对前端的意义很多