一个vps怎么安装两个php版本?_详细教程教你配置多版本php环境

如何在同一个VPS服务器上安装并配置两个不同版本的PHP?

安装方法 适用系统 复杂度 灵活性
使用PPA源安装 Ubuntu/Debian 中等 较高
源码编译安装 所有Linux系统 较高 最高
使用Docker容器 所有Linux系统 较低 中等
第三方管理工具 CentOS/RHEL 较低 中等

一个VPS安装两个PHP版本的完整指南

主要安装方法对比

方法名称 操作步骤 适用场景 优势特点
使用PPA源安装 4步 Ubuntu/Debian系统 安装简单,版本更新及时
源码编译安装 6步 所有Linux发行版 完全自定义,灵活性最高
Docker容器部署 5步 需要环境隔离 环境隔离,互不干扰

方法一:使用PPA源安装(Ubuntu/Debian)

步骤1:更新系统并添加PPA源

操作说明:首先更新系统包管理器,然后添加包含多个PHP版本的PPA源。 使用工具提示:使用apt包管理器和add-apt-repository命令。
sudo apt update
sudo apt upgrade -y
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update

步骤2:安装两个PHP版本

操作说明:同时安装PHP 7.4和PHP 8.0两个版本。 使用工具提示:使用apt install命令指定版本号。
# 安装PHP 7.4
sudo apt install php7.4 php7.4-fpm php7.4-cli php7.4-common php7.4-mysql

安装PHP 8.0

sudo apt install php8.0 php8.0-fpm php8.0-cli php8.0-common php8.0-mysql

步骤3:配置PHP-FPM服务

操作说明:为每个PHP版本配置独立的PHP-FPM服务。 使用工具提示:编辑PHP-FPM配置文件,设置不同的监听端口。
# 编辑PHP 7.4 FPM配置
sudo nano /etc/php/7.4/fpm/pool.d/www.conf

修改监听设置(PHP 7.4)

listen = /run/php/php7.4-fpm.sock

或者使用端口

listen = 127.0.0.1:9074

编辑PHP 8.0 FPM配置

sudo nano /etc/php/8.0/fpm/pool.d/www.conf

修改监听设置(PHP 8.0)

listen = /run/php/php8.0-fpm.sock

或者使用端口

listen = 127.0.0.1:9080

步骤4:启动服务并配置Nginx

操作说明:启动PHP-FPM服务并在Nginx中配置虚拟主机。 使用工具提示:使用systemctl管理服务,编辑Nginx站点配置。
# 启动PHP-FPM服务
sudo systemctl start php7.4-fpm
sudo systemctl start php8.0-fpm
sudo systemctl enable php7.4-fpm
sudo systemctl enable php8.0-fpm

检查服务状态

sudo systemctl status php7.4-fpm sudo systemctl status php8.0-fpm
Nginx站点配置示例:
server {
    listen 80;
    servername site1.example.com;
    
    location ~ \.php$ {
        fastcgipass 127.0.0.1:9074;
        include fastcgi.conf;
    }
}
server {
    listen 80;
    servername site2.example.com;
    
    location ~ \.php$ {
        fastcgipass 127.0.0.1:9080;
        include fastcgi.conf;
    }
}

方法二:源码编译安装

步骤1:安装编译依赖

操作说明:安装编译PHP所需的开发工具和库文件。 使用工具提示:使用apt或yum包管理器安装开发工具。
# Ubuntu/Debian
sudo apt install build-essential autoconf libtool pkg-config \
    libxml2-dev libsqlite3-dev libcurl4-openssl-dev \
    libonig-dev libzip-dev

CentOS/RHEL

sudo yum groupinstall "Development Tools" sudo yum install libxml2-devel sqlite-devel curl-devel \ oniguruma-devel libzip-devel

步骤2:下载并编译第一个PHP版本

操作说明:下载PHP 7.4源码并编译安装到独立目录。 使用工具提示:使用wget下载,configure配置,make编译。
# 下载PHP 7.4
wget https://www.php.net/distributions/php-7.4.33.tar.gz
tar -xzf php-7.4.33.tar.gz
cd php-7.4.33

配置编译选项

./configure --prefix=/opt/php74 \ --with-config-file-path=/opt/php74/etc \ --enable-fpm \ --with-fpm-user=www-data \ --with-fpm-group=www-data

编译安装

make -j4 sudo make install

步骤3:下载并编译第二个PHP版本

操作说明:下载PHP 8.0源码并编译安装到另一个独立目录。
# 下载PHP 8.0
wget https://www.php.net/distributions/php-8.0.28.tar.gz
tar -xzf php-8.0.28.tar.gz
cd php-8.0.28

配置编译选项

./configure --prefix=/opt/php80 \ --with-config-file-path=/opt/php80/etc \ --enable-fpm \ --with-fpm-user=www-data \ --with-fpm-group=www-data

编译安装

make -j4 sudo make install

步骤4:配置系统服务

操作说明:为两个PHP版本创建systemd服务文件。 使用工具提示:在/etc/systemd/system/目录创建服务文件。
# 创建PHP 7.4服务文件
sudo nano /etc/systemd/system/php74-fpm.service
[Unit]
Description=PHP 7.4 FastCGI Process Manager
After=network.target
[Service]
Type=simple
ExecStart=/opt/php74/sbin/php-fpm --nodaemonize --fpm-config /opt/php74/etc/php-fpm.conf
Restart=on-failure
[Install]
WantedBy=multi-user.target

常见问题及解决方案

问题 原因 解决方案
PHP-FPM服务启动失败 端口冲突或配置文件错误 检查配置文件中的监听端口,确保每个PHP版本使用不同的端口或socket文件
Nginx返回502错误 PHP-FPM未运行或配置不匹配 确认PHP-FPM服务状态,检查Nginx配置中的fastcgipass地址是否正确
扩展模块不兼容 不同PHP版本扩展API变化 为每个PHP版本单独编译安装对应的扩展模块
内存占用过高 同时运行多个PHP进程 调整php-fpm.conf中的pm.maxchildren参数,优化进程数量
版本切换困难 系统默认PHP版本设置 使用update-alternatives命令管理多版本,或通过虚拟主机配置指定版本

验证安装结果

操作说明:创建测试文件验证两个PHP版本都能正常工作。 使用工具提示:在网站根目录创建PHP信息文件。 ```bash

为站点1创建测试文件

echo "

发表评论

评论列表