域控网络中Apache部署Flask API的问题排查与配置咨询
问题与解决方案:Apache部署Flask项目数据交互失败及自定义域名配置
我学习Apache、JavaScript、CSS、Flask及MOD_WSGI不足一周,开发了一个输入批次号从Oracle数据库取数据展示的项目,已用纯Python实现,现在要通过Web服务器共享给团队。本地(公司笔记本和台式机)用Flask API+MOD_WSGI能正常实现网页与Oracle的数据交互,但部署到Apache2.4后,客户端能访问页面却拿不到数据,控制台提示ERR_CONNECTION REFUSED。咨询以下问题及对应解决方案:
1. 是否因服务器PC启用了管理员管控的防火墙?有何解决办法?
- 大概率是防火墙拦截导致。按以下步骤排查解决:
- 先在服务器本地测试API连通性:用
curl http://localhost:<API端口>/<接口路径>或浏览器访问本地API,若本地能正常获取数据,客户端不行,则可确定是防火墙拦截端口。 - 联系管理员,申请将Apache服务端口(默认80/443)及Flask API对应端口(若为独立服务)加入防火墙白名单,允许团队所在网段的IP访问。
- 若有权限调整服务器防火墙(如Windows防火墙),可手动添加入站规则,放行对应端口的TCP连接。
- 先在服务器本地测试API连通性:用
2. 是否存在配置错误?
重点检查以下几个核心配置环节:
Apache http.conf配置检查
- 确认MOD_WSGI模块已正确加载:
LoadModule wsgi_module modules/mod_wsgi.so(路径需匹配实际安装位置) - 确认VirtualHost配置规范,示例:
<VirtualHost *:80> ServerName 192.168.0.100 WSGIScriptAlias / /path/to/your/app.wsgi <Directory /path/to/your/project> Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/your_app_error.log CustomLog ${APACHE_LOG_DIR}/your_app_access.log combined </VirtualHost> - 查看Apache错误日志(默认路径:Linux为
/var/log/apache2/,Windows为Apache24/logs),排查是否存在Oracle连接失败、WSGI初始化报错(如权限不足、Oracle依赖缺失)等信息。
.wsgi文件检查
确认文件正确导入Flask应用,示例:
import sys sys.path.insert(0, '/path/to/your/project') from your_flask_app import app as application
Flask API及前端JavaScript检查
- 前端JS的API请求地址需用相对路径(如
/api/get_data),禁止硬编码http://localhost:5000/api/get_data——硬编码本地地址会导致客户端从自身机器访问localhost,必然触发连接拒绝。 - 若通过MOD_WSGI部署Flask,无需手动执行
app.run();若为独立Flask服务配合Apache反向代理,需将Flask绑定地址设为0.0.0.0,允许服务器所有网卡接收请求。 - 检查Oracle数据库连接配置:确认服务器已安装Oracle客户端,且
ORACLE_HOME、LD_LIBRARY_PATH等环境变量在Apache运行环境中生效(Apache运行用户可能与本地测试用户不同,易导致驱动加载失败)。
3. 如何通过自定义ServerName(如getwbspcdb.com)访问页面?
按以下三步配置:
第一步:配置Apache VirtualHost
修改http.conf或新增vhosts.conf(需在http.conf中添加Include conf/extra/httpd-vhosts.conf导入),添加自定义ServerName:
<VirtualHost *:80> ServerName getwbspcdb.com WSGIScriptAlias / /path/to/your/app.wsgi <Directory /path/to/your/project> Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/getwbspcdb_error.log CustomLog ${APACHE_LOG_DIR}/getwbspcdb_access.log combined </VirtualHost>
第二步:配置客户端hosts文件
因是内部团队使用,无需注册公网域名,只需在所有客户端的hosts文件添加IP映射:
- Windows:编辑
C:\Windows\System32\drivers\etc\hosts - Linux/macOS:编辑
/etc/hosts
添加一行:192.168.0.100 getwbspcdb.com
第三步:重启Apache服务
执行命令使配置生效:
- Linux:
sudo systemctl restart apache2 - Windows:打开Apache服务管理器,点击重启。
内容的提问来源于stack exchange,提问作者Ken eXs
相关产品推荐
相关产品推荐

