zipusyan commited on
Commit
47ec002
·
verified ·
1 Parent(s): 0d6004f

Upload 4 files

Browse files
Files changed (2) hide show
  1. entrypoint.sh +36 -25
  2. supervisord.conf +1 -0
entrypoint.sh CHANGED
@@ -1,12 +1,30 @@
1
  #!/bin/bash
2
  set -e
3
 
4
- # 定义持久化路径
 
5
  PHP_WWW_DIR="/home/www"
6
- OPL_CONFIG_DIR="/root/.opencode"
7
- OPL_BACKUP_DIR="/app/defaults/opencode"
 
 
 
 
8
 
9
- # 1. 初始化 PHP 网站文件 (如果持久化目录为空)
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  if [ ! -f "$PHP_WWW_DIR/ftp.php" ]; then
11
  echo "Initializing default PHP website files..."
12
  mkdir -p "$PHP_WWW_DIR"
@@ -14,29 +32,22 @@ if [ ! -f "$PHP_WWW_DIR/ftp.php" ]; then
14
  chmod -R 755 "$PHP_WWW_DIR"
15
  fi
16
 
17
- # 2. 处理 OpenCode 配置持久化
18
- # Hugging Face Spaces 通常将 /home/user 或类似目录挂载为持久化存储
19
- # 为了确保 /root/.opencode 能够持久化,我们将其软链接到持久化挂载点
20
- # 假设持久化挂载点为 /home/user/data (请根据 HF Space 配置修改)
21
- PERSISTENT_DATA_DIR="/home/user/data"
22
- if [ ! -d "$PERSISTENT_DATA_DIR" ]; then
23
- mkdir -p "$PERSISTENT_DATA_DIR"
 
24
  fi
25
 
26
- if [ ! -L "$OPL_CONFIG_DIR" ]; then
27
- # 如果 /root/.opencode 不是软链接,将其内容迁移到持久化目录并创建链接
28
- echo "Setting up OpenCode persistence link..."
29
- mkdir -p "$PERSISTENT_DATA_DIR/opencode"
30
-
31
- # 只有在持久化目录中没有数据时才从镜像备份中复制
32
- if [ ! -d "$PERSISTENT_DATA_DIR/opencode/.opencode" ]; then
33
- cp -r /app/defaults/opencode/.opencode "$PERSISTENT_DATA_DIR/opencode/"
34
- fi
35
-
36
- rm -rf "$OPL_CONFIG_DIR"
37
- ln -s "$PERSISTENT_DATA_DIR/opencode/.opencode" "$OPL_CONFIG_DIR"
38
  fi
39
 
40
- # 启动 Supervisor
41
- echo "Starting supervisor..."
42
  exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf
 
1
  #!/bin/bash
2
  set -e
3
 
4
+ # --- 路径定义 ---
5
+ # PHP 网站持久化路径
6
  PHP_WWW_DIR="/home/www"
7
+ # OpenCode 实际存储路径 (用户要求)
8
+ OP_DATA_DIR="/home/www/opencode"
9
+ # OpenCode 程序寻找配置的硬编码路径
10
+ OP_CONFIG_DIR="/root/.opencode"
11
+ # 镜像内的备份路径
12
+ OP_BACKUP_DIR="/app/defaults/opencode"
13
 
14
+ echo "--- Starting Runtime Initialization ---"
15
+
16
+ # 1. 修复 PHP-FPM 运行环境 (解决 Exit Status 78)
17
+ echo "Fixing PHP-FPM runtime directory..."
18
+ mkdir -p /run/php
19
+ chmod 755 /run/php
20
+
21
+ # 2. 修复 Nginx 运行环境 (解决 Exit Status 1)
22
+ echo "Fixing Nginx runtime environment..."
23
+ mkdir -p /var/cache/nginx
24
+ # 必须将配置从 available 链接到 enabled 才能生效
25
+ ln -sf /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
26
+
27
+ # 3. 初始化 PHP 网站文件 (如果持久化目录为空)
28
  if [ ! -f "$PHP_WWW_DIR/ftp.php" ]; then
29
  echo "Initializing default PHP website files..."
30
  mkdir -p "$PHP_WWW_DIR"
 
32
  chmod -R 755 "$PHP_WWW_DIR"
33
  fi
34
 
35
+ # 4. 处理 OpenCode 持久化 (迁移至 /home/www/opencode)
36
+ echo "Setting up OpenCode persistence at $OP_DATA_DIR..."
37
+ mkdir -p "$OP_DATA_DIR"
38
+
39
+ # 如果持久化目录是空的,则从镜像备份中恢复安装内容
40
+ if [ ! -d "$OP_DATA_DIR/.opencode" ]; then
41
+ echo "Restoring OpenCode installation from backup..."
42
+ cp -r "$OP_BACKUP_DIR/.opencode" "$OP_DATA_DIR/"
43
  fi
44
 
45
+ # 关键步骤:将程序寻找的路径软链接到持久化路径
46
+ if [ ! -L "$OP_CONFIG_DIR" ]; then
47
+ echo "Creating symlink: $OP_CONFIG_DIR -> $OP_DATA_DIR/.opencode"
48
+ rm -rf "$OP_CONFIG_DIR"
49
+ ln -s "$OP_DATA_DIR/.opencode" "$OP_CONFIG_DIR"
 
 
 
 
 
 
 
50
  fi
51
 
52
+ echo "--- Initialization Complete. Starting Supervisor ---"
 
53
  exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf
supervisord.conf CHANGED
@@ -19,6 +19,7 @@ stderr_logfile=/var/log/supervisor/nginx.err.log
19
  stdout_logfile=/var/log/supervisor/nginx.out.log
20
 
21
  [program:opencode-web]
 
22
  command=/bin/bash -c "export PATH='/root/.opencode/bin:\$PATH' && /root/.opencode/bin/opencode web --hostname 0.0.0.0 --port 8080"
23
  autostart=true
24
  autorestart=true
 
19
  stdout_logfile=/var/log/supervisor/nginx.out.log
20
 
21
  [program:opencode-web]
22
+ # 确保使用已解析的软链接路径运行
23
  command=/bin/bash -c "export PATH='/root/.opencode/bin:\$PATH' && /root/.opencode/bin/opencode web --hostname 0.0.0.0 --port 8080"
24
  autostart=true
25
  autorestart=true