记录我的一些生活写照、无聊的牢骚、内心世界的活动 注册 | 登陆

安装任意版本 PHP/Nginx 的通用步骤(Ubuntu / Debian/Alpine)

安装任意版本 PHP/Nginx 的通用步骤(Ubuntu / Debian/Alpine)

1. 添加 PHP 官方维护的源(由 Ondřej Surý 提供)
Ubuntu:
XML/HTML代码
  1. sudo apt update
  2. sudo apt install -y software-properties-common
  3. sudo add-apt-repository ppa:ondrej/php
  4. sudo apt update
Debian:
XML/HTML代码
  1. sudo apt install -y apt-transport-https lsb-release ca-certificates curl gnupg
  2. curl -fsSL https://packages.sury.org/php/apt.gpg | sudo gpg --dearmor -o /usr/share/keyrings/sury-php.gpg
  3. echo "deb [signed-by=/usr/share/keyrings/sury-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
  4. sudo apt update
2. 安装你想要的 PHP 版本
比如:
 
XML/HTML代码
  1. sudo apt install php8.2
安装常见模块(以 PHP 8.2 为例):
XML/HTML代码
  1. 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代码
  1. apt search ^php | grep -E '^php[0-9]+\.[0-9]+'
3. 设置默认 PHP 版本(如果安装了多个版本)
# 注册 PHP 可选项到 update-alternatives:
XML/HTML代码
  1. sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.1 81
  2. sudo update-alternatives --install /usr/bin/php php /usr/bin/php8.2 82
# 然后切换默认版本:
XML/HTML代码
  1. sudo update-alternatives --config php
# 验证当前版本:
XML/HTML代码
  1. php -v
可选:切换 phpize 和 php-config(某些软件编译时需要)
XML/HTML代码
  1. sudo update-alternatives --install /usr/bin/phpize phpize /usr/bin/phpize8.1 81
  2. sudo update-alternatives --install /usr/bin/phpize phpize /usr/bin/phpize8.2 82
  3. sudo update-alternatives --install /usr/bin/php-config php-config /usr/bin/php-config8.1 81
  4. sudo update-alternatives --install /usr/bin/php-config php-config /usr/bin/php-config8.2 82
  5. sudo update-alternatives --config phpize
  6. sudo update-alternatives --config php-config
# 可选:切换 PHP-FPM(Web 服务用)
如果你用的是 Nginx + PHP-FPM,还需要切换 FPM:
# 安装多个 PHP-FPM 版本:
XML/HTML代码
  1. sudo apt-get install php8.1-fpm php8.2-fpm
# 修改 Nginx 配置中的 FPM socket 路径,如:
XML/HTML代码
  1. fastcgi_pass unix:/run/php/php8.2-fpm.sock;
# 重启服务:
XML/HTML代码
  1. sudo systemctl restart php8.2-fpm
  2. sudo systemctl reload nginx
Ubuntu 安装任意版本 Nginx
方法 :使用 Nginx 官方源(推荐)
Nginx 官方专门为 Ubuntu 维护了包:
XML/HTML代码
  1. # 导入 GPG key:
  2. curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
  3. # 添加官方源(适配 Ubuntu 版本):
  4. codename=$(lsb_release -cs)
  5. echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu $codename nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
更新仓库并查看版本:
XML/HTML代码
  1. sudo apt update
  2. apt list -a nginx
安装特定版本:
XML/HTML代码
  1. sudo apt install nginx=<version>
Ubuntu 的版本代号如 focal, jammy 会影响 nginx 包的可用性。可以去 Nginx 的官方仓库查对应代号是否被支持。
Debian 安装任意版本 Nginx
方法 :使用 Nginx 官方源(专门为 Debian 提供)
XML/HTML代码
  1. # 导入 GPG key:
  2. curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
  3. # 添加官方源(适配 Debian 版本):
  4. codename=$(lsb_release -cs)
  5. echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/debian $codename nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
继续与 Ubuntu 相同的步骤进行安装。
Debian 的版本代号如 buster, bullseye, bookworm 需要与你当前系统匹配。
可用版本查询办法:
官方 Nginx 仓库页面:
Ubuntu 的 Launchpad(历史包):
Debian Snapshots(历史包):
附:Alpine系统安装不同版本PHP和Nginx的方法
不同Alpine系统版本默认PHP和Nginx的版本不同,可以通过添加源的方法实现,例如需要安装PHP7.4则可以添加以下源
XML/HTML代码
  1. http://dl-cdn.alpinelinux.org/alpine/v3.15/main
  2. http://dl-cdn.alpinelinux.org/alpine/v3.15/community
然后使用下面命令安装
1. 更新 APK 软件包索引
XML/HTML代码
  1. sudo apk update
2. 安装 PHP 7.4 及相关扩展(根据需求修改,安装更多扩展)
XML/HTML代码
  1. sudo apk add php7 php7-cli php7-fpm php7-mysqli php7-json php7-opcache php7-session php7-mbstring
3. 检查 PHP 版本
XML/HTML代码
  1. php -v
4. 启动 PHP-FPM 服务
XML/HTML代码
  1. sudo rc-service php7-fpm start
5. 设置 PHP-FPM 在启动时自动启动
XML/HTML代码
  1. sudo rc-update add php7-fpm
常见版本支持情况
XML/HTML代码
  1. Alpine 版本   PHP 版本        Nginx 版本
  2. 3.13          7.4            1.18.0
  3. 3.14          7.4,8.0        1.20.2
  4. 3.15          7.4,8.0        1.20.2
  5. 3.16          8.0,8.1        1.22.1
  6. 3.17          8.1            1.22.1
  7. 3.18          8.1, 8.2       1.24.0
  8. 3.19          8.1, 8.2, 8.3  1.24.0
  9. 3.20          8.2, 8.3       1.26.3
  10. 3.21          8.2, 8.3, 8.4  1.26.3
  11. edge          8.2, 8.3, 8.4  1.26.3
详细支持参考上表手动安装。注意:Nginx不能使用换源方法安装指定版本,必须手动编译。
在 Alpine Linux 上编译指定版本的 Nginx,你可以按照以下步骤操作。
假设你要编译 Nginx 版本 1.24.0(你可以根据需要替换为其他版本)。
步骤一:准备构建环境
XML/HTML代码
  1. apk update
  2. apk add build-base pcre-dev zlib-dev openssl-dev curl
步骤二:下载指定版本的 Nginx 源码
XML/HTML代码
  1. NGINX_VERSION=1.24.0
  2. curl -O http://nginx.org/download/nginx-${NGINX_VERSION}.tar.gz
  3. tar zxvf nginx-${NGINX_VERSION}.tar.gz
  4. cd nginx-${NGINX_VERSION}
步骤三:配置编译选项(可按需调整)
XML/HTML代码
  1. ./configure \
  2.   --prefix=/opt/nginx \
  3.   --with-http_ssl_module \
  4.   --with-http_v2_module \
  5.   --with-http_gzip_static_module \
  6.   --with-pcre \
  7.   --with-stream \
  8.   --with-stream_ssl_module
步骤四:编译并安装
XML/HTML代码
  1. make -j$(nproc)
  2. make install
步骤五:运行验证
XML/HTML代码
  1. /opt/nginx/sbin/nginx -v
  2. /opt/nginx/sbin/nginx
默认安装路径是 /opt/nginx,你可以将其加到 PATH 中:
XML/HTML代码
  1. export PATH=$PATH:/opt/nginx/sbin
设置Nginx开机启动
方案一:使用 OpenRC(Alpine 默认的 init 系统)
1. 创建 OpenRC 服务脚本
创建一个服务文件 /etc/init.d/nginx:
XML/HTML代码
  1. vi /etc/init.d/nginx
内容如下(请确保路径与你的实际安装路径一致,比如 /opt/nginx/sbin/nginx):
XML/HTML代码
  1. #!/sbin/openrc-run
  2. name="nginx"
  3. description="Nginx web server"
  4. command="/opt/nginx/sbin/nginx"
  5. command_args="-c /opt/nginx/conf/nginx.conf"
  6. pidfile="/opt/nginx/logs/nginx.pid"
  7. depend() {
  8.     need net
  9.     use dns logger
  10.     after firewall
  11. }
2. 添加执行权限
XML/HTML代码
  1. chmod +x /etc/init.d/nginx
3. 添加到开机启动
XML/HTML代码
  1. rc-update add nginx default
4. 启动服务
XML/HTML代码
  1. rc-service nginx start
方案二:使用 supervisord 管理(适用于 Docker 或后台多进程管理)
安装:
XML/HTML代码
  1. apk add supervisor
配置 /etc/supervisord.conf 或单独的配置文件:
XML/HTML代码
  1. [program:nginx]
  2. command=/opt/nginx/sbin/nginx -g 'daemon off;'
  3. autorestart=true
  4. stdout_logfile=/var/log/nginx.stdout.log
  5. stderr_logfile=/var/log/nginx.stderr.log
启动 supervisord:
XML/HTML代码
  1. supervisord -c /etc/supervisord.conf
设置开机自启:
XML/HTML代码
  1. rc-update add supervisor
方案三:写入 /etc/local.d/nginx.start 脚本(适合 Alpine 系统)
创建文件:
XML/HTML代码
  1. vi /etc/local.d/nginx.start
内容:
XML/HTML代码
  1. #!/bin/sh
  2. /opt/nginx/sbin/nginx
设置权限:
XML/HTML代码
  1. chmod +x /etc/local.d/nginx.start
启用 local 服务:
XML/HTML代码
  1. rc-update add local
查看是否成功设置开机启动
XML/HTML代码
  1. rc-status  
以上操作均为验证,如需使用请自行验证修改。

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):