2025-06-30 · 技术

Re:从零开始的 Typecho 多版本主题开发环境搭建

前言

最近在 Github 上发现 Typecho 更新了 v1.3.0-rc ,发现 1.3.0 版本与 1.2.X 版本相比与 Cuckoo 主题相关的 Widget\Comments\Archive 类变化挺大,也发现了 1Panel 更新了 2.0 ,现在支持多个 PHP 网站共用同一个 PHP 容器了。

于是,屑布萌生了一个想法,即通过虚拟机共享文件夹实现同时在 1.3.0 和 1.2.1 版本进行主题开发。

本文演示的是屑布在 Windows 环境下的主题开发环境,MacOS 环境等后续再写一篇吧。使用的虚拟机软件是 VirtualBox。当然,你也可以使用 VMWare 或者其他虚拟机软件,虚拟机系统为 Ubuntu 24.04.2,你也可以选择其他发行版。

另外,本文也可以转变下用于其他开发环境中。

新增仅主机网络

本节主要如果你选择桥接网卡的话,可以略过本节。

通过点击左上角的工具找到工具栏右侧的菜单栏,在菜单栏中选择网络,在网络界面的选项栏中选择仅网络 (Host-Only) 网络,点击创建,稍等片刻后即可。

  • 网卡:手动配置网卡(IPv4 地址可以默认或根据自身需求调整)
  • DHCP 服务器:勾选启用服务器即可(或后续自己手动配置也行)

新建虚拟机

可以前往 Official CD Mirrors for Ubuntu 寻找合适的镜像源下载 ISO 镜像,然后前往 VirtualBox 新建虚拟电脑,本文以 Ubuntu 24.04.2 为例。

虚拟电脑名称和系统类型

  • 名称:Ubuntu 24.04.2(随意填写即可)
  • 文件夹:(找到合适的存放地点)
  • 虚拟光盘:(选择下载的 ISO 镜像)
  • 类型:Linux
  • Subtype:Linux
  • 版本:Ubuntu(64-bit)
  • 跳过自动安装:YES

硬件

  • 内存大小:4G(2G 也行)
  • 处理器:2 CPU(或自己合适的)
  • 启用 EFI:NO

虚拟硬盘

  • 虚拟硬盘文件大小:40 GB(或其他)
  • 虚拟磁盘文件类型:VMDK(或其他)
  • 预先分配全部空间:NO(不建议勾选)
  • Split Into 2GB Parts:YES(NO 也行)

网络

上述内容填写后完成新建虚拟机,然后找到自己新建的虚拟机点击设置,在设置中找到网络

网卡 1 保持默认配置即可,点击网卡 2 选项。

  • 启动网络连接:YES
  • 连接方式:仅网络 (Host-Only) 网络
  • 名称:VirtualBox Host-Only Ethernet Adapter
  • 控制芯片:一般默认即可
  • 混杂模式:拒绝
  • MAC 地址:保持默认
  • 接入网线:YES

系统安装

至此,可以直接开始启动安装系统啦!

  1. 语言选择,选择 English 即可。
  2. 键盘配置选择,选择 English (US) 即可。
  3. 安装类型选择,保持 Ubuntu Server 或选择最小化安装 (minimized) 都行。
  4. 网络配置,此时记录下分配到的仅网络 (Host-Only) 网络 IP 地址,若没修改网卡 IPv 4 地址的话默认是 192.168.56.X
  5. 代理配置,根据自己需求来就行,不需要为空即可。
  6. 镜像配置,可以配置为清华源 https://mirrors.tuna.tsinghua.edu.cn/ubuntu/
  7. 存储配置,根据自身需求或直接默认就行,通过 Done 确认开始格式化。
  8. 资料配置,根据自身需求填写即可。
  9. 是否升级至 Ubuntu Pro,选择 Skip for now 即可。
  10. SSH 配置,勾选 Install OpenSSH server。
  11. 预装软件,全部不勾选,直接下一步。
  12. 等待安装完毕出现 Reboot 选项后选中并回车重启虚拟机即可。(若出现 [FAILED] Failed unmounting cdrom.mount - /cdrom 的提示,回车移除安装介质重启虚拟机即可。)

