我在 Debian 上意识到一个使用 php fpm 的 apache 服务器,但出于安全问题,带有 php fpm 的虚拟主机位于 chroot 中。
理想的情况是每个人都可以根据自己的需要修改自己的站点以及 php fpm 的配置,但与服务器保持隔离,目标都是由 chroot 之外的 apache 管理。
由于我处于 chroot 环境中,我还必须在外部使用 systemd 启动 fpm。 到现在为止,没问题...
但是当我开始在虚拟主机中使用 phpx.x-fpm.sock 时,当我访问该站点时,我得到一个“找不到文件”
配置
/etc/apache2/sites-enabled/$domain.conf:
...
<VirtualHost ip:80 >
ServerName $domain
ServerAlias www.$domain
UseCanonicalName Off
ErrorLog "/var/www/vhosts/$user/var/app/system/logs/$domain/error.log"
CustomLog "/var/www/vhosts/$user/var/app/system/logs/$domain/access.log" combined
DocumentRoot "/var/www/vhosts/$user/var/app/www/$domain/httpdocs"
<Directory /var/www/vhosts/$user/var/app/www/$domain/httpdocs>
<IfModule mod_proxy_fcgi.c>
<FilesMatch \.php$>
SetHandler proxy:unix:/var/www/vhosts/$user/run/php/php8.1-fpm.sock|fcgi://localhost
</FilesMatch>
</IfModule>
</Directory>
DirectoryIndex "index.php" "index.html" "index.htm"
<Directory /var/www/vhosts/$user/var/app/www/$domain>
Options -FollowSymLinks -Indexes
AllowOverride AuthConfig FileInfo Indexes Limit Options=Indexes,SymLinksIfOwnerMatch,MultiViews,ExecCGI,Includes,IncludesNOEXEC
</Directory>
</VirtualHost>
...
/etc/systemd/system/phpx.x-$user.service :
...
Description=The PHP 8.1 FastCGI Process Manager of $user
Documentation=man:php-fpm8.1(8)
After=network.target
[Service]
Type=notify
RootDirectory=/var/www/vhosts/$user
MountAPIVFS=true
RuntimeDirectory=/run
RemoveIPC=true
PrivateTmp=true
ExecStart=/usr/sbin/php-fpm8.1 --nodaemonize --fpm-config /etc/php/8.1/fpm/php-fpm.conf
ExecStartPost=-/usr/lib/php/php-fpm-socket-helper install /run/php/php-fpm.sock /etc/php/8.1/fpm/pool.d/www.conf 81
ExecStopPost=-/usr/lib/php/php-fpm-socket-helper remove /run/php/php-fpm.sock /etc/php/8.1/fpm/pool.d/www.conf 81
ExecReload=/bin/kill -USR2 \$MAINPID
[Install]
WantedBy=multi-user.target
...
当然,不仅是我建议你看这里,那里有fpm的整个安装脚本here
如果你有兴趣,我还有准备整个服务器的脚本......这里
所有这些都只是一个“找不到文件”,没有给我任何其他指示......
根据我的研究人员给出类似的标题,有另一个安装并在 fpm 配置文件中使用“chroot”模式。我发现这对我的安装没有用,因为整个 fpm 都是 chroot 的。
我应该制作一个 TCP 套接字吗? 但它会更不安全......好吧我认为
我应该更改 php-fpm.conf 配置中的监听吗?