phpfpm 和 apache 配置不起作用

phpfpm 和 apache 配置不起作用

我最近在 ubuntu 虚拟机上研究三层架构,1 个桌面和 2 个服务器,

他们的网络配置设置为桥接适配器,以便直接与 wifi 卡通信

机器 角色
Ubuntu 桌面 22.04 Apache 2.4.52
Ubuntu 服务器 1 22.04 PHP-FPM 8.1
Ubuntu 服务器 2 22.04 MySQL 8.0.36
  • 首先我启用了代理、proxy_fcgi 和重写模块,因为 apache 和 phpfpm 使用 fastcgi 协议进行通信,配置了我的 apache 虚拟主机并将 sethandler ip 设置为 phpFPM_serverIP:port(9000),重新加载了 apache2 服务并检查了该服务,它运行良好

我的虚拟主机配置

<VirtualHost *:80>
ServerName sghaierDev.com
ServerAlias www.sghaierDev.com
ServerAdmin webmaster@localhost
# PHP-FPM proxying
<FilesMatch \.php$>
    SetHandler "proxy:fcgi://php_fpm_server_ip:9000"
</FilesMatch>

DocumentRoot /var/www/sghaierDev
<Directory /var/www/sghaierDev>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
  • 之后我传递到 phpfpm 服务器,我在配置文件 (/etc/php/8.1/fpm/pool.d/www.conf) 中设置了 listen 指令,重新启动了服务并且它运行正常

php fpm 配置(省略注释以澄清)

user = www-data
group = www-data
listen = php_fpm_server_ip:9000
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
  • 对于 mysql 执行相同的步骤,我将绑定地址设置为 mysqlserverIp,重新启动服务,它也能正常工作

Mysql 配置(省略注释以澄清)

user        = mysql
port        = 3306
datadir     = /mnt/mysql_data
bind-address        = mysql_server_ip
mysqlx-bind-address = 127.0.0.1

测试阶段

  • 在没有 filesMatch 指令的情况下进行测试时,可以正常访问 php 文件(例如 types.php)

types.php 代码

<?php
$user = "adem";
$password = "password";
$database = "projects";
$table = "categories";

try {
  $db = new PDO("mysql:host=mysql_server_ip;dbname=$database", 
  $user, $password);
  echo "<h2>Projects categories</h2><ol>";
  foreach($db->query("SELECT p_type FROM $table") as $row) {
    echo "<li>" . $row['p_type'] . "</li>";
}
  echo "</ol>";
} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}

问题

  • 当添加提到的指令以设置 phpfpm 和 apache 之间的连接时,他返回文件未找到,我想也许我应该更改文件权限,我已经做了但我得到了相同的输出,我也检查了 phpfpm 和 apache 机器中的配置文件(特别是 ip 地址)并且值设置正确,还检查了双方的防火墙权限,它们允许任何具有端口 9000(phpfpm)和 80(apache)的主机
  • 我还检查了虚拟主机中提到的错误日志,它显示了这个错误

[2024 年 4 月 1 日星期一 16:41:36.755830] [proxy_fcgi:error] [pid 5356] [客户端 php-fpm_ip:49204] AH01071:出现错误“主脚本未知”


任何解决方案,因为我是处理这些类型的架构的新手,我在寻找解决方案上浪费了太多时间,提前谢谢

相关内容