在Ubuntu中实现PHP-FPM的集群部署,可以通过以下步骤来完成:
首先,确保你的系统上已经安装了PHP和PHP-FPM。你可以使用以下命令来安装:
sudo apt update
sudo apt install php-fpm
PHP-FPM的配置文件通常位于/etc/php/{version}/fpm/pool.d/www.conf,其中{version}是你的PHP版本号。你需要为每个PHP-FPM实例创建一个单独的配置文件。
例如,创建两个PHP-FPM实例:
sudo cp /etc/php/{version}/fpm/pool.d/www.conf /etc/php/{version}/fpm/pool.d/www1.conf
sudo cp /etc/php/{version}/fpm/pool.d/www.conf /etc/php/{version}/fpm/pool.d/www2.conf
然后编辑这两个文件,修改listen参数以指向不同的Unix套接字或TCP端口:
; www1.conf
listen = /run/php/php7.4-fpm-www1.sock
; www2.conf
listen = /run/php/php7.4-fpm-www2.sock
启动每个PHP-FPM实例:
sudo systemctl start php{version}-fpm@www1
sudo systemctl start php{version}-fpm@www2
确保它们都在运行:
sudo systemctl status php{version}-fpm@www1
sudo systemctl status php{version}-fpm@www2
接下来,你需要配置Nginx或Apache来使用这些PHP-FPM实例。
编辑Nginx配置文件(通常位于/etc/nginx/sites-available/default),为每个服务器块指定不同的PHP-FPM实例:
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.php index.html index.htm;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm-www1.sock;
}
}
server {
listen 80;
server_name example2.com;
root /var/www/html;
index index.php index.html index.htm;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm-www2.sock;
}
}
然后重新加载Nginx配置:
sudo nginx -t
sudo systemctl reload nginx
如果你使用Apache,可以安装mod_proxy_fcgi模块并配置虚拟主机:
sudo a2enmod proxy_fcgi setenvif
sudo systemctl restart apache2
编辑Apache配置文件(通常位于/etc/apache2/sites-available/000-default.conf),为每个虚拟主机指定不同的PHP-FPM实例:
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/html
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php7.4-fpm-www1.sock|fcgi://localhost"
</FilesMatch>
</VirtualHost>
<VirtualHost *:80>
ServerName example2.com
DocumentRoot /var/www/html
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php7.4-fpm-www2.sock|fcgi://localhost"
</FilesMatch>
</VirtualHost>
然后重新加载Apache配置:
sudo systemctl reload apache2
最后,测试你的集群部署是否正常工作。访问你的网站,确保它们能够正确处理PHP请求。
通过以上步骤,你可以在Ubuntu上实现PHP-FPM的集群部署。根据你的需求,你可以添加更多的PHP-FPM实例,并相应地调整Nginx或Apache的配置。