背景:Windows环境下的Nginx之痛

最初在 Windows 系统下,我通过宝塔面板搭建了皮肤站。虽然初期配置顺利,但每次服务器重启后,Nginx 代理总会启动失败,反复调试无果后,我决定将整个服务迁移至更稳定的 Linux 环境。


第一步:LXC容器与Ubuntu版本的选择

为了隔离环境并方便管理,我选择在 Proxmox VE(PvE 8.2.2)中通过 LXC 容器部署 Ubuntu。

  1. 初尝败绩:Ubuntu 23.04 的兼容性问题
    安装 23.04 版本后,发现官方镜像和软件源已停止支持,无法正常更新依赖包。
    经验总结:非 LTS(长期支持)版本的 Ubuntu 生命周期较短,需优先选择 LTS 版本。

  2. 再战遇阻:PvE 不支持 Ubuntu 24.10
    尝试改用 24.10 版本时,PvE 提示不兼容。通过修改 PvE 的版本检测逻辑(参考社区教程),强制绕过限制,最终成功创建容器。

https://www.cnblogs.com/zhywyt/p/18365494
解决unsupported Ubuntu version '24.04'

问题描述:我在重装 pve8.2.2 恢复我的容器和虚拟机的时候,发现 24.04 的容器恢复时出现了如下错误:

TASK ERROR: unable to restore CT 104 - unsupported Ubuntu version '24.04'

在 pve 的论坛可以看到这篇文章:Ubuntu 24.04 - unsupported Ubuntu version '24.04'这里只是对文章进行一个梳理。

修改 PVE/LXC/Setup/Ubuntu.pm

参见原文:Setup support Ubuntu 24.04 noble

find / -name "Ubuntu.pm"

它应该在/usr/share/perl5/PVE/LXC/Setup/Ubuntu.pm或者其他的地方,修改它。

my $known_versions = {
+    '24.04' => 1, # noble
     '23.10' => 1, # mantic
     '23.04' => 1, # lunar
     '22.10' => 1, # kinetic

添加 24.04 这一行。
然后运行

pveam available
pveam update
pveam available

确保第二次运行pveam available的时候已经有system ubuntu-24.04-standard_24.04-2_amd64.tar.zst
然后参考这篇文章换源:PVE8 修改软件仓库源和 CT 模板(LXC)源为国内源,重要的是 CT 模板换源,如果已经换过了可以跳过。

最后下载 24.04 模板即可
最后重新尝试恢复容器成功


第二步:PHP版本适配的曲折之路

根据皮肤站官方教程,需安装特定 PHP 版本(如 8.1),但 Ubuntu 官方源仅提供 PHP 8.3。以下是关键解决步骤:

  1. 添加第三方 PPA 源
    通过 Ondřej Surý维护的 PPA 源获取旧版 PHP:

    sudo add-apt-repository ppa:ondrej/php
    sudo apt update
  2. 非 LTS 系统的适配问题
    问题现象:本仓库 PPA 明确提示不支持非 LTS 版本的 Ubuntu。
    解决方案:手动修改 PPA 配置文件(位于/etc/apt/sources.list.d/ondrej-ubuntu-php-oracular.sources),将系统代号替换为最接近的 LTS 版本(如将mantic改为jammy),强制允许安装。

  3. 安装目标 PHP 版本

    sudo apt install php8.1 php8.1-fpm php8.1-mysql  # 按需安装扩展

    风险提示:修改发行版代号可能导致依赖冲突,需谨慎操作!

第三步:成功安装

后面的步骤就很常规了,安装官方教程安装好就可以用了。