配置apache+python虚拟环境的坑——mod_wsgi模块只支持在安装过程中编译它的Python版本

在Centos7使用Apache部署Django项目遇到的一些问题记录 系统信息: 腾讯云:centos7 Apache: 2.4 Django: 2.0 Python: anaconda 3   问题1: [wsgi:warn] [pid 2894] (13)Permission denied: mod_wsgi (pid=2894): Unable to stat Python home /root/anaconda3. Python interp... 阅读详情

今天准备正式部署将自己的个人博客部署到云服务器上,结果怎么配置都无法连接上我的站点。起初我怀疑是服务器因为某些原因而无法连接,然而在开放了80端口之后,apache的默认000站点可以正常访问,ping测试也很正常。我又去检查了所有的配置文件,连一个标点符号都不放过,也没发现有错误。去查看apache错误日志后发现一直报这个错误

[Thu Sep 24 11:37:43.769231 2020] [wsgi:error] [pid 1206:tid 139625453172480] [remote 14.23.253.69:14394] Traceback (most recent call last):
[Thu Sep 24 11:37:43.769267 2020] [wsgi:error] [pid 1206:tid 139625453172480] [remote 14.23.253.69:14394]   File "/home/ranger/site/ranger/ranger/wsgi.py", line 13, in <module>
[Thu Sep 24 11:37:43.769273 2020] [wsgi:error] [pid 1206:tid 139625453172480] [remote 14.23.253.69:14394]     from django.core.wsgi import get_wsgi_application
[Thu Sep 24 11:37:43.769290 2020] [wsgi:error] [pid 1206:tid 139625453172480] [remote 14.23.253.69:14394] ModuleNotFoundError: No module named 'django'

看着这段错误,我在想,难道是因为我的虚拟环境路径没配置正确吗?我又去检查了配置文件中的虚拟环境路径,然而没发现任何错误。可为什么我明明已经配置好的虚拟环境会找不到django?

我又在虚拟环境中打开python并导入django,发现一些正常。我懵了。

在网上疯狂的找解决办法和相似的问题时,我读到了这篇文章:uwsgi遇到ImportError: No module named django.core.wsgi问题

看完之后突然想到会不会我也是因为路径问题呢?而且我又看到了错误日志中记录的ModuleNotFoundError异常,所以我想到了一个办法——写一个异常捕获代码,让它抛出更加明了的提示

我把django的wsgi.py文件改成了这样:

import os, sys

try:
    from django.core.wsgi import get_wsgi_application
except ModuleNotFoundError:
    path = sys.path
    version = sys.version
    info = '{} | {}'.format(path, version)
    raise ModuleNotFoundError(info)

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'ranger.settings')

application = get_wsgi_application()

然后错误信息变成了下面这段

