Python项目部署到Linux生产环境(uwsgi+python+flask+nginx服务器)

1.安装python

我这里是3.9.5版本

安装依赖:

yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make -y

根据自己的需要下载对应的python版本:

cd local
wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz

 解压 > 编译 > 安装

tar -xvf Python-3.9.5.tgz
cd Python-3.9.5.tgz
./configure
make all
make install

Python解释器配置清华源:

pip3.9 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/

2.虚拟环境配置

1)安装 virtualenv

pip3.9 install virtualenv

2)创建虚拟环境(一般是一个项目一个虚拟环境)

mkdir home/python_item/envs
cd /home/python_item/envs/
virtualenv /home/python_item/envs/tender --python=python3.9

3)激活虚拟环境

source  /home/python_item/envs/tender/bin/activate

4)安装项目依赖

cd /home/python_item/tender_project #进入项目目录pip3.9 install flask
pip3.9 install lxml
pip3.9 install pymysql
pip3.9 install requests

3、uwsgi安装

1)安装uwsgi

激活虚拟环境,在虚拟环境中安装
source  /home/python_item/envs/tender/bin/activate
pip install uwsgi

2)基于uwsgi配置文件的方式运行flask项目

[uwsgi]socket = 127.0.0.1:8001  chdir = /home/python_item/tender_project wsgi-file = main.py callable = app processes = 1 virtualenv = /home/python_item/envs/tender/ 

3)启动项目

uwsgi --ini tender_test.ini

报错:

(tender) [root@node1 tender_project]# uwsgi --ini tender_test.ini
[uWSGI] getting INI configuration from tender_test.ini
*** Starting uWSGI 2.0.26 (64bit) on [Tue Jul 16 15:30:21 2024] ***
compiled with version: 4.8.5 20150623 (Red Hat 4.8.5-44) on 16 July 2024 07:24:56
os: Linux-3.10.0-1160.71.1.el7.x86_64 #1 SMP Tue Jun 28 15:37:28 UTC 2022
nodename: node1
machine: x86_64
clock source: unix
pcre jit disabled
detected number of CPU cores: 8
current working directory: /home/python_item/tender_project
detected binary path: /home/python_item/envs/tender/bin/uwsgi
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** 
chdir() to /home/python_item/tender_project
*** WARNING: you are running uWSGI without its master process manager ***
your processes number limit is 7787
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to TCP address 127.0.0.1:8001 fd 3
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** 
Python version: 3.9.5 (default, Jul 16 2024, 15:00:56)  [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
PEP 405 virtualenv detected: /home/python_item/envs/tender/
Set PythonHome to /home/python_item/envs/tender/
*** Python threads support is disabled. You can enable it with --enable-threads ***
Python main interpreter initialized at 0x27abcc0
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** 
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 72920 bytes (71 KB) for 1 cores
*** Operational MODE: single process ***
Traceback (most recent call last):File "main.py", line 7, in <module>from common import WebInfoFactoryFile "/home/python_item/tender_project/./common.py", line 2, in <module>import requestsFile "/home/python_item/envs/tender/lib/python3.9/site-packages/requests/__init__.py", line 43, in <module>import urllib3File "/home/python_item/envs/tender/lib/python3.9/site-packages/urllib3/__init__.py", line 42, in <module>raise ImportError(
ImportError: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.0.2k-fips  26 Jan 2017'. See: https://github.com/urllib3/urllib3/issues/2168
unable to load app 0 (mountpoint='') (callable not found or import error)
*** no app loaded. going in full dynamic mode ***
uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) *** 
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI worker 1 (and the only) (pid: 1600, cores: 1)

解决:

urllib3版本不兼容,卸载重装

pip3.9 uninstall urllib3pip3.9 install urllib3==1.22

重启即可

uwsgi --ini tender_test.ini

nginx

安装:Linux安装Nginx

配置:

    upstream flask {server 127.0.0.1:8001 weight=1;
}server {listen       80;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;location / {root   html;index  index.html index.htm;}location /tenderTest {    uwsgi_pass   flask;include  /usr/local/nginx/conf/uwsgi_params;
#            index  index.html index.htm;}location /test/ {uwsgi_pass   127.0.0.1:8002;include  /usr/local/nginx/conf/uwsgi_params;
#            index  index.html index.htm;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}

4.访问成功 

5.编写脚本快速重启/停止

在项目目录下执行重启或停止,脚本放在下面,根据自己的实际情况进行修改即可

./reboot.sh./stop.sh

reboot.sh

#! /usr/bin/env bash
echo -e "======================wsgi process======================"ps -ef|grep tender_test.ini |grep -v grepsleep 0.5echo -e "======================going to close ======================"ps -ef | grep tender_test.ini | grep -v grep | awk '{print $2}' | xargs kill -9sleep 0.5echo -e "======================check if the kill action is correct ======================"/home/python_item/envs/tender/bin/uwsgi --ini tender_test.ini & >/dev/nullecho -e "======================started... ======================"sleep 1ps -ef | grep tender_test.ini |grep -v grep

 stop.sh

echo -e "======================wsgi process======================"ps -ef|grep tender_test.ini |grep -v grepsleep 0.5echo -e "======================going to close ======================"ps -ef  |grep tender_test.ini | grep -v grep | awk '{print $2}' | xargs kill -9sleep 0.5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/45835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE5.4新功能 - MotionDesign上手简介

MotionDesign是UE中集成的运动图形功能&#xff0c;我们在游戏中经常会见到&#xff0c;例如前方漂浮于空中的若干碎石&#xff0c;当玩家走进时碎石自动吸附合并变成一条路&#xff0c;或者一些装饰性的物件做随机运动等等&#xff0c;在引擎没有集成运动图形时&#xff0c;这…

网络爬虫开发:JavaScript与Python特性的小差异

JavaScript JavaScript具有以下一些主要特点&#xff1a; 动态类型&#xff1a; JavaScript是一种动态类型语言&#xff0c;变量可以存储任意类型的数据&#xff0c;无需事先声明变量的类型。事件驱动&#xff1a;JavaScript主要用于处理用户在浏览器中的各种交互事件&#x…

什么是大数据信用?它的作用有哪些?怎么查询大数据?

在金融行业中&#xff0c;风险管理是至关重要的一环。传统的信用评估方法主要基于借款人的财务状况和信用历史&#xff0c;但这些信息往往无法全面反映借款人的信用状况。大数据信用的出现为金融风控提供了新的解决方案。 首先&#xff0c;大数据信用可以为金融机构提供更全面的…

jmeter持续学习之---控制器

IF控制器 下面这种写法jmeter不推荐有性能的问题 jmeter推荐勾选上的这种写法 使用"Interpret Condition as Variable Expression"工具的性能要好一些 循环控制器 ForEach控制器 与用户定义的变量或者正则表达式提取器配合使用,循环读取。用户定义的变量或者正则…

C语言-分支与循环(2)

目录 1、while循环 1.1 if 和 while 的对比 1.2 while 语句的执行流程 6.3 while循环简单例题 2、for 循环 2.1 语法形式 2.2 for循环与while循环对比 2.3 for循环的执行流程 2.4 for循环的简单例题 2.5 扩展&#xff1a;for循环的初始化&#xff0c;判断&#xff0c;…

django学习入门系列之第四点《图标》

文章目录 图标往期回顾 图标 图标网站&#xff1a; Font Awesome&#xff0c;一套绝佳的图标字体库和CSS框架 (dashgame.com) bootstrap提供的不多 注意&#xff0c;要用框架启动&#xff0c;但用html启动的话是用不了的&#xff08;图标启动不了&#xff09; 如何使用 如果…

DAMA学习笔记(六)-数据安全

1.引言 数据安全包括安全策略和过程的规划、建立与执行&#xff0c;为数据和信息资产提供正确的身份验证、授权、访问和审计。数据安全实践的目标是根据隐私和保密法规、合同协议和业务要求来保护信息资产。这些要求来自以下几个方面: 1&#xff09;利益相关方: 应识别利益相关…

YOLO--置信度(超详细解读)

YOLO&#xff08;You Only Look Once&#xff09;算法中的置信度&#xff08;Confidence&#xff09;是一个关键概念&#xff0c;用于评估模型对预测框内存在目标对象的信心程度以及预测框对目标对象位置的准确性。 一、置信度的定义 数值范围&#xff1a;置信度是一个介于0和…

vscode 打开远程bug vscode Failed to parse remote port from server output

vscode 打开远程bug vscode Failed to parse remote port from server output 原因如图&#xff1a; 解决&#xff1a;

网络滤波器、EMI滤波器与EMC滤波器在电子元器件中的分类关系

在电子工程领域&#xff0c;滤波器作为关键的电子元器件&#xff0c;广泛应用于信号处理、电磁兼容性和电磁干扰抑制等方面。本文将详细介绍网络滤波器、EMI滤波器和EMC滤波器的基本概念、工作原理及其在电子元器件中的分类关系。 一、网络滤波器 网络滤波器是一种通过处理信号…

脸书登录指南:如何在同一台设备登录多个Facebook账号?

海外社媒营销人员和跨境卖家现在越来越依赖社交媒体平台来拓展业务和接触潜在客户&#xff0c;尤其是Facebook。然而&#xff0c;在进行脸书登录时&#xff0c;你可能会问&#xff1a;如何在同一台设备上登录多个Facebook账号&#xff0c;而不违反Facebook的使用条款&#xff1…

Android 性能优化之卡顿优化

文章目录 Android 性能优化之卡顿优化卡顿检测TraceView配置缺点 StricktMode配置违规代码 BlockCanary配置问题代码缺点 ANRANR原因ANRWatchDog监测解决方案 Android 性能优化之卡顿优化 卡顿检测 TraceViewStricktModelBlockCanary TraceView 配置 Debug.startMethodTra…

vivado 2019.2/modelsim SE-64 2019.2联合仿真

参考链接 需要修改的地方&#xff1a; 编译时几个VHDL的库会报错&#xff0c;将language改为verilogfamily只选择当前板子&#xff08;artix-7&#xff09;&#xff0c;速度会更快&#xff0c;错误率更低compile library path最好选择vivado安装路径下的位置&#xff0c;很久之…

怎么创一个新的vue3项目

创建一个新的Vue 3项目可以通过多种方式&#xff0c;以下是基于Vue CLI&#xff08;命令行界面&#xff09;和Vue官方新的脚手架工具create-vue的详细步骤。 使用Vue CLI创建Vue 3项目 安装Vue CLI&#xff1a; 确保你已经安装了Node.js&#xff08;建议使用LTS版本&#xff…

用于大规模图像识别的深度卷积网络

概述 论文地址&#xff1a;https://arxiv.org/pdf/1409.1556.pdf 这项研究探讨了卷积网络深度对图像识别准确性的影响。重要的是&#xff0c;对具有小型卷积滤波器的网络进行的评估表明&#xff0c;具有 16-19 个权重层的深度网络的性能优于传统配置。这些结果使得该模型在20…

把ros消息转换成中文输出

把ros消息转换成中文输出 c实现 发布 //发布性能评估数据 /trilateration_time_log void publishTrilaterationLog(const int reflectorPanelPoints_size,const double duration_count,const std::string& resultType,const std::string& resultChineseMessage,cons…

C#绘制含流动块的管道

1&#xff0c;效果。 2&#xff0c;绘制技巧。 1&#xff0c;流动块的实质是使用Pen的自定义DashStyle绘制的线&#xff0c;并使用线的偏移值呈现出流动的效果。 Pen barPen new Pen(BarColor, BarHeight);barPen.DashStyle DashStyle.Custom;barPen.DashOffset startOffse…

MySQL-日志-优化

目录 介绍一下mysql 的日志 redo log 和binlog 的区别及应用场景 redo log 和 binlog 在恢复数据库有什么区别? redo log 是怎么实现持久化的? redo log除了崩溃恢复还有什么其他作用? &#xff08;顺序写&#xff09; redo log 怎么刷入磁盘的知道吗&#xff1f; 两阶…

重塑水利未来:智慧水利解决方案的探索与实践,从物联网、大数据到人工智能,科技如何赋能水利行业,实现智慧化管理与决策

本文关键词&#xff1a;智慧水利、智慧水利工程、智慧水利发展前景、智慧水利技术、智慧水利信息化系统、智慧水利解决方案、数字水利和智慧水利、数字水利工程、数字水利建设、数字水利概念、人水和协、智慧水库、智慧水库管理平台、智慧水库建设方案、智慧水库解决方案、智慧…

如何通过3D开发组件HOOPS增强Navisworks数据访问?

随着建筑信息模型&#xff08;BIM&#xff09;和建筑、工程和施工&#xff08;AEC&#xff09;市场的快速发展&#xff0c;对Navisworks支持的需求也在不断增长。特别是在多个公司赞助Navisworks项目的大环境下&#xff0c;HOOPS组件的支持显得尤为重要。这些公司包括一家大型电…