为 Nginx 安装多个 PHP 版本,可以通过以下步骤实现:
步骤一:安装 PHP
- 在系统中安装所需版本的 PHP,例如,安装 PHP 7.4 和 PHP 8.0 版本:
sudo apt-get install php7.4-fpm php7.4-cli
sudo apt-get install php8.0-fpm php8.0-cli
- 安装完毕后,在系统中检查 PHP 是否已经成功安装,并记录 PHP-FPM 的安装位置。
php7.4 -v
php -v
systemctl status php7.4-fpm
记录下安装目录,例如 /usr/sbin/php-fpm7.4。
步骤二:配置 Nginx
- 在 Nginx 中配置不同版本的 PHP,需要在每个 Server 块中设置 fastcgi_pass,其值为对应版本的 php-fpm。
例如,典型的 Nginx 配置如下:
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
- 在配置中,fastcgi_pass 用于指定 PHP 版本。例如,使用 PHP 8.0 版本:
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
示例说明
示例 1:安装并配置 Nginx 支持 PHP 7.4 和 PHP 8.0。
- 安装 PHP
sudo apt-get install php7.4-fpm php7.4-cli
sudo apt-get install php8.0-fpm php8.0-cli
- 配置 Nginx
在 Nginx 的配置文件中,假设有两个 Server 块对应两个不同的网站,需要分别配置不同的 PHP 版本:
```
server {
listen 80;
server_name site1.com;
root /var/www/site1;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
server {
listen 80;
server_name site2.com;
root /var/www/site2;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
```
- 重载 Nginx,使配置生效。
sudo service nginx reload
示例 2:升级 PHP 版本
- 安装新的 PHP 版本
sudo apt-get install php8.1-fpm php8.1-cli
- 配置 Nginx
将所有 Server 块中 fastcgi_pass 的值修改为新版本的 PHP-FPM 路径。
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
- 重载 Nginx,使配置生效。
sudo service nginx reload
注意事项:
- 若启动多个版本的 PHP,需要将不同版本的 PHP-FPM 监听在不同的端口或 Unix socket 上,否则会产生端口被占用以及版本冲突的错误。
- 在配置中除了需要指定 PHP-FPM 的监听方式之外,还需要注意其他常规的配置,如 PHP 的环境变量、时区等。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Linux系统下为Nginx安装多版本PHP - Python技术站