背景: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  # 按需安装扩展

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

第三步:成功安装

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