added:增加Linux-server
This commit is contained in:
1 parent
6fe4e9d23f
commit
d78f3f811b
90 files changed
+16784
-1
No files matched your search
@@ -0,0 +1,275 @@
|
||||
#!/bin/bash
|
||||
# Write Server 配置检查脚本
|
||||
# 检查所有必要的依赖和配置
|
||||
|
||||
set -e
|
||||
|
||||
echo "==================================="
|
||||
echo " Write Server 配置检查"
|
||||
echo "==================================="
|
||||
echo ""
|
||||
|
||||
# 颜色定义
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 检查结果
|
||||
ERRORS=0
|
||||
WARNINGS=0
|
||||
|
||||
# 检查函数
|
||||
check_pass() {
|
||||
echo -e "${GREEN}✓${NC} $1"
|
||||
}
|
||||
|
||||
check_fail() {
|
||||
echo -e "${RED}✗${NC} $1"
|
||||
((ERRORS++))
|
||||
}
|
||||
|
||||
check_warn() {
|
||||
echo -e "${YELLOW}⚠${NC} $1"
|
||||
((WARNINGS++))
|
||||
}
|
||||
|
||||
# 1. 检查 .env 文件
|
||||
echo "1. 检查环境配置"
|
||||
if [ -f .env ]; then
|
||||
check_pass ".env 文件存在"
|
||||
|
||||
# 加载环境变量
|
||||
source .env
|
||||
|
||||
# 检查 BLOG_ROOT
|
||||
if [ -n "$BLOG_ROOT" ]; then
|
||||
if [ -d "$BLOG_ROOT" ]; then
|
||||
check_pass "BLOG_ROOT 目录存在: $BLOG_ROOT"
|
||||
|
||||
# 检查 content/posts 目录
|
||||
if [ -d "$BLOG_ROOT/content/posts" ]; then
|
||||
check_pass "content/posts 目录存在"
|
||||
|
||||
# 统计文章数量
|
||||
POST_COUNT=$(find "$BLOG_ROOT/content/posts" -name "index.md" -type f | wc -l)
|
||||
echo " 📝 文章数量: $POST_COUNT"
|
||||
else
|
||||
check_warn "content/posts 目录不存在(将自动创建)"
|
||||
fi
|
||||
|
||||
# 检查 Hugo 配置
|
||||
if [ -f "$BLOG_ROOT/hugo.toml" ]; then
|
||||
check_pass "hugo.toml 配置文件存在"
|
||||
else
|
||||
check_warn "hugo.toml 配置文件不存在"
|
||||
fi
|
||||
else
|
||||
check_fail "BLOG_ROOT 目录不存在: $BLOG_ROOT"
|
||||
fi
|
||||
else
|
||||
check_fail "BLOG_ROOT 未配置"
|
||||
fi
|
||||
|
||||
# 检查其他配置
|
||||
if [ -n "$ARTALK_SERVER" ]; then
|
||||
check_pass "Artalk 服务器已配置: $ARTALK_SERVER"
|
||||
else
|
||||
check_warn "Artalk 服务器未配置(评论功能可能不可用)"
|
||||
fi
|
||||
|
||||
if [ -n "$TG_BOT_TOKEN" ]; then
|
||||
check_pass "Telegram Bot Token 已配置"
|
||||
|
||||
if [ -n "$TG_ALLOWED_CHAT_IDS" ]; then
|
||||
check_pass "Telegram 访问控制已配置"
|
||||
else
|
||||
check_warn "Telegram 访问控制未配置(所有用户都可访问)"
|
||||
fi
|
||||
else
|
||||
check_warn "Telegram Bot Token 未配置(Bot 功能不可用)"
|
||||
fi
|
||||
|
||||
else
|
||||
check_fail ".env 文件不存在"
|
||||
echo " 请运行: cp .env.example .env"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 2. 检查 Node.js
|
||||
echo "2. 检查 Node.js 环境"
|
||||
if command -v node &> /dev/null; then
|
||||
NODE_VERSION=$(node --version)
|
||||
check_pass "Node.js 已安装: $NODE_VERSION"
|
||||
|
||||
# 检查版本
|
||||
NODE_MAJOR=$(echo "$NODE_VERSION" | sed 's/v//' | cut -d. -f1)
|
||||
if [ "$NODE_MAJOR" -ge 18 ]; then
|
||||
check_pass "Node.js 版本符合要求 (>= 18)"
|
||||
else
|
||||
check_warn "Node.js 版本较低,建议升级到 18+"
|
||||
fi
|
||||
else
|
||||
check_fail "Node.js 未安装"
|
||||
fi
|
||||
|
||||
if command -v npm &> /dev/null; then
|
||||
NPM_VERSION=$(npm --version)
|
||||
check_pass "npm 已安装: $NPM_VERSION"
|
||||
else
|
||||
check_fail "npm 未安装"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 3. 检查 Hugo
|
||||
echo "3. 检查 Hugo 环境"
|
||||
if command -v hugo &> /dev/null; then
|
||||
HUGO_VERSION=$(hugo version 2>/dev/null | head -n 1 || echo "unknown")
|
||||
check_pass "Hugo 已安装: $HUGO_VERSION"
|
||||
|
||||
# 检查是否是 extended 版本
|
||||
if hugo version 2>/dev/null | grep -q "extended"; then
|
||||
check_pass "Hugo Extended 版本(支持 SCSS/SASS)"
|
||||
else
|
||||
check_warn "Hugo 非 Extended 版本(某些主题功能可能不可用)"
|
||||
fi
|
||||
else
|
||||
check_warn "Hugo 未安装(预览功能不可用)"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 4. 检查项目依赖
|
||||
echo "4. 检查项目依赖"
|
||||
if [ -d "node_modules" ]; then
|
||||
check_pass "node_modules 目录存在"
|
||||
|
||||
# 检查关键依赖
|
||||
if [ -d "node_modules/next" ]; then
|
||||
check_pass "Next.js 已安装"
|
||||
else
|
||||
check_fail "Next.js 未安装"
|
||||
fi
|
||||
|
||||
if [ -d "node_modules/gray-matter" ]; then
|
||||
check_pass "gray-matter 已安装(Markdown 解析)"
|
||||
else
|
||||
check_fail "gray-matter 未安装"
|
||||
fi
|
||||
else
|
||||
check_warn "node_modules 目录不存在(需要运行 npm install)"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 5. 检查构建状态
|
||||
echo "5. 检查构建状态"
|
||||
if [ -d ".next" ]; then
|
||||
check_pass ".next 目录存在(已构建)"
|
||||
|
||||
if [ -d ".next/standalone" ]; then
|
||||
check_pass "standalone 构建完成(Docker 部署可用)"
|
||||
else
|
||||
check_warn "standalone 构建不完整"
|
||||
fi
|
||||
else
|
||||
check_warn ".next 目录不存在(需要运行 npm run build)"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 6. 检查必要目录
|
||||
echo "6. 检查目录结构"
|
||||
for dir in logs backups recycle public src; do
|
||||
if [ -d "$dir" ]; then
|
||||
check_pass "$dir/ 目录存在"
|
||||
else
|
||||
check_warn "$dir/ 目录不存在(将自动创建)"
|
||||
fi
|
||||
done
|
||||
|
||||
echo ""
|
||||
|
||||
# 7. 检查端口
|
||||
echo "7. 检查端口占用"
|
||||
PORT=${PORT:-8016}
|
||||
if command -v lsof &> /dev/null; then
|
||||
if lsof -i :"$PORT" &> /dev/null; then
|
||||
check_warn "端口 $PORT 已被占用"
|
||||
echo " 占用进程:"
|
||||
lsof -i :"$PORT" | head -n 3
|
||||
else
|
||||
check_pass "端口 $PORT 可用"
|
||||
fi
|
||||
elif command -v netstat &> /dev/null; then
|
||||
if netstat -tulpn 2>/dev/null | grep -q ":$PORT "; then
|
||||
check_warn "端口 $PORT 已被占用"
|
||||
else
|
||||
check_pass "端口 $PORT 可用"
|
||||
fi
|
||||
else
|
||||
check_warn "无法检查端口(lsof/netstat 未安装)"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 8. 检查 PM2(可选)
|
||||
echo "8. 检查进程管理器"
|
||||
if command -v pm2 &> /dev/null; then
|
||||
PM2_VERSION=$(pm2 --version)
|
||||
check_pass "PM2 已安装: $PM2_VERSION"
|
||||
|
||||
# 检查是否有运行中的进程
|
||||
if pm2 list 2>/dev/null | grep -q "write-server"; then
|
||||
check_pass "write-server 进程已运行"
|
||||
else
|
||||
check_warn "write-server 进程未运行"
|
||||
fi
|
||||
else
|
||||
check_warn "PM2 未安装(可选,用于进程管理)"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# 9. 检查系统资源
|
||||
echo "9. 检查系统资源"
|
||||
|
||||
# 内存
|
||||
TOTAL_MEM=$(free -m 2>/dev/null | awk '/^Mem:/{print $2}' || echo "0")
|
||||
AVAIL_MEM=$(free -m 2>/dev/null | awk '/^Mem:/{print $7}' || echo "0")
|
||||
if [ "$TOTAL_MEM" -gt 0 ]; then
|
||||
echo " 💾 内存: ${AVAIL_MEM}MB 可用 / ${TOTAL_MEM}MB 总计"
|
||||
if [ "$AVAIL_MEM" -lt 256 ]; then
|
||||
check_warn "可用内存较低(< 256MB)"
|
||||
else
|
||||
check_pass "内存充足"
|
||||
fi
|
||||
fi
|
||||
|
||||
# 磁盘
|
||||
DISK_AVAIL=$(df -h . 2>/dev/null | awk 'NR==2{print $4}' || echo "unknown")
|
||||
echo " 💿 磁盘: $DISK_AVAIL 可用"
|
||||
|
||||
echo ""
|
||||
|
||||
# 总结
|
||||
echo "==================================="
|
||||
echo " 检查完成"
|
||||
echo "==================================="
|
||||
echo ""
|
||||
|
||||
if [ $ERRORS -gt 0 ]; then
|
||||
echo -e "${RED}发现 $ERRORS 个错误${NC}"
|
||||
echo "请修复上述错误后再启动服务"
|
||||
exit 1
|
||||
elif [ $WARNINGS -gt 0 ]; then
|
||||
echo -e "${YELLOW}发现 $WARNINGS 个警告${NC}"
|
||||
echo "服务可以启动,但某些功能可能不可用"
|
||||
exit 0
|
||||
else
|
||||
echo -e "${GREEN}所有检查通过!${NC}"
|
||||
echo "可以启动服务:./scripts/start.sh"
|
||||
exit 0
|
||||
fi
|
||||
Reference in new issue
Block a user