chore: add env deps isntall docs #91
This commit is contained in:
@@ -8,6 +8,7 @@
|
||||
- **Python3**, **Node.js**, **Bash** (标准版镜像内置环境)
|
||||
- 通过 **Mise** 扩展:支持几乎所有主流编程语言的动态安装与切换。
|
||||
|
||||
|
||||
> [!TIP]
|
||||
> **Minimal 镜像注意**:如果您使用的是 `minimal` 标签的镜像,系统初始不包含 Python 和 Node.js。您需要进入「编程语言」页面手动点击安装您所需的运行时。
|
||||
|
||||
@@ -62,6 +63,15 @@ mise use -g ansible@latest
|
||||
|
||||
安装完成后,您可以在「脚本管理」或「定时任务」中直接调用 `ansible` 或 `ansible-playbook` 命令。
|
||||
|
||||
## PHP 环境特别说明
|
||||
|
||||
在 Docker 容器或精简版 Linux 环境中,通过 `mise` 安装某些 PHP 版本时,如果官方没有提供预编译的二进制包,系统会尝试从源码编译。这需要额外的系统级构建依赖(如 `autoconf`, `bison`, `pkg-config` 等)。
|
||||
|
||||
如果您在安装 PHP 时遇到 `autoconf not found` 或 `buildconf failed` 等错误,请参考以下方案:
|
||||
|
||||
1. **运行预设脚本**: 我们在项目根目录提供了示例脚本 [install_php_env_deps.sh](file:///example/deps/install_php_env_deps.sh),它会自动安装所需的系统库。
|
||||
2. **配置为开机任务**: 由于 Docker 容器层通常是只读的或在重启后重置(非挂载目录),建议在面板中创建一个 **触发类型为 `baihu_startup`** 的定时任务,命令填写 `bash example/deps/install_php_env_deps.sh`。这样可以确保每次容器启动时都会自动准备好 PHP 编译环境。
|
||||
|
||||
---
|
||||
|
||||
## 隔离机制说明
|
||||
|
||||
@@ -21,3 +21,16 @@
|
||||
|
||||
- **预设 Cron 规则**:在编辑任务时,提供常用的 `每分钟执行`、`每小时整点` 等预设样式。
|
||||
- **下次触发预测**:实时计算并展示任务下一次执行的北京时间,帮助验证调度逻辑是否符合预期。
|
||||
|
||||
## 特殊任务类型
|
||||
|
||||
除了标准的 Cron 定时触发,白虎面板还支持以下特殊触发场景:
|
||||
|
||||
### 开机启动任务 (`baihu_startup`)
|
||||
|
||||
当您在定时规则(Schedule)中填写 `baihu_startup` 时,该任务将被标记为**系统启动任务**。
|
||||
- **触发时机**: 面板主进程启动或重启完成后立即执行。
|
||||
- **应用场景**:
|
||||
- 自动挂载磁盘或网络共享。
|
||||
- **环境预热**: 例如安装 PHP 编译依赖(参考 [PHP 编译依赖说明](languages.md#php-环境特别说明))。建议命令: `bash example/deps/install_php_env_deps.sh`
|
||||
- 启动自定义的后台常驻服务。
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
#!/bin/bash
|
||||
|
||||
# ==============================================================================
|
||||
# PHP 环境构建依赖安装脚本
|
||||
# ==============================================================================
|
||||
# 说明:
|
||||
# 如果你需要使用 PHP 环境,由于 mise 安装某些 PHP 版本时需要从源码编译,
|
||||
# 建议在面板的“任务训练”中创建一个“开机任务”,并关联此脚本,
|
||||
# 以确保容器重启后依然具备编译 PHP 所需的系统依赖。
|
||||
# ==============================================================================
|
||||
|
||||
set -e
|
||||
|
||||
echo "正在检测 PHP 编译依赖..."
|
||||
|
||||
# 根据系统定义包列表
|
||||
if [ -f /etc/debian_version ]; then
|
||||
PACKAGES="autoconf bison build-essential libssl-dev libxml2-dev pkg-config libsqlite3-dev zlib1g-dev libcurl4-openssl-dev libpng-dev libjpeg-dev libonig-dev libzip-dev"
|
||||
CHECK_CMD="dpkg -l"
|
||||
INSTALL_CMD="apt-get install -y"
|
||||
UPDATE_CMD="apt-get update"
|
||||
elif [ -f /etc/alpine-release ]; then
|
||||
PACKAGES="autoconf bison build-base openssl-dev libxml2-dev pkgconfig sqlite-dev zlib-dev curl-dev libpng-dev libjpeg-turbo-dev oniguruma-dev libzip-dev"
|
||||
CHECK_CMD="apk info -e"
|
||||
INSTALL_CMD="apk add --no-cache"
|
||||
UPDATE_CMD=""
|
||||
else
|
||||
echo "未检测到支持的包管理器 (APT/APK),请手动安装依赖。"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
MISSING_PACKAGES=""
|
||||
for pkg in $PACKAGES; do
|
||||
if ! $CHECK_CMD "$pkg" >/dev/null 2>&1; then
|
||||
MISSING_PACKAGES="$MISSING_PACKAGES $pkg"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$MISSING_PACKAGES" ]; then
|
||||
echo "所有依赖已就绪,跳过安装。"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "检测到缺失依赖: $MISSING_PACKAGES"
|
||||
|
||||
# 执行安装
|
||||
if [ -n "$UPDATE_CMD" ]; then
|
||||
$UPDATE_CMD
|
||||
fi
|
||||
|
||||
$INSTALL_CMD $MISSING_PACKAGES
|
||||
|
||||
echo "PHP 编译依赖安装完成!"
|
||||
Reference in New Issue
Block a user