Apache / WSGI 和 PHP 突然无法连接到 MSSQL 服务器——站点宕机

Posted

技术标签:

【中文标题】Apache / WSGI 和 PHP 突然无法连接到 MSSQL 服务器——站点宕机【英文标题】:Apache / WSGI and PHP suddenly unable to connect to MSSQL server -- site down 【发布时间】:2019-05-14 09:16:13 【问题描述】:

从昨天到今天,发生了一些事情,阻止在 Apache 下运行的进程访问对站点运行至关重要的 MSSQL 服务器。

这是我在 php 脚本的 Apache 错误日志中找到的:

PHP Warning:  mssql_connect(): Unable to connect to server

Flask/SQLAlchemy 应用程序提供更多信息:

OperationalError: (OperationalError) (20009, 'DB-Lib error message 20009,
severity 9:\\nUnable to connect: Adaptive Server is unavailable or does
not exist (####:1234)\\nNet-Lib error during Permission
denied(13)\\n') None None

当我在运行 Apache 的同一台机器上从控制台以测试模式启动同一个 WSGI 应用程序时,一切正常。总结一下:

如果在 Apache 下运行,WSGI 和 PHP 都无法在一夜之间连接到 MSSQL 服务器

在不带 Apache 的情况下运行时,WSGI 脚本可以正常工作(无法判断 PHP,因为那不是我的域)

运行 Web 应用程序的服务器上没有任何改变(不能说 MSSQL 服务器)

我需要一个快速的线索。这些东西在公司内部网中运行,人们变得不耐烦了。我只能控制运行 Apache 的 RHEL 服务器,而不是 MSSQL 服务器。

在freetds page 上使用 tsql 的故障排除提示都可以正常工作。

我的 /etc/freetds.conf 是开箱即用的,基本上是空的(所有内容都被注释掉了)。

【问题讨论】:

【参考方案1】:

原来它与 Apache 等人无关。这是一个 SELinux 权限问题,在夜间重新启动 VM 后开始,可能是由印度的管理员发起的。显然,apache 有一个更新的安全策略。在 /var/log/messages 中发现了问题,幸运的是,其中甚至包含有关如何修复它的说明。

【讨论】:

以上是关于Apache / WSGI 和 PHP 突然无法连接到 MSSQL 服务器——站点宕机的主要内容,如果未能解决你的问题,请参考以下文章

带有mod_wsgi的flask-restless无法连接到MySQL服务器

无法使用 mod-wsgi 在 Apache 上部署 django

无法使用 mod_wsgi 从 python wsgi 连接到 pymssql

Django wsgi.py + Apache 无法部署,但是

目标 WSGI 脚本无法作为 Python module.Flask.Apache 加载

带有 apache 的 wsgi 无法读取管道安装的 python 包