change some url to root index.

This commit is contained in:
Jiao77
2025-10-22 20:29:21 +08:00
parent 3214b2fde8
commit f5e45ff7a1
2 changed files with 289 additions and 8 deletions

281
deploy-full.sh Executable file
View File

@@ -0,0 +1,281 @@
#!/bin/bash
# 🚀 Jiao77.cn 一键部署脚本
# 自动构建并部署 Astro 网站到生产服务器
set -e # 遇到错误立即停止
SERVER_IP="110.42.70.70"
DEFAULT_USER="root"
DEFAULT_WEB_ROOT="/var/www/jiao77.cn"
echo "🌟 =================================="
echo "🌟 Jiao77.cn 网站部署工具"
echo "🌟 =================================="
echo ""
# 检查必要的工具
check_requirements() {
echo "🔍 检查部署环境..."
if ! command -v npm &> /dev/null; then
echo "❌ 错误: npm 未安装"
exit 1
fi
if ! command -v rsync &> /dev/null; then
echo "⚠️ 警告: rsync 未安装,将使用 scp"
USE_RSYNC=false
else
USE_RSYNC=true
fi
echo "✅ 环境检查完成"
}
# 构建项目
build_project() {
echo ""
echo "📦 构建生产版本..."
if [ ! -f "package.json" ]; then
echo "❌ 错误: 当前目录不是 Astro 项目根目录"
exit 1
fi
# 清理之前的构建
if [ -d "dist" ]; then
rm -rf dist
fi
# 构建项目
npm run build
if [ ! -d "dist" ]; then
echo "❌ 错误: 构建失败dist 目录不存在"
exit 1
fi
# 检查必要的静态文件
echo "🔍 检查静态资源..."
# 检查是否有图片资源
if [ -d "public/report" ]; then
echo "✅ 找到报告图片资源"
else
echo "⚠️ 未找到 public/report 目录"
fi
# 检查 SEO 相关文件
if [ -f "public/robots.txt" ]; then
echo "✅ robots.txt 存在"
else
echo "⚠️ 建议添加 robots.txt 文件"
fi
if [ -f "public/sitemap.xml" ]; then
echo "✅ sitemap.xml 存在"
else
echo "⚠️ 建议添加 sitemap.xml 文件"
fi
if [ -f "public/favicon.ico" ]; then
echo "✅ favicon.ico 存在"
else
echo "⚠️ 建议添加 favicon.ico 文件"
fi
echo "✅ 构建完成"
}
# 获取用户输入
get_deploy_config() {
echo ""
echo "⚙️ 部署配置"
read -p "📝 服务器用户名 (默认: ${DEFAULT_USER}): " USERNAME
USERNAME=${USERNAME:-$DEFAULT_USER}
read -p "📁 网站根目录 (默认: ${DEFAULT_WEB_ROOT}): " WEB_ROOT
WEB_ROOT=${WEB_ROOT:-$DEFAULT_WEB_ROOT}
echo ""
echo "📋 部署信息确认:"
echo " 服务器: ${SERVER_IP}"
echo " 用户名: ${USERNAME}"
echo " 目录: ${WEB_ROOT}"
echo ""
read -p "❓ 确认部署? (y/N): " CONFIRM
if [[ ! $CONFIRM =~ ^[Yy]$ ]]; then
echo "❌ 部署已取消"
exit 0
fi
}
# 上传 .htaccess 文件
upload_htaccess() {
echo "📤 上传 .htaccess 文件..."
if [ -f ".htaccess" ]; then
scp .htaccess ${USERNAME}@${SERVER_IP}:${WEB_ROOT}/.htaccess
echo "✅ .htaccess 文件已上传"
else
echo "⚠️ .htaccess 文件不存在,跳过上传"
fi
}
# 部署文件
deploy_files() {
echo ""
echo "🚀 开始部署文件..."
if [ "$USE_RSYNC" = true ]; then
echo "📡 使用 rsync 同步文件..."
rsync -avz --delete --progress \
--exclude='.htaccess' \
dist/ ${USERNAME}@${SERVER_IP}:${WEB_ROOT}/
else
echo "📡 使用 scp 上传文件..."
# 创建临时压缩包
cd dist
tar -czf ../deploy-temp.tar.gz *
cd ..
# 上传并解压
scp deploy-temp.tar.gz ${USERNAME}@${SERVER_IP}:/tmp/
ssh ${USERNAME}@${SERVER_IP} "cd ${WEB_ROOT} && sudo tar -xzf /tmp/deploy-temp.tar.gz && sudo rm /tmp/deploy-temp.tar.gz"
# 清理本地临时文件
rm -f deploy-temp.tar.gz
fi
# 上传 .htaccess
upload_htaccess
echo "✅ 文件部署完成"
}
# 设置文件权限
set_permissions() {
echo ""
echo "🔐 设置文件权限..."
ssh ${USERNAME}@${SERVER_IP} "
sudo chown -R www-data:www-data ${WEB_ROOT}/ &&
sudo find ${WEB_ROOT}/ -type d -exec chmod 755 {} \; &&
sudo find ${WEB_ROOT}/ -type f -exec chmod 644 {} \;
"
if [ $? -eq 0 ]; then
echo "✅ 权限设置完成"
else
echo "⚠️ 权限设置失败,可能需要手动调整"
fi
}
# 部署后测试
post_deploy_test() {
echo ""
echo "🧪 部署后测试..."
# 测试网站是否可访问
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://${SERVER_IP}/ || echo "000")
if [ "$HTTP_CODE" = "200" ]; then
echo "✅ 网站访问正常 (HTTP $HTTP_CODE)"
else
echo "⚠️ 网站可能存在问题 (HTTP $HTTP_CODE)"
fi
# 检测压缩是否启用
GZIP_TEST=$(curl -H "Accept-Encoding: gzip" -s -I http://${SERVER_IP}/ | grep -i "content-encoding: gzip" || echo "")
if [ -n "$GZIP_TEST" ]; then
echo "✅ Gzip 压缩已启用"
else
echo "⚠️ Gzip 压缩未启用,建议检查 Apache 配置"
fi
}
# 显示部署结果
show_results() {
echo ""
echo "🎉 =================================="
echo "🎉 部署完成!"
echo "🎉 =================================="
echo ""
echo "🌐 网站地址:"
echo " 主域名: http://jiao77.cn"
echo " IP访问: http://${SERVER_IP}"
echo ""
echo "📋 建议检查事项:"
echo " ✓ 访问网站确认页面正常显示"
echo " ✓ 测试导航卡片点击功能"
echo " ✓ 检查 /reports 页面"
echo " ✓ 验证页眉展开/收缩功能"
echo " ✓ 测试移动端响应式设计"
echo " ✓ 检查动画效果是否正常"
echo ""
echo "🔧 如果遇到问题:"
echo " • 查看部署日志: tail -f /var/log/apache2/error.log"
echo " • 检查文件权限: ls -la ${WEB_ROOT}/"
echo " • 验证 Apache 配置: apache2ctl configtest"
echo ""
}
# 部署前最终检查
pre_deploy_check() {
echo ""
echo "🔎 部署前最终检查..."
# 检查构建产物
if [ ! -f "dist/index.html" ]; then
echo "❌ 错误: 构建产物不完整,缺少 index.html"
exit 1
fi
# 检查报告页面是否存在
if [ ! -f "dist/reports/index.html" ]; then
echo "⚠️ 警告: reports 页面可能不存在"
fi
# 检查重要静态资源
MISSING_FILES=()
if [ ! -f "dist/robots.txt" ]; then
MISSING_FILES+=("robots.txt")
fi
if [ ! -f "dist/sitemap.xml" ]; then
MISSING_FILES+=("sitemap.xml")
fi
if [ ${#MISSING_FILES[@]} -gt 0 ]; then
echo "⚠️ 以下 SEO 文件缺失: ${MISSING_FILES[*]}"
else
echo "✅ SEO 文件检查通过"
fi
echo "✅ 部署前检查完成"
}
# 主函数
main() {
check_requirements
build_project
pre_deploy_check
get_deploy_config
deploy_files
set_permissions
post_deploy_test
show_results
}
# 错误处理
trap 'echo "❌ 部署过程中出现错误,请检查输出信息"; exit 1' ERR
# 执行部署
main
echo "🎯 如需 SSL/HTTPS请参考 DEPLOYMENT.md 中的 SSL 配置章节"
echo "📚 完整部署文档: https://github.com/你的仓库/blob/main/DEPLOYMENT.md"

View File

@@ -41,7 +41,7 @@ import AnimatedElement from '../components/AnimatedElement.astro';
<NavigationCard <NavigationCard
title="AList 网盘" title="AList 网盘"
description="整合多平台云存储的统一管理工具,方便快捷地访问您的各种网盘和存储服务。" description="整合多平台云存储的统一管理工具,方便快捷地访问您的各种网盘和存储服务。"
href="http://jiao77.cn:52443" href="https://alist.jiao77.cn/"
icon="fas fa-cloud" icon="fas fa-cloud"
color="primary" color="primary"
size="large" size="large"
@@ -52,7 +52,7 @@ import AnimatedElement from '../components/AnimatedElement.astro';
<NavigationCard <NavigationCard
title="Q-Nas" title="Q-Nas"
description="基于飞牛系统的nas服务。" description="基于飞牛系统的nas服务。"
href="http://jiao77.cn:5666" href="http://110.42.70.70:5666"
icon="fas fa-server" icon="fas fa-server"
color="secondary" color="secondary"
size="large" size="large"
@@ -63,7 +63,7 @@ import AnimatedElement from '../components/AnimatedElement.astro';
<NavigationCard <NavigationCard
title="nuc-Nas" title="nuc-Nas"
description="另外一个飞牛nas。" description="另外一个飞牛nas。"
href="http://jiao77.cn:56661" href="https://nucnas.jiao77.cn/"
icon="fas fa-database" icon="fas fa-database"
color="accent" color="accent"
size="large" size="large"
@@ -74,7 +74,7 @@ import AnimatedElement from '../components/AnimatedElement.astro';
<NavigationCard <NavigationCard
title="RAGflow 知识库" title="RAGflow 知识库"
description="基于检索增强生成的知识管理系统,快速获取和整理专业领域知识。" description="基于检索增强生成的知识管理系统,快速获取和整理专业领域知识。"
href="http://jiao77.cn:28081" href="https://ragflow.jiao77.cn/"
icon="fas fa-robot" icon="fas fa-robot"
color="primary" color="primary"
size="medium" size="medium"
@@ -85,7 +85,7 @@ import AnimatedElement from '../components/AnimatedElement.astro';
<NavigationCard <NavigationCard
title="Open WebUI" title="Open WebUI"
description="强大的AI交互界面提供直观的模型管理和交互体验。" description="强大的AI交互界面提供直观的模型管理和交互体验。"
href="http://jiao77.cn:38080" href="https://ai.jiao77.cn/"
icon="fas fa-brain" icon="fas fa-brain"
color="secondary" color="secondary"
size="medium" size="medium"
@@ -96,7 +96,7 @@ import AnimatedElement from '../components/AnimatedElement.astro';
<NavigationCard <NavigationCard
title="Navidrome 音乐" title="Navidrome 音乐"
description="您自己的个人音乐服务器,随时随地享受您的音乐收藏。" description="您自己的个人音乐服务器,随时随地享受您的音乐收藏。"
href="http://jiao77.cn:45332" href="https://music.jiao77.cn/"
icon="fas fa-music" icon="fas fa-music"
color="primary" color="primary"
size="medium" size="medium"
@@ -107,7 +107,7 @@ import AnimatedElement from '../components/AnimatedElement.astro';
<NavigationCard <NavigationCard
title="Gitea" title="Gitea"
description="轻量级的代码托管解决方案,用于版本控制和协作开发。" description="轻量级的代码托管解决方案,用于版本控制和协作开发。"
href="http://jiao77.cn:3012" href="https://gitea.jiao77.cn/"
icon="fas fa-code-branch" icon="fas fa-code-branch"
color="secondary" color="secondary"
size="medium" size="medium"
@@ -118,7 +118,7 @@ import AnimatedElement from '../components/AnimatedElement.astro';
<NavigationCard <NavigationCard
title="技术报告" title="技术报告"
description="这是一个我做过的技术报告的导航。" description="这是一个我做过的技术报告的导航。"
href="http://jiao77.cn/report" href="https://jiao77.cn/report"
icon="fas fa-file-alt" icon="fas fa-file-alt"
color="accent" color="accent"
size="medium" size="medium"