在 Ubuntu 上配置 PHP-FPM 多实例可以帮助你更好地管理不同的 PHP 应用程序,提高安全性和性能。以下是一个详细的步骤指南,帮助你在 Ubuntu 系统上设置多个 PHP-FPM 实例。
前提条件
- 已安装 Ubuntu 服务器(推荐使用最新的 LTS 版本)。
- 具有
sudo权限的用户。
步骤一:安装 PHP 和 PHP-FPM
首先,确保你的系统已经安装了 PHP 和 PHP-FPM。如果尚未安装,可以使用以下命令进行安装:
sudo apt update
sudo apt install php-fpm php-cli
步骤二:复制默认的 PHP-FPM 配置文件
PHP-FPM 的默认配置文件位于 /etc/php/{版本号}/fpm/pool.d/www.conf。为了创建多个实例,我们需要复制并修改这个配置文件。
假设我们要创建两个 PHP-FPM 实例,分别用于不同的项目。
创建实例目录
sudo mkdir -p /etc/php/{版本号}/fpm/pool.d
将 {版本号} 替换为你当前安装的 PHP 版本,例如 7.4 或 8.0。
复制默认配置文件
sudo cp /etc/php/{版本号}/fpm/pool.d/www.conf /etc/php/{版本号}/fpm/pool.d/project1.conf
sudo cp /etc/php/{版本号}/fpm/pool.d/www.conf /etc/php/{版本号}/fpm/pool.d/project2.conf
步骤三:配置每个 PHP-FPM 实例
编辑每个实例的配置文件,以区分它们。
编辑 project1.conf
sudo nano /etc/php/{版本号}/fpm/pool.d/project1.conf
修改以下参数:
[project1]
user = www-data
group = www-data
listen = /run/php/php{版本号}-project1.sock
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
php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 512M
说明:
listen:指定 Unix socket 的路径,确保不同实例的路径唯一。pm.max_children、pm.start_servers等参数根据你的服务器资源进行调整。php_admin_value[memory_limit]:设置每个子进程的内存限制。
编辑 project2.conf
sudo nano /etc/php/{版本号}/fpm/pool.d/project2.conf
类似于 project1.conf,修改相关参数,例如:
[project2]
user = www-data
group = www-data
listen = /run/php/php{版本号}-project2.sock
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
php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = 512M
确保 listen 路径唯一,例如使用 php{版本号}-project2.sock。
步骤四:重启 PHP-FPM 服务
对于每个实例,分别重启 PHP-FPM 服务以应用配置更改。
sudo systemctl restart php{版本号}-fpm
例如,对于 PHP 7.4:
sudo systemctl restart php7.4-fpm
sudo systemctl restart php7.4-fpm@project1
sudo systemctl restart php7.4-fpm@project2
步骤五:配置 Nginx 或 Apache 使用不同的 PHP-FPM 实例
根据你使用的 Web 服务器,配置相应的虚拟主机以使用不同的 PHP-FPM 实例。
对于 Nginx
假设你有两个项目分别位于 /var/www/project1 和 /var/www/project2。
配置 project1
编辑 Nginx 的虚拟主机文件:
sudo nano /etc/nginx/sites-available/project1
添加或修改以下内容:
server {
listen 80;
server_name project1.example.com;
root /var/www/project1;
index index.php index.html index.htm;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php{版本号}-project1.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location / {
try_files $uri $uri/ =404;
}
}
配置 project2
编辑 Nginx 的虚拟主机文件:
sudo nano /etc/nginx/sites-available/project2
添加或修改以下内容:
server {
listen 80;
server_name project2.example.com;
root /var/www/project2;
index index.php index.html index.htm;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php{版本号}-project2.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location / {
try_files $uri $uri/ =404;
}
}
启用站点并测试配置
sudo ln -s /etc/nginx/sites-available/project1 /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/project2 /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
对于 Apache
如果你使用 Apache,可以通过 mod_proxy_fcgi 来配置。
启用必要的模块
sudo a2enmod proxy_fcgi setenvif
sudo systemctl restart apache2
配置虚拟主机
编辑 Apache 的虚拟主机文件,例如 /etc/apache2/sites-available/project1.conf:
:80 >
ServerName project1.example.com
DocumentRoot /var/www/project1
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
SetHandler "proxy:unix:/run/php/php{版本号}-project1.sock|fcgi://localhost"
同样地,为 project2 创建类似的配置文件 /etc/apache2/sites-available/project2.conf。
启用站点并测试配置
sudo a2ensite project1.conf
sudo a2ensite project2.conf
sudo systemctl restart apache2
步骤六:验证配置
确保每个项目都使用正确的 PHP-FPM 实例运行。
- 访问
project1.example.com和project2.example.com,检查是否正常显示。 - 查看 PHP-FPM 日志以确认请求被正确处理:
sudo tail -f /var/log/php{版本号}-fpm@project1.log
sudo tail -f /var/log/php{版本号}-fpm@project2.log
额外提示
-
权限设置:确保 PHP-FPM 用户(通常是
www-data)对项目目录有适当的读写权限。 -
资源限制:根据服务器的资源调整
pm.max_children等参数,以避免资源耗尽。 -
安全性:限制 PHP-FPM 监听的地址,仅允许必要的连接,增强安全性。
-
监控和优化:使用工具如
systemd的服务监控或第三方监控工具来监控 PHP-FPM 实例的性能和健康状态。
通过以上步骤,你应该能够在 Ubuntu 上成功配置多个 PHP-FPM 实例,以更好地管理和优化不同的 PHP 应用程序。
以上就是关于“如何在ubuntu上配置php-fpm多实例”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm