适配 1G 内存 armv7 设备: settings.json 低配(show_hash 关/max_workers=2/缓存64MB/上传上限256MB/ws-sse 关) + 新增 install-armv7.sh 分步安装脚本
This commit is contained in:
Executable
+115
@@ -0,0 +1,115 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# ============================================
|
||||||
|
# HYC下载站 v2.3 - ARMv7 / 低内存设备 安装脚本
|
||||||
|
#
|
||||||
|
# 电视盒子(1G 内存)上很多带 C 扩展的包没有预编译 wheel,
|
||||||
|
# 一次性 pip install -r requirements.txt 会在编译某个包时整体失败。
|
||||||
|
# 本脚本按"核心必装 / 可选按需"分开安装,单个失败不连累其他。
|
||||||
|
#
|
||||||
|
# 用法:
|
||||||
|
# bash scripts/install-armv7.sh # 只装核心
|
||||||
|
# bash scripts/install-armv7.sh --with-postgresql # 加 PostgreSQL
|
||||||
|
# bash scripts/install-armv7.sh --with-mysql # 加 MySQL
|
||||||
|
# bash scripts/install-armv7.sh --with-sftp # 加 SFTP 同步(paramiko)
|
||||||
|
#
|
||||||
|
# 环境变量:
|
||||||
|
# PYTHON=python3.11 指定 Python(默认 python3)
|
||||||
|
# VENV_DIR=./venv 虚拟环境目录(默认 ./venv)
|
||||||
|
# ============================================
|
||||||
|
set -e
|
||||||
|
|
||||||
|
PYTHON=${PYTHON:-python3}
|
||||||
|
VENV_DIR=${VENV_DIR:-./venv}
|
||||||
|
|
||||||
|
echo "=========================================="
|
||||||
|
echo " HYC下载站 v2.3 - ARMv7 安装"
|
||||||
|
echo "=========================================="
|
||||||
|
|
||||||
|
# ---------- 1. 检查 Python ----------
|
||||||
|
echo ""
|
||||||
|
echo "==> [1/5] 检查 Python 版本"
|
||||||
|
if ! command -v "$PYTHON" >/dev/null 2>&1; then
|
||||||
|
echo "错误: 找不到 $PYTHON"
|
||||||
|
echo "提示: 电视盒子 Debian 系可用: apt install python3 python3-venv"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
$PYTHON --version
|
||||||
|
python_ok=$($PYTHON -c 'import sys; print(1 if sys.version_info >= (3, 8) else 0)')
|
||||||
|
if [ "$python_ok" != "1" ]; then
|
||||||
|
echo "警告: Python 版本过低(需要 3.8+),建议 python3.11"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ---------- 2. 创建虚拟环境 ----------
|
||||||
|
echo ""
|
||||||
|
echo "==> [2/5] 创建虚拟环境: $VENV_DIR"
|
||||||
|
if ! $PYTHON -m venv "$VENV_DIR" 2>/dev/null; then
|
||||||
|
echo "错误: 创建虚拟环境失败"
|
||||||
|
echo "提示: 需要先安装 python3-venv: apt install python3-venv"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
# shellcheck disable=SC1091
|
||||||
|
source "$VENV_DIR/bin/activate"
|
||||||
|
pip install --upgrade pip 2>/dev/null || echo " (pip 升级跳过)"
|
||||||
|
|
||||||
|
# ---------- 3. 核心依赖(必装) ----------
|
||||||
|
echo ""
|
||||||
|
echo "==> [3/5] 安装核心依赖"
|
||||||
|
CORE_PKGS="psutil requests croniter sqlalchemy python-multipart"
|
||||||
|
for pkg in $CORE_PKGS; do
|
||||||
|
if pip install "$pkg" >/dev/null 2>&1; then
|
||||||
|
echo " ✓ $pkg"
|
||||||
|
else
|
||||||
|
echo " ✗ $pkg 安装失败(继续,不影响其他)"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# bcrypt: armv7 可能需要编译;装不上则走 PBKDF2 回退(认证仍可用,但建议装上)
|
||||||
|
echo " ... bcrypt(密码哈希)"
|
||||||
|
if pip install bcrypt >/dev/null 2>&1; then
|
||||||
|
echo " ✓ bcrypt"
|
||||||
|
else
|
||||||
|
echo " ⚠ bcrypt 安装失败 → 将使用 PBKDF2 回退(功能可用;建议装 gcc 后重试)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ---------- 4. 可选依赖(按参数) ----------
|
||||||
|
echo ""
|
||||||
|
echo "==> [4/5] 可选依赖"
|
||||||
|
if [[ "$*" == *"--with-postgresql"* ]]; then
|
||||||
|
echo " ... psycopg2-binary(PostgreSQL)"
|
||||||
|
pip install psycopg2-binary >/dev/null 2>&1 && echo " ✓ psycopg2" \
|
||||||
|
|| echo " ⚠ psycopg2 编译失败 → PostgreSQL 不可用(可先用 SQLite)"
|
||||||
|
fi
|
||||||
|
if [[ "$*" == *"--with-mysql"* ]]; then
|
||||||
|
echo " ... pymysql / cryptography(MySQL)"
|
||||||
|
pip install pymysql cryptography >/dev/null 2>&1 && echo " ✓ pymysql" \
|
||||||
|
|| echo " ⚠ MySQL 依赖失败(可先用 SQLite)"
|
||||||
|
fi
|
||||||
|
if [[ "$*" == *"--with-sftp"* ]]; then
|
||||||
|
echo " ... paramiko(SFTP 同步)"
|
||||||
|
pip install paramiko >/dev/null 2>&1 && echo " ✓ paramiko" \
|
||||||
|
|| echo " ⚠ paramiko 失败 → SFTP 同步不可用"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# ---------- 5. 目录与收尾 ----------
|
||||||
|
echo ""
|
||||||
|
echo "==> [5/5] 创建数据目录"
|
||||||
|
mkdir -p downloads data logs
|
||||||
|
echo " ✓ downloads/ data/ logs/ 已就绪"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=========================================="
|
||||||
|
echo " 安装完成!"
|
||||||
|
echo "=========================================="
|
||||||
|
echo " 启动服务器:"
|
||||||
|
echo " source $VENV_DIR/bin/activate"
|
||||||
|
echo " python main.py --memory-limit 256M --workers 2"
|
||||||
|
echo ""
|
||||||
|
echo " 1G 内存建议(电视盒子):"
|
||||||
|
echo " - 已适配 settings.json(show_hash 关闭、max_workers=2、缓存 64MB)"
|
||||||
|
echo " - 强烈建议加 swap,否则大文件同步/上传易 OOM:"
|
||||||
|
echo " fallocate -l 1G /swapfile && chmod 600 /swapfile"
|
||||||
|
echo " mkswap /swapfile && swapon /swapfile"
|
||||||
|
echo " echo '/swapfile none swap sw 0 0' >> /etc/fstab"
|
||||||
|
echo " - 外接 300G 存储请把 settings.json 的 base_dir 指向挂载点"
|
||||||
|
echo " (如 /mnt/usb/downloads),并同步改 database.sqlite.path"
|
||||||
|
echo "=========================================="
|
||||||
+14
-14
@@ -6,12 +6,12 @@
|
|||||||
"api_version": "v2",
|
"api_version": "v2",
|
||||||
"directory_listing": true,
|
"directory_listing": true,
|
||||||
"enable_stats": true,
|
"enable_stats": true,
|
||||||
"show_hash": true,
|
"show_hash": false,
|
||||||
"ignore_hidden": true,
|
"ignore_hidden": true,
|
||||||
"max_upload_size": 1073741824,
|
"max_upload_size": 268435456,
|
||||||
"timeout": 30,
|
"timeout": 30,
|
||||||
"enable_range": true,
|
"enable_range": true,
|
||||||
"max_workers": 10,
|
"max_workers": 2,
|
||||||
"auth_type": "basic",
|
"auth_type": "basic",
|
||||||
"auth_user": "admin",
|
"auth_user": "admin",
|
||||||
"auth_pass": "admin123",
|
"auth_pass": "admin123",
|
||||||
@@ -21,10 +21,10 @@
|
|||||||
"ip_whitelist_enabled": false,
|
"ip_whitelist_enabled": false,
|
||||||
"ip_whitelist": [],
|
"ip_whitelist": [],
|
||||||
"ip_blacklist": [],
|
"ip_blacklist": [],
|
||||||
"enable_ws": true,
|
"enable_ws": false,
|
||||||
"enable_sse": true,
|
"enable_sse": false,
|
||||||
"enable_monitor": true,
|
"enable_monitor": true,
|
||||||
"monitor_interval": 3,
|
"monitor_interval": 10,
|
||||||
"enable_sync": true,
|
"enable_sync": true,
|
||||||
"sync_config": null,
|
"sync_config": null,
|
||||||
"sync_sources": {},
|
"sync_sources": {},
|
||||||
@@ -574,17 +574,17 @@
|
|||||||
"sort_reverse": false,
|
"sort_reverse": false,
|
||||||
"calculate_hash": false,
|
"calculate_hash": false,
|
||||||
"max_search_results": 100,
|
"max_search_results": 100,
|
||||||
"session_timeout": 60,
|
"session_timeout": 300,
|
||||||
"sync_interval": 60,
|
"sync_interval": 60,
|
||||||
"auto_sync": false,
|
"auto_sync": false,
|
||||||
"auto_clean": false,
|
"auto_clean": false,
|
||||||
"clean_interval": 7,
|
"clean_interval": 7,
|
||||||
"enable_browse": true,
|
"enable_browse": true,
|
||||||
"show_hidden": false,
|
"show_hidden": false,
|
||||||
"enable_websocket": true,
|
"enable_websocket": false,
|
||||||
"max_threads": 4,
|
"max_threads": 4,
|
||||||
"health_check_interval": 30,
|
"health_check_interval": 60,
|
||||||
"request_timeout": 300,
|
"request_timeout": 60,
|
||||||
"enable_alerts": true,
|
"enable_alerts": true,
|
||||||
"disk_warning_threshold": 80,
|
"disk_warning_threshold": 80,
|
||||||
"disk_critical_threshold": 90,
|
"disk_critical_threshold": 90,
|
||||||
@@ -594,8 +594,8 @@
|
|||||||
"alert_email": "",
|
"alert_email": "",
|
||||||
"log_file": "./logs/hyc.log",
|
"log_file": "./logs/hyc.log",
|
||||||
"log_level": "INFO",
|
"log_level": "INFO",
|
||||||
"cache_size": 1073741824,
|
"cache_size": 67108864,
|
||||||
"cache_ttl": 3600,
|
"cache_ttl": 86400,
|
||||||
"pool_size": 5,
|
"pool_size": 5,
|
||||||
"max_overflow": 10
|
"max_overflow": 5
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user