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
系统安装
至此,可以直接开始启动安装系统啦!
- 语言选择,选择 English 即可。
- 键盘配置选择,选择 English (US) 即可。
- 安装类型选择,保持 Ubuntu Server 或选择最小化安装 (minimized) 都行。
- 网络配置,此时记录下分配到的仅网络 (Host-Only) 网络 IP 地址,若没修改网卡 IPv 4 地址的话默认是
192.168.56.X。 - 代理配置,根据自己需求来就行,不需要为空即可。
- 镜像配置,可以配置为清华源
https://mirrors.tuna.tsinghua.edu.cn/ubuntu/。 - 存储配置,根据自身需求或直接默认就行,通过 Done 确认开始格式化。
- 资料配置,根据自身需求填写即可。
- 是否升级至 Ubuntu Pro,选择 Skip for now 即可。
- SSH 配置,勾选 Install OpenSSH server。
- 预装软件,全部不勾选,直接下一步。
- 等待安装完毕出现 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.local 和 ty2.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.local 或 ty2.1panel.local 测试是否挂载成功。
sudo reboot
安装 Typecho
安装就不细说,主要还是强调一个东西,就是数据库地址应为容器名称,容器名称可以在面板-容器-容器中看到,比如 1Panel-mysql-Cpvg 。
后言
主题开发时建议开启 Typecho 的调试模式,即在 config.inc.php 中添加如下内容。
define('__TYPECHO_DEBUG__', true);
有些报错也可以在控制面板-容器-容器-PHP 容器-日志中查看哦。
整篇看下来有亿点复杂繁琐,要简单应该也可以试试直接 PHPSTUDY 一把梭。
如果你有什么其他的搭建方法,也欢迎在下面留言跟屑布说说哦。
参考文章
本文采用 CC BY-NC-SA 4.0 许可协议,允许您分享和改编,但仅限于非商业用途。转载时,请务必附上原文出处链接及上述许可声明。