<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="安装任意版本 PHP/Nginx 的通用步骤（Ubuntu / Debian/Alpine）">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2025-04-10 09:29<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
安装任意版本 PHP/Nginx 的通用步骤（Ubuntu / Debian/Alpine）




1. 添加 PHP 官方维护的源（由 Ondřej Sur&yacute; 提供）


Ubuntu:


XML/HTML代码


    sudo apt update

    sudo apt install -y software-properties-common

    sudo add-apt-repository ppa:ondrej/php

    sudo apt update





Debian:


XML/HTML代码


    sudo apt install -y apt-transport-https lsb-release ca-certificates curl gnupg

    curl -fsSL https://packages.sury.org/php/apt.gpg | sudo gpg --dearmor -o /usr/share/keyrings/sury-php.gpg

    echo &quot;deb [signed-by=/usr/share/keyrings/sury-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main&quot; | sudo tee /etc/apt/sources.list.d/php.list

    sudo apt update





2. 安装你想要的 PHP 版本


比如：


XML/HTML代码


    sudo apt install php8.2





安装常见模块（以 PHP 8.2 为例）：


XML/HTML代码


    sudo apt install php8.2-cli php8.2-fpm php8.2-mysql php8.2-curl php8.2-xml php8.2-mbstring php8.2-zip php8.2-gd





你可以用以下命令列出所有可用 PHP 版本：




XML/HTML代码


    apt search ^php | grep -E '^php[0-9]+\.[0-9]+'







3. 设置默认 PHP 版本（如果安装了多个版本）


# 注册 PHP 可选项到 update-alternatives：


XML/HTML代码


    sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.1 81

    sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.2 82





# 然后切换默认版本：


XML/HTML代码


    sudo update-alternatives --config php







# 验证当前版本：




XML/HTML代码


    php -v







可选：切换 phpize 和 php-config（某些软件编译时需要）


XML/HTML代码


    sudo update-alternatives --install /usr/bin/phpize phpize /usr/bin/phpize8.1 81

    sudo update-alternatives --install /usr/bin/phpize phpize /usr/bin/phpize8.2 82

    sudo update-alternatives --install /usr/bin/php-config php-config /usr/bin/php-config8.1 81

    sudo update-alternatives --install /usr/bin/php-config php-config /usr/bin/php-config8.2 82

    sudo update-alternatives --config phpize

    sudo update-alternatives --config php-config





# 可选：切换 PHP-FPM（Web 服务用）


如果你用的是 Nginx + PHP-FPM，还需要切换 FPM：


# 安装多个 PHP-FPM 版本：


XML/HTML代码


    sudo apt-get install php8.1-fpm php8.2-fpm





# 修改 Nginx 配置中的 FPM socket 路径，如：


XML/HTML代码


    fastcgi_pass unix:/run/php/php8.2-fpm.sock;





# 重启服务：


XML/HTML代码


    sudo systemctl restart php8.2-fpm

    sudo systemctl reload nginx







Ubuntu 安装任意版本 Nginx


方法 ：使用 Nginx 官方源（推荐）


Nginx 官方专门为 Ubuntu 维护了包：


XML/HTML代码


    # 导入 GPG key：

    curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg &gt;/dev/null

    # 添加官方源（适配 Ubuntu 版本）：

    codename=$(lsb_release -cs)

    echo &quot;deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu $codename nginx&quot; | sudo tee /etc/apt/sources.list.d/nginx.list





更新仓库并查看版本：


XML/HTML代码


    sudo apt update

    apt list -a nginx





安装特定版本：


XML/HTML代码


    sudo apt install nginx=&lt;version&gt;





Ubuntu 的版本代号如 focal, jammy 会影响 nginx 包的可用性。可以去 Nginx 的官方仓库查对应代号是否被支持。


Debian 安装任意版本 Nginx


方法 ：使用 Nginx 官方源（专门为 Debian 提供）


XML/HTML代码


    # 导入 GPG key：

    curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg &gt;/dev/null

    # 添加官方源（适配 Debian 版本）：

    codename=$(lsb_release -cs)

    echo &quot;deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/debian $codename nginx&quot; | sudo tee /etc/apt/sources.list.d/nginx.list





继续与 Ubuntu 相同的步骤进行安装。


Debian 的版本代号如 buster, bullseye, bookworm 需要与你当前系统匹配。


可用版本查询办法：


官方 Nginx 仓库页面：


Ubuntu: https://nginx.org/packages/ubuntu/


Debian: https://nginx.org/packages/debian/


Ubuntu 的 Launchpad（历史包）:


https://launchpad.net/ubuntu/+source/nginx


Debian Snapshots（历史包）:


https://snapshot.debian.org/package/nginx/




附：Alpine系统安装不同版本PHP和Nginx的方法


不同Alpine系统版本默认PHP和Nginx的版本不同，可以通过添加源的方法实现，例如需要安装PHP7.4则可以添加以下源




XML/HTML代码


    http://dl-cdn.alpinelinux.org/alpine/v3.15/main

    http://dl-cdn.alpinelinux.org/alpine/v3.15/community




然后使用下面命令安装




1. 更新 APK 软件包索引


XML/HTML代码


    sudo apk update





2. 安装 PHP 7.4 及相关扩展（根据需求修改，安装更多扩展）


XML/HTML代码


    sudo apk add php7 php7-cli php7-fpm php7-mysqli php7-json php7-opcache php7-session php7-mbstring





3. 检查 PHP 版本


XML/HTML代码


    php -v





4. 启动 PHP-FPM 服务


XML/HTML代码


    sudo rc-service php7-fpm start





5. 设置 PHP-FPM 在启动时自动启动




XML/HTML代码


    sudo rc-update add php7-fpm





常见版本支持情况


XML/HTML代码


    Alpine 版本   PHP 版本        Nginx 版本

    3.13          7.4            1.18.0

    3.14          7.4,8.0        1.20.2

    3.15          7.4,8.0        1.20.2

    3.16          8.0,8.1        1.22.1

    3.17          8.1            1.22.1

    3.18          8.1, 8.2       1.24.0

    3.19          8.1, 8.2, 8.3  1.24.0

    3.20          8.2, 8.3       1.26.3

    3.21          8.2, 8.3, 8.4  1.26.3

    edge          8.2, 8.3, 8.4  1.26.3





详细支持参考上表手动安装。注意：Nginx不能使用换源方法安装指定版本，必须手动编译。




在 Alpine Linux 上编译指定版本的 Nginx，你可以按照以下步骤操作。


假设你要编译 Nginx 版本 1.24.0（你可以根据需要替换为其他版本）。


步骤一：准备构建环境


XML/HTML代码


    apk update

    apk add build-base pcre-dev zlib-dev openssl-dev curl





步骤二：下载指定版本的 Nginx 源码


XML/HTML代码


    NGINX_VERSION=1.24.0

    curl -O http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz

    tar zxvf nginx-${NGINX_VERSION}.tar.gz

    cd nginx-${NGINX_VERSION}





步骤三：配置编译选项（可按需调整）


XML/HTML代码


    ./configure \

      --prefix=/opt/nginx \

      --with-http_ssl_module \

      --with-http_v2_module \

      --with-http_gzip_static_module \

      --with-pcre \

      --with-stream \

      --with-stream_ssl_module





步骤四：编译并安装


XML/HTML代码


    make -j$(nproc)

    make install





步骤五：运行验证


XML/HTML代码


    /opt/nginx/sbin/nginx -v

    /opt/nginx/sbin/nginx





默认安装路径是 /opt/nginx，你可以将其加到 PATH 中：


XML/HTML代码


    export PATH=$PATH:/opt/nginx/sbin





设置Nginx开机启动


方案一：使用 OpenRC（Alpine 默认的 init 系统）


1. 创建 OpenRC 服务脚本


创建一个服务文件 /etc/init.d/nginx：


XML/HTML代码


    vi /etc/init.d/nginx





内容如下（请确保路径与你的实际安装路径一致，比如 /opt/nginx/sbin/nginx）：


XML/HTML代码


    #!/sbin/openrc-run

    name=&quot;nginx&quot;

    description=&quot;Nginx web server&quot;

    command=&quot;/opt/nginx/sbin/nginx&quot;

    command_args=&quot;-c /opt/nginx/conf/nginx.conf&quot;

    pidfile=&quot;/opt/nginx/logs/nginx.pid&quot;

    depend() {

        need net

        use dns logger

        after firewall

    }





2. 添加执行权限


XML/HTML代码


    chmod +x /etc/init.d/nginx





3. 添加到开机启动


XML/HTML代码


    rc-update add nginx default





4. 启动服务


XML/HTML代码


    rc-service nginx start





方案二：使用 supervisord 管理（适用于 Docker 或后台多进程管理）


安装：




XML/HTML代码


    apk add supervisor







配置 /etc/supervisord.conf 或单独的配置文件：


XML/HTML代码


    [program:nginx]

    command=/opt/nginx/sbin/nginx -g 'daemon off;'

    autorestart=true

    stdout_logfile=/var/log/nginx.stdout.log

    stderr_logfile=/var/log/nginx.stderr.log





启动 supervisord：


XML/HTML代码


    supervisord -c /etc/supervisord.conf





设置开机自启：


XML/HTML代码


    rc-update add supervisor





方案三：写入 /etc/local.d/nginx.start 脚本（适合 Alpine 系统）


创建文件：


XML/HTML代码


    vi /etc/local.d/nginx.start





内容：


XML/HTML代码


    #!/bin/sh

    /opt/nginx/sbin/nginx





设置权限：


XML/HTML代码


    chmod +x /etc/local.d/nginx.start





启用 local 服务：


XML/HTML代码


    rc-update add local





查看是否成功设置开机启动


XML/HTML代码


    rc-status  





以上操作均为验证，如需使用请自行验证修改。






</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
