uwsgi部署python web项目

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: uwsgi部署python web项目

1.安装uWSGI模块

pip install uwsgi


2.在项目根目录下创建uWSGI配置文件 【uwsgi.ini】

[uwsgi]
#地址端口
http = 0.0.0.0:80
#项目路径
chdir = /root/projectname
#项目启动文件
wsgi-file = manage.py
#项目需要调用的启动类
callable = app
#进程线程设置
processes = 4
threads = 10
#日志文件
daemonize = /app/logs/uwsgi.log
#保存主进程pid文件
pidfile = uwsgi.pid
#是否需要主进程
master = true

3.相关指令



启动

uwsgi --ini uwsgi.ini

重新加载

uwsgi --reload uwsgi.pid

停止

uwsgi --stop uwsgi.pid

查看所有运行的uwsgi服务:

ps -ef |grep uwsgi

强行结束


通过

ps -ef |grep uwsgi

检查uwsgi检查进程


将带着之前的ini配置的进程全部kill


相关kill指令:


kill全部uwsgi ini进程

killall -s INT uwsgi

日志分割(仅供参考)


要将uwsgi启动的Python web接口的日志文件按照每天来进行存储,可以采用以下步骤


1.在uwsgi配置文件中添加以下内容:

log-date = true
log-reopen = true

这将使uwsgi在每天的午夜自动重新打开日志文件,并将日期添加到日志文件名中。


2.在日志目录中创建一个符号链接,将其指向当前日志文件。


这样就可以让日志文件始终使用相同的名称。例如:

ln -sf /var/log/uwsgi/app/myapp.log.20210315 /var/log/uwsgi/app/myapp.log

这将创建一个名为myapp.log的符号链接,将其指向前一天的日志文件。


3.使用logrotate工具来对日志文件进行归档和压缩,并按照日期将其命名。


例如,可以创建一个名为/etc/logrotate.d/uwsgi的文件,其中包含以下内容:

/var/log/uwsgi/app/myapp.log {
daily
rotate 7
compress
dateext
missingok
notifempty
sharedscripts
postrotate
systemctl reload uwsgi.service > /dev/null 2>&1 || true
endscript
}

这将使logrotate每天自动将myapp.log文件进行归档和压缩,并将其命名为myapp.log-YYYYMMDD.gz。rotate指定了保留日志文件的数量,postrotate中的命令将重新加载uwsgi服务,以便使用新的日志文件。


4.最后,确保uwsgi日志目录和日志文件的权限设置正确,以便uwsgi服务可以访问并写入日志文件。

chown uwsgi:uwsgi /var/log/uwsgi/app
chmod 755 /var/log/uwsgi/app

这将 将/var/log/uwsgi/app目录的所有权和权限设置为uwsgi用户和组,并设置目录权限为755


此外,还可以考虑在uwsgi配置文件中配置日志级别和日志格式,以便更好地记录和跟踪应用程序的行为。


例如:

log-date = true
log-reopen = true
log-format = %(asctime)s %(levelname)s %(message)s
log-level = info

这将启用uwsgi日志记录,以便在每行日志中包含时间戳、日志级别和消息文本。可以根据需要将日志级别设置为debug、info、warning、error或critical。


最后,通过对日志文件进行归档和压缩,可以节省磁盘空间,并使日志文件更易于管理和备份。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
机器学习/深度学习 数据采集 数据可视化
Python 数据分析:从零开始构建你的数据科学项目
【10月更文挑战第9天】Python 数据分析:从零开始构建你的数据科学项目
53 2
|
14天前
|
弹性计算 Linux iOS开发
Python 虚拟环境全解:轻松管理项目依赖
本文详细介绍了 Python 虚拟环境的概念、创建和使用方法,包括 `virtualenv` 和 `venv` 的使用,以及最佳实践和注意事项。通过虚拟环境,你可以轻松管理不同项目的依赖关系,避免版本冲突,提升开发效率。
|
22天前
|
数据处理 Apache 数据库
将 Python UDF 部署到 Apache IoTDB 的详细步骤与注意事项
【10月更文挑战第21天】将 Python UDF 部署到 Apache IoTDB 中需要一系列的步骤和注意事项。通过仔细的准备、正确的部署和测试,你可以成功地将自定义的 Python UDF 应用到 Apache IoTDB 中,为数据处理和分析提供更灵活和强大的支持。在实际操作过程中,要根据具体情况进行调整和优化,以确保实现最佳的效果。还可以结合具体的代码示例和实际部署经验,进一步深入了解和掌握这一过程。
20 2
|
23天前
|
机器人 Shell Linux
【Azure Bot Service】部署Python ChatBot代码到App Service中
本文介绍了使用Python编写的ChatBot在部署到Azure App Service时遇到的问题及解决方案。主要问题是应用启动失败,错误信息为“Failed to find attribute 'app' in 'app'”。解决步骤包括:1) 修改`app.py`文件,添加`init_func`函数;2) 配置`config.py`,添加与Azure Bot Service认证相关的配置项;3) 设置App Service的启动命令为`python3 -m aiohttp.web -H 0.0.0.0 -P 8000 app:init_func`。
|
28天前
|
JSON 搜索推荐 API
Python的web框架有哪些?小项目比较推荐哪个?
【10月更文挑战第15天】Python的web框架有哪些?小项目比较推荐哪个?
47 1
|
28天前
|
Linux Python
【Azure Function】Python Function部署到Azure后报错No module named '_cffi_backend'
ERROR: Error: No module named '_cffi_backend', Cannot find module. Please check the requirements.txt file for the missing module.
|
1月前
|
机器学习/深度学习 人工智能 算法
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
玉米病害识别系统,本系统使用Python作为主要开发语言,通过收集了8种常见的玉米叶部病害图片数据集('矮花叶病', '健康', '灰斑病一般', '灰斑病严重', '锈病一般', '锈病严重', '叶斑病一般', '叶斑病严重'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。再使用Django搭建Web网页操作平台,实现用户上传一张玉米病害图片识别其名称。
55 0
【玉米病害识别】Python+卷积神经网络算法+人工智能+深度学习+计算机课设项目+TensorFlow+模型训练
|
1月前
|
机器学习/深度学习 算法框架/工具 Python
基于深度学习的手写数字识别项目GUI(Deep Learning Project – Handwritten Digit Recognition using Python)
基于深度学习的手写数字识别项目GUI(Deep Learning Project – Handwritten Digit Recognition using Python)
60 0
|
6月前
|
开发框架 开发者 Python
深入探究Python Web开发框架:Flask与Django
Python作为一种广泛应用于Web开发的编程语言,其拥有众多优秀的Web开发框架。本文将深入探讨其中两大知名框架——Flask与Django。通过对它们的概念与实践进行比较分析,帮助读者更好地理解和选择适合自己项目需求的Web开发框架。
|
6月前
|
前端开发 数据库 Python
Python Web 开发: 解释 Django 框架的 MVC 架构是什么?
Python Web 开发: 解释 Django 框架的 MVC 架构是什么?
123 0