CentOS 上的 Nginx + PHP-fastcgi + MySQL:与 MySQL 连接的所有文件中均出现 502 Bad Gateway

CentOS 上的 Nginx + PHP-fastcgi + MySQL:与 MySQL 连接的所有文件中均出现 502 Bad Gateway

我正在尝试在运行 CentOS 的 VPS 上安装带有 PHP 和 MySQL 的 Nginx 服务器。

我跟着本教程安装所有软件。

服务器正在运行,虚拟主机正在工作,但是当我尝试连接到 PHP 文件中的 MySQL 时,服务器返回 502 Bad Gateway。

我是 Linus 的新手,所以我不知道在哪里可以找到所有的日志等。

我在虚拟主机日志中发现了这个错误,但我不知道它意味着什么。

2012/04/15 23:07:33 [错误] 22360#0:*3 connect() 连接到上游时失败(111:连接被拒绝),客户端:212.45.63.107,服务器:@host,请求:“GET /test.php HTTP/1.1”,上游:“fastcgi://127.0.0.1:9000”,主机:“@host”

(其中@host 是我的服务器)

答案1

看起来 PHP 无法连接到 MySQL,这取决于您使用哪个 http 服务器以及您将 php 连接到 http 服务器的方式。

首先,检查您的 MySQL 是否正在运行并监听(您可能忘记运行它)。只需mysql从 CLI 运行,看看它是否连接。您可能需要使用-h host密钥将 mysql 客户端指向正确的主机。

然后,尝试运行最简单的脚本(例如

<?php
$link = mysql_connect('hostname', 'mysql_user', 'mysql_password');
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>

这样你就会看到错误是什么了。如果你的 MySQL 在 localhost (127.0.0.1) 上监听,那么使用‘本地主机’作为主机名(示例中为“hostname”),如果它在套接字中监听,则使用套接字路径(类似于':/tmp/mysql')。

祝你好运!

答案2

端口 9000 上是否有任何程序在运行?检查 的输出netstat -anp | grep :9000。看起来 PHP 要么没有运行(要么被防火墙阻拦了)。

PHP 本身是否真的在运行?检查 的输出ps aux | grep php。如果没有,您应该检查您所做的操作以再次将其启用为服务。

相关内容