安装 VirtualBox 扩展包

添加 VirtualBox 官方仓库

导入 VirtualBox 的 GPG 密钥。

wget -O- https://www.virtualbox.org/download/oracle_vbox_2016.asc | sudo gpg --dearmor --yes --output /usr/share/keyrings/oracle-virtualbox-2016.gpg

添加 VirtualBox 的官方仓库。

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg] http://download.virtualbox.org/virtualbox/debian $(. /etc/os-release && echo "$VERSION_CODENAME") contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list

也可以选择清华源的镜像仓库。

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/oracle-virtualbox-2016.gpg] https://mirrors.tuna.tsinghua.edu.cn/virtualbox/apt/ $(. /etc/os-release && echo "$VERSION_CODENAME") contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list

更新系统软件包列表。

sudo apt update

安装 VirtualBox 7

sudo apt install virtualbox-7.0

安装 VirtualBox 扩展包

检查已安装的 VirtualBox 版本。

vboxmanage -v | cut -dr -f1

假设版本是 7.0.26,则下载对应版本的 VirtualBox 扩展包。

wget https://download.virtualbox.org/virtualbox/7.0.26/Oracle_VM_VirtualBox_Extension_Pack-7.0.26.vbox-extpack

安装扩展包。

sudo vboxmanage extpack install Oracle_VM_VirtualBox_Extension_Pack-7.0.18.vbox-extpack

检查已安装的扩展包版本。

vboxmanage list extpacks

将用户添加到 vboxusers 组

将你的账户添加到 vboxusers 用户组。

sudo usermod -aG vboxusers $USER

验证是否添加成功。

groups $USER

1Panel 安装与配置

安装 1Panel

执行以下安装脚本,根据命令行提示完成安装。其他安装方式可以参考 1Panel 官方文档

bash -c "$(curl -sSL https://resource.fit2cloud.com/1panel/package/v2/quick_start.sh)"

安装完毕后,通过虚拟机仅网络 (Host-Only) 网络 IP 地址(以 192.168.56.127 为例)进入控制台。

安装所需容器

点击应用商店,安装 OpenResty、MySQL,相关配置默认即可。(MySQL 可以选择安装 5.7。)

点击网站-运行环境-PHP-创建运行环境,选择 PHP 8.0.30(其他 Typecho 适配版本也行),默认拓展选择 mysqli, pdo_mysql, curl 确认即可。

修改 HOSTS

以需要创建的站点域名为 ty.1panel.local, ty2.1panel.local 为例。

C:\Windows\System32\drivers\etc\hosts 中添加内容如下后保存即可。

192.168.56.127 ty.1panel.local
192.168.56.127 ty2.1panel.local

创建站点

通过网站-网站-创建网站中创建站点,在弹出的抽屉顶部找到选项栏,选择运行环境

类型选择创建的 PHP 运行环境即可,域名即 ty.1panel.local, ty2.1panel.local

勾选创建数据库,数据库名称、用户和密码自行填写(本文均以 typecho 为例)。

若需 HTTPS 的话需要前往面板中的网站-证书中自签发一份。

修改运行目录

新建共享文件夹之前,需要前往站点目录 /opt/1panel/www/sites/ty.1panel.local/index/opt/1panel/www/sites/ty2.1panel.local/index ,创建文件夹 www ,其他名字也可以,并确保用户和用户组均为 1000

新建文件夹后,前往网站-网站- ty.1panel.localty2.1panel.local -配置-网站目录,修改运行目录为 /www ,保存并重载。

下载 Typecho 多版本

前往 Typecho Github 仓库的 Release 下载最新的稳定版和最新的测试版。

截止至 2025-06-30,Typecho 的最新稳定版为 1.2.1 ,最新的开发版为 1.3.0-rc 。

本文将 Typecho 1.3.0-rc 安装在 E:\Virtualbox\Typecho 中,将 Typecho 1.2.1 直接安装在虚拟机 /opt/1panel/www/sites/ty2.1panel.local/index/www 中。