[Thu Sep 24 12:43:38.139075 2020] [wsgi:error] [pid 1412:tid 139625570760448] [remote 20.51.210.251:63801] Traceback (most recent call last):
[Thu Sep 24 12:43:38.139086 2020] [wsgi:error] [pid 1412:tid 139625570760448] [remote 20.51.210.251:63801]   File "/home/ranger/site/ranger/ranger/wsgi.py", line 18, in <module>
[Thu Sep 24 12:43:38.139090 2020] [wsgi:error] [pid 1412:tid 139625570760448] [remote 20.51.210.251:63801]     raise ModuleNotFoundError(info)[Thu Sep 24 12:43:38.139112 2020] [wsgi:error] [pid 1412:tid 139625570760448] [remote 20.51.210.251:63801] 
	ModuleNotFoundError: ['/home/ranger/site/ranger', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload'] | 3.6.9 (default, Jul 17 2020, 12:50:27)
[Thu Sep 24 12:43:38.139116 2020] [wsgi:error] [pid 1412:tid 139625570760448] [remote 20.51.210.251:63801] [GCC 8.4.0]

可以看到它将程序运行的搜索模块的路径列了出来,还有运行程序的Python版本。奇怪!我的虚拟环境是Python3.8的,为什么它这儿是3.6?而且路径中根本就没有包含虚拟环境所在路径!难道是我的配置文件有问题??但是我坚持过N遍了,应该不是那个。

于是我去查阅Django的部署指南,看看是不是我漏了什么配置从而导致apache没有进入到虚拟环境下的Python中

django部署指南——基本配置

然后又去看了mod_wsgi模块的官方文档,终于找到了一下这段说明了一切原因的话

mod_wsgi官方文档截图

我一开始安装mod_wsgi模块时用的方法是直接从apt中安装libapache2-mod-wsgi-py3。而这会直接使用系统默认的python3.6,但我的python虚拟环境却是python3.8从而导致最终apache调用的实际上python3.6。

到了这一步,能解决问题的办法也就出来了,要么使用回python3.6的环境,要么重新通过源码编译的方式安装mod_wsgi,我感觉还是不太一样放弃python的一些新特性的,所以重新安装mod_wsgi啦!

在卸载了原来由apt安装的libapache2-mod-wsgi-py3之后,重新编译安装了mod_wsgi,成功了!!

总结:

这篇文章写得并不怎么像一个指南,或者解决方案。这篇文章更像是我这折腾了半天的回顾,从思考错误到排除错误到最后找出真正的问题所在,并且解决问题。

虽然很折腾,但也算是学会了一些东西。

——2020.09.24

pgAdmin 4服务器模式部署实战:Apache+mod_wsgi+Python虚拟环境 pgAdmin 4 是 PostgreSQL 官方推荐的图形化管理工具,其服务器模式(Server Mode)将传统桌面客户端升级为支持多用户、身份认证与审计日志的企业级 Web 服务。该模式基于 WSGI 规范运行,核心原理是通过反向代理(如 Apache)将 HTTP 请求转发至 Python 后端应用,实现连接管理、SQL 执行与元数据解析的集中化控制。技术价值在于满足等保合规、细粒度权限分发和跨团队协作运维需求,典型应用于 DBA 统一管控上百 PostgreSQL 实例、DevOps 集成数据库健 阅读详情

相关推荐

Ubuntu 12.04源码编译mod_wsgi实战指南:解决UCS2与prefork兼容性问题

mod_wsgi是Python Web应用与Apache服务器之间的关键桥梁,其本质是C扩展模块,需严格匹配Python解释器ABI和Apache MPM运行时环境。核心原理在于编译期绑定:Python头文件(含Unicode宽度定义)、Apache开发包(如apache2-prefork-dev)、apxs2工具链三者必须协同一致。技术价值体现在稳定性与可控性——规避apt二进制包的ABI锁定风险,尤其在老旧系统中保障生产环境长期可靠。典型应用场景包括Django/Flask遗留系统迁移、工业控制终端托管

weixin_34099526的博客 464

当使用pycharm时候,新建flask项目,打开python控制台时候出现ModuleNotFoundError: No module named ‘wsgi‘错误怎么解决

当使用pycharm时候,新建flask项目,打开python控制台时候出现ModuleNotFoundError: No module named 'wsgi'错误怎么解决

石头的博客 1906

Ubuntu VPS上Flask+Apache+mod_wsgi生产部署实战

Flask作为轻量级Python Web框架,其生产部署需超越开发模式的flask run命令,进入真实服务器环境。核心在于理解WSGI协议原理、Web服务器(Apache)与应用服务器(Flask)的职责分离,以及Linux系统权限、进程隔离和静态资源托管等工程实践要点。Apache+mod_wsgi组合依托prefork MPM提供强进程隔离能力,配合Ubuntu LTS系统的稳定包管理与安全更新机制,特别适合中小规模、强调长期稳定运行的内部系统或交付型项目。本文聚焦VPS环境下的可复现部署路径,涵盖目

dianyin7770的博客 326

web.py设置SSL支持(HTTPS,解决错误 ModuleNotFoundError: No module named 'web.wsgiserver')

前言 今天,试图设置SSL支持,查看了其他博主的一些博客,找到的方法多半是这样的 from web.wsgiserver import CherryPyWSGIServer CherryPyWSGIServer.ssl_certificate = '/usr/ssl/server.crt' CherryPyWSGIServer.ssl_private_key = '/usr/ssl/server....

ayouayouwei 2060

Django生产部署必选WSGI服务器:Gunicorn、uWSGI与Mod_WSGI对比指南

WSGI(Web Server Gateway Interface)是Python Web应用与服务器通信的标准协议,其核心价值在于解耦业务逻辑与HTTP基础设施。Django作为遵循WSGI规范的框架,必须通过兼容的WSGI服务器才能接入Nginx/Apache等生产级反向代理,实现并发处理、进程隔离、平滑重启与安全防护。脱离WSGI中间层直接使用runserver将导致单线程阻塞、无资源管控、零安全加固,无法应对真实流量。Gunicorn以简洁可靠见长,天然适配Docker与云原生;uWSGI凭借uws

weixin_33709609的博客 409

ModuleNotFoundError: 未找到名为“No_module_named“的模块的通俗解释和解决方法

模块未安装:如果你尝试导入的模块是第三方模块或自定义模块,但你没有将其安装到你的Python环境中,那么就会出现ModuleNotFoundError。你可以使用pip工具来安装第三方模块,或者确保你的自定义模块位于正确的路径下。模块路径问题:Python解释器在导入模块时会搜索一系列目录,这些目录包括Python标准库和你自己编写的模块所在的目录。通过理解ModuleNotFoundError的常见原因,并根据具体情况采取相应的解决方法,你应该能够解决这个错误并成功导入所需的模块。

CddaDebugging的博客 3万+

windows conda + python apache 安装 mod_wsgi

本地有个项目,服务器是Apache,之前后端实现一部分是PHP,一部分是通过PHP exec调用的Python,还有一些本地定时执行调用Python的bat脚本。最近项目复杂了起来,把后端重构了下,统一改成了Python实现,并且单独给Python代码创建了一个conda的虚拟环境,在使用的过程中发现PHP exec激活conda环境+执行Python脚本的速度很慢,有1.5s,所以想直接把Python集成到Apache中。

qq_41684071的博客 1414

在Linux系统上搭建Apache+Python+Django+MySQL环境

记得在实际生产环境中,需要进行适当的安全配置和优化,并使用适当的数据库密码和其他安全措施来保护您的应用程序和数据。在Linux系统上搭建Apache+Python+Django+MySQL环境是开发和部署Web应用程序的常见需求。本文将向您介绍如何在Linux上配置和安装必要的软件以及如何创建和部署Django应用程序。为了隔离不同项目的依赖关系,我们将使用Python的虚拟环境。最后,我们可以启动Django开发服务器以运行我们的应用程序。安装完成后,Apache将自动启动并运行在默认的80端口。

CyberLancer的博客 371

部署Django在Windows server 2008r2 采用apache+mod_wsgi方案

部署Django在Windows server 2008r2Run Django with Apache + mod_wsgi on Windows server 2008r2最近学习了Django,语法学的差不多了.最后想搭建一个服务器以访问网站. 网上看了很多方案,但是有很多方案都不适合在windows在部署,或者就是Python版本太老 nginx + uwsgi (其中uwsgi不兼容w

Jerry’s Blog 8871

Windows 64位上使用Django+Apache+mod_wsgi部署Python应用

Django作为一个高级Python Web框架,其设计初衷是让开发过程快速、干净并且更安全。它遵循“约定优于配置”的原则,意味着只需编写少量代码即可完成许多任务,同时仍保持灵活性以应对各种复杂场景。Apache服务器在现代网络架构中扮演着至关重要的角色。它是一个开源的、跨平台的Web服务器软件,以其稳定、安全和高效的特点被广泛使用。Apache Web服务器的历史始于1995年,当时是一个开源项目的分支,用于改进NCSA HTTPd服务器。

weixin_42284380的博客 324

GD32F303调试小记(一)之USART(接收中断、接收空闲中断+DMA、发送DMA)

前言 之前写了GD32F103调试小记(二)之USART(接收中断、接收空闲中断+DMA、发送DMA)一文。这次我们来看看GD32F303的USART是如何配置的,结合这两篇文章,相信大家GD32的USART配置流程会十分熟悉。 DMA 能大大减轻CPU负荷的东西,建议场景合适的情况下,都去用DMA功能。 USART 一种串行通信协议, ...

欢喜6666的博客 3万+

Django生产部署:Apache + mod_wsgi 实战指南

WSGI(Web Server Gateway Interface)是Python Web应用与服务器通信的标准协议,其核心价值在于解耦应用逻辑与HTTP服务层。mod_wsgi作为Apache官方推荐的WSGI实现,通过守护进程模式提供进程隔离、内存管理与优雅重启能力,显著提升Django等框架的生产健壮性。相比开发服务器runserver的单线程局限,或Nginx+uWSGI的多组件架构,Apache+mod_wsgi方案在LAMP运维体系中具备配置统一、日志集中、安全模块(如mod_security)

weixin_30448603的博客 366

MuJoCo 关节角速度记录与可视化,监控机械臂运动状态

1. 手动计算关节速度,其中timestep为仿真步长。2. 使用data.qvel直接取得关节速度。

darcsdn 768

Django生产部署:CentOS 7 + Apache + mod_wsgi 实战指南

WSGI 是 Python Web 应用与服务器通信的核心标准,Django 作为主流框架原生支持该协议。理解其原理是实现稳定部署的前提——它定义了应用如何被调用、环境如何传递、响应如何返回。技术价值在于解耦应用逻辑与基础设施,使 Django 可无缝对接 Apache、Nginx 等成熟 Web 服务器。典型应用场景包括政企私有云、金融系统及教育平台等需强合规性与长期维护的 CentOS 7 环境。在这些场景中,Apache + mod_wsgi 组合凭借 SELinux 深度集成、审计日志完备、配置体系

417

电磁兼容标准体系解析:从基础到认证的完整指南

本文系统解析了电磁兼容(EMC)标准体系,从基础概念到认证流程提供完整指南。文章阐述了EMC对于产品可靠性与市场准入的重要性,详细拆解了基础标准、通用标准、产品类标准及认证流程四层结构,并结合5G设备与工业控制等实战案例,为工程师提供了从设计初期到认证测试的高效应用策略。

weixin_29294975的博客 355

高德地图爬虫

高德地图爬虫 工具:Pycharm,win10,Python3.6.4 1.需求分析 这篇爬虫和上一篇百度地图爬虫要求一样,百度地图爬虫我发现有一个auth参数会一直变化,一旦变化则获取的数据是不准确的,所以我上高德地图看了一下,高德地图没有这个反爬机制。但是高德地图大概爬取120个页面就会跳一次验证码,我这里是通过换IP解决这个问题的。 2.数据准备 同样我们需要全国地级市信息,用之前...

123的博客 1万+

UI-TARS Desktop 快速上手:自然语言驱动桌面自动化

UI-TARS Desktop 是一个开源多模态 AI Agent 桌面应用,一套开箱即用的桌面自动化工具,你用一句话就能让它接管鼠标与键盘,把重复的点击和输入接走。核心机制只有一句话:截屏当前画面,让视觉语言模型(VLM)推理出下一步动作,执行该动作,如此循环直到任务完成。全程不需要写代码,你只负责把任务用自然语言说清楚。 ## 先搞懂它怎么干活 你每发出一条指令,UI-TARS Deskt

gitblog_00313的博客 375

8.5华为OD机试真题 新系统 - IPv4 等长子网划分与自动分配系统 (Java/Py/C/C++/Js/Go)

8.5华为OD机试真题 新系统 - IPv4 等长子网划分与自动分配系统 (Java/Py/C/C++/Js/Go)

算法大师! 526

【Django2.0学习笔记】38.用Apache+mod_wsgi部署

38、用Apache+mod_wsgi部署 1、web服务器怎么提供服务 浏览器 请求 web服务器,web服务器 响应 浏览器——http协议 web服务器 从 web服务器软件 接手请求,web服务器软件响应web服务器 web服务器软件 和 Django程序 之间怎么交互?——WSGI(Web Server Gateway Interface)规范 Linux常用的web服务器软件:Apache、Nginx Apache: 模块多,功能强大 内置了对PHP,Python,Perl

qq_42851418的博客 778

工业级4~20mA转0~3V信号调理电路原理图设计,已量产(电流传感器)

在工业现场,4~20mA 电流信号是模拟量传输的 “老熟人”—— 抗干扰强、能跑长距离,但嵌入式 MCU 的 ADC 一般只认电压信号。最近做项目时,我设计了一款能覆盖 0~25mA(含超量程冗余)、线性输出 0~3V 的调理电路,经过现场调试挺稳定,分享下细节。

不脱发的程序猿 528

星载SAR的各项指标解读(史上最全)

一、系统指标 系统指标主要指雷达系统的通用的指标,以及和卫星整星相关的指标,主要有一下几项: 工作频段: 雷达体制: 极化方式: 设计s

9276

在Windows环境,采用Apache + mod_wsgi的方式部署flask

在Windows环境,采用Apache + mod_wsgi的方式部署flask,不如Linux下方便。 Apache、mod_wsgi、python三者必须是同位数,比如同为X64或者X86。另外,查看对应的VC版本。 说明:在Windows环境中,Apache不支持flask中的多进程或多线程功能,具体见 flask 完整项目: https://github.com/Hooddi/Apache...

在Windows环境,采用Apache + mod_wsgi的方式部署flask 870

QCM2290 PM-3 如何让mirco-usb支持关机充电

PM4125-3插入type-C触发开机进入关机充电的CC脚中断条件是否可以软件上屏蔽, 做到只通过VBUS中断即可触发进入关机充电模式,达到和PM4125-2的效果一样只要插入micro USB 就可以触发进入关机充电模式。硬件团队提议修改寄存器 SCHG_L_MISC_SYSOK_CFG 0x164A bit[4] 目前修改如下 — a/BOOT.XF.4.1/boot_images/QcomPkg/Library/PmicLib/target/Agatti_pmCocos/psi/pm_confi

墨染天玑的博客 444

Python3之Flask项目上线到Apache上(Python3+Flask+Apache+mod_wsgi)

项目为什么需要部署到Apache上? 一般来说在测试环境上,大家都是直接用app.run(host=‘0.0.0.0’,port=5000)这样的形式来发布自己的项目并观察网页结构的改变,这样并不是不可以,只是只适用于测试环境上,如果进入线上环境的话会因为并发和性能的问题而导致网页非常的卡顿以致于给用户的体验造成影响,所以为了避免这种情况的发生,我们使用apache来发布自己的项目是非常友好的。 ...

LeeGene的博客 1396

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Apache mod_wsgi 终极部署指南:从零开始搭建高性能Python Web应用 [特殊字符]

Apache mod_wsgi是连接Apache Web服务器与Python Web应用程序的**关键桥梁**。这个强大的模块让开发者能够轻松地将Python应用部署到企业级的Web服务器环境中。无论你是开发新手还是经验丰富的工程师,掌握mod_wsgi的部署技巧都能显著提升你的Web应用性能和稳定性。 ## 🎯 为什么选择Apache mod_wsgi? Apache mod_wsgi提供

gitblog_00960的博客 439

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

mod_wsgi

http://modwsgi.readthedocs.org/en/develop/ 1. mod_wsgi mod_wsgi实现了一个简单易用的Apache模块,可负载任何支持Python的WSGI规范的Web应用程序。基于不同的需求mod_wsgi有两种不同的安装方式。 第一种方式是作为传统的Apache模块安装到已有的Apache中。按此方式,你需要手动配置Apache以加

lzx1104的专栏 1556

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: 在服务器中安装MySQL
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值