然后,通过 Git 将 Cuckoo 克隆到 E:\VirtualBox\Typecho\usr\themes\Cuckoo 中,并且需提前在 /opt/1panel/www/sites/ty2.1panel.local/index/www/usr/themes 中创建 Cuckoo 文件夹,用于后续挂载共享文件夹使用。

添加共享文件夹并挂载

新增共享文件夹

运行目录设置完毕后,则需要新增共享文件夹了,这里需要新增三个共享文件夹,分别是 Typecho 和 Cuckoo 。创建 Typecho 的目的是用于主题开发,创建 Cuckoo 的目的是用于映射到 ty2.1panel.local 中。

首先,先新增 Typecho 共享文件夹。进入设置,找到共享文件夹,点击新增按钮。(如下例)

  • 共享文件夹路径:E:\Virtualbox\Typecho
  • 共享文件夹名称:Typecho
  • 挂载点:/opt/1panel/www/sites/ty.1panel.local/index/www
  • 只读分配:不勾选
  • 自动挂载:不勾选
  • 固定分配:勾选

然后,新增 Cuckoo 共享文件夹。

  • 共享文件夹路径:E:\VirtualBox\Typecho\usr\themes\Cuckoo
  • 共享文件夹名称:Cuckoo
  • 挂载点:/opt/1panel/www/sites/ty2.1panel.local/index/www/usr/themes/Cuckoo
  • 只读分配:不勾选
  • 自动挂载:不勾选
  • 固定分配:勾选

mount 挂载

重启机器后,通过 mount 挂载共享文件夹。

sudo mount -t vboxsf Typecho /opt/1panel/www/sites/ty.1panel.local/index/www
sudo mount -t vboxsf Cuckoo /opt/1panel/www/sites/ty2.1panel.local/index/www/usr/themes/Cuckoo

此时,将使用默认挂载选项,并且所有文件均归 root 所有,但 1Panel 有要求需要确保用户和用户组为 1000 ,因此可通过 -o 参数修改用户和用户组。

sudo mount -t vboxsf -o rw,uid=1000,gid=1000 Typecho /opt/1panel/www/sites/ty.1panel.local/index/www
sudo mount -t vboxsf -o rw,uid=1000,gid=1000 Cuckoo /opt/1panel/www/sites/ty2.1panel.local/index/www/usr/themes/Cuckoo

配置自动挂载

上述的 mount 挂载会在重启虚拟机后失效,因此需配置自动挂载。

通过编辑 /etc/fstab 文件。

sudo nano /etc/fstab

新增一行添加如下内容。

Typecho /opt/1panel/www/sites/ty.1panel.local/index/www vboxsf rw,uid=1000,gid=1000 0 0
Cuckoo /opt/1panel/www/sites/ty2.1panel.local/index/www/usr/themes/Cuckoo vboxsf rw,uid=1000,gid=1000 0 0

重启机器通过访问 ty.1panel.localty2.1panel.local 测试是否挂载成功。

sudo reboot

安装 Typecho

安装就不细说,主要还是强调一个东西,就是数据库地址应为容器名称,容器名称可以在面板-容器-容器中看到,比如 1Panel-mysql-Cpvg

后言

主题开发时建议开启 Typecho 的调试模式,即在 config.inc.php 中添加如下内容。

define('__TYPECHO_DEBUG__', true);

有些报错也可以在控制面板-容器-容器-PHP 容器-日志中查看哦。

整篇看下来有亿点复杂繁琐,要简单应该也可以试试直接 PHPSTUDY 一把梭

如果你有什么其他的搭建方法,也欢迎在下面留言跟屑布说说哦。

参考文章

本文采用 CC BY-NC-SA 4.0 许可协议,允许您分享和改编,但仅限于非商业用途。转载时,请务必附上原文出处链接及上述许可声明。

...
© 2018-2026 Bhao.|萌ICP备202023323
Designed by Bhao|Made with love | Cuckoo Demo