# atool **Repository Path**: snangone/atool ## Basic Information - **Project Name**: atool - **Description**: 爱工具 ,AI 工具导航大全,汇集写作、绘画、编程、办公等 AI 工具,免费实用,每日更新 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-14 - **Last Updated**: 2026-04-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AI工具导航站 - 完整部署与开发文档 ## 一、项目目录结构 ``` nav_site/ ├── main.go # 程序入口:Gin路由、生成器初始化、服务启动 ├── render.go # 动态模板热加载渲染引擎 ├── go.mod / go.sum # Go模块依赖 ├── data/ # 运行时数据目录(自动创建) │ └── nav.db # SQLite数据库 ├── internal/ │ ├── db/ │ │ └── db.go # 数据库初始化、迁移、示例数据、配置读写 │ ├── models/ │ │ └── models.go # 所有数据结构定义 │ ├── handlers/ │ │ ├── handlers.go # 所有后台管理处理器(CRUD接口) │ │ └── session.go # Cookie Session中间件、权限认证、限流器 │ └── generator/ │ └── generator.go # 静态HTML生成引擎 ├── templates/ # 🔧 可随时手动编辑的HTML模板 │ ├── layout.html # 全局布局(头部/侧边栏/底部) │ ├── index.html # 首页 │ ├── category.html # 分类列表页 │ ├── news_list.html # 新闻列表页 │ ├── news_detail.html # 新闻详情页 │ ├── search.html # 搜索结果页 │ ├── apply.html # 入驻申请页 │ └── admin/ # 后台管理模板(独立目录) │ ├── layout.html # 后台公共布局 │ ├── login.html # 登录页 │ ├── change_password.html # 修改密码 │ ├── dashboard.html # 仪表盘 │ ├── nav_category.html # 导航分类管理 │ ├── nav_tool.html # 导航工具管理 │ ├── news_category.html # 新闻分类管理 │ ├── news.html # 新闻资讯管理 │ ├── friend_link.html # 友情链接管理 │ ├── apply.html # 入驻申请审核 │ ├── ad_banner.html # 广告位管理 │ └── site_config.html # 站点配置 └── public/ # 静态输出目录(自动生成) ├── index.html # 首页静态文件 ├── search.html # 搜索页静态文件 ├── apply.html # 申请页静态文件 ├── category/ # 分类页 │ └── {id}/index.html # 各分类首页 ├── news/ # 新闻页 │ ├── index.html # 新闻列表 │ └── {id}.html # 新闻详情 └── static/ # 静态资源 ├── css/ │ ├── main.css # 前台样式 │ └── admin.css # 后台样式 ├── js/ │ ├── main.js # 前台交互 │ └── admin.js # 后台交互 └── img/ # 图片资源 ``` --- ## 二、快速部署(一键启动) ### 方式A:直接运行源码(需安装Go) ```bash # 1. 进入项目目录 cd nav_site # 2. 安装依赖 go mod tidy # 3. 启动服务(默认 8080 端口) go run . # 自定义端口 PORT=9000 go run . ``` ### 方式B:编译为单二进制文件 ```bash # 编译(Windows) go build -ldflags="-s -w" -o nav_site.exe . # 编译(Linux/macOS) go build -ldflags="-s -w" -o nav_site . # 跨平台编译(在Windows编译Linux版本) $env:GOOS="linux"; $env:GOARCH="amd64"; go build -ldflags="-s -w" -o nav_site_linux . # 启动(Windows) ./nav_site.exe # 启动(Linux) ./nav_site # 后台运行(Linux) nohup ./nav_site > nav.log 2>&1 & ``` ### 启动说明 - 首次启动自动创建 `data/nav.db` 数据库 - 自动初始化示例数据(16个分类、12个工具) - 自动生成 `public/` 目录下的所有静态HTML - 默认账号:`admin` / `123456`,首次登录**强制修改密码** --- ## 三、后台管理功能 ### 访问地址 - 前台首页:`http://localhost:8080/` - 后台登录:`http://localhost:8080/admin/login` ### 功能列表 | 模块 | 功能 | |------|------| | 仪表盘 | 统计概览、最新申请、快捷操作 | | 导航分类 | 新增/编辑/删除/排序/启禁用 | | 导航工具 | 新增/编辑/删除/筛选/热门/最新标签 | | 新闻分类 | 新增/编辑/删除/排序/启禁用 | | 新闻资讯 | 富文本编辑/发布/草稿/封面图 | | 友情链接 | 新增/编辑/删除/排序/启禁用 | | 入驻申请 | 查看申请详情/审核通过/拒绝 | | 广告管理 | HTML广告代码/位置管理/启禁用 | | 站点配置 | 名称/描述/关键词/ICP/页脚文字 | | 修改密码 | 安全修改管理员密码 | ### 数据变更 → 自动生成静态页 任何通过后台的数据修改(增/删/改),系统会**自动触发全量静态HTML生成**,无需手动操作。 也可点击页面右上角的 **"🔄 重新生成静态页"** 按钮手动触发。 --- ## 四、模板修改指南 ### 修改前台样式 **所有模板文件位于 `templates/` 目录,可直接用文本编辑器修改。** #### 修改示例1:调整首页搜索框颜色 ```html :root { --primary: #6c63ff; /* 主题色,改成 #ff6b6b 变成红色 */ --primary-dark: #5549e8; /* 深色主题 */ } ``` #### 修改示例2:调整首页英雄区背景 ```html
``` #### 修改示例3:增加自定义顶部横幅 ```html
🎉 站点公告:欢迎使用AI工具集!
``` #### 修改示例4:修改侧边栏宽度 ```css /* 编辑 public/static/css/main.css */ :root { --sidebar-width: 220px; /* 默认200px,改大改小均可 */ } ``` ### 修改后台样式 后台样式位于 `public/static/css/admin.css`,可直接修改。 ### 模板热加载说明 - **后台管理页面**:每次HTTP请求都会重新加载模板,修改后**刷新浏览器**立即生效 - **前台静态页面**:修改模板后需在后台点击**"重新生成静态页"**,或通过后台修改任意数据触发自动重建 --- ## 五、静态HTML生成逻辑 ### 生成流程 ``` 后台数据变更 ↓ triggerGenerate() 发送信号到 channel ↓ 后台goroutine 接收信号(500ms防抖) ↓ generator.GenerateAll() ├── generateIndex() → public/index.html ├── generateCategories() → public/category/{id}/index.html, page{n}.html ├── generateNewsList() → public/news/index.html, page{n}.html ├── generateNewsDetails() → public/news/{id}.html ├── generateSearchPage() → public/search.html(静态骨架) └── generateApplyPage() → public/apply.html ``` ### 核心代码位置 - `internal/generator/generator.go` - 生成引擎全部逻辑 - `internal/handlers/handlers.go` - `triggerGenerate()` 触发函数 - `main.go` - 异步生成 goroutine ### 搜索功能说明 - 搜索页(`/search.html`)是静态骨架页 - 用户在搜索框输入时,通过 `GET /api/search?q=关键词` 动态请求后端接口 - 搜索结果实时显示,无需生成静态页 --- ## 六、反向代理配置 ### Nginx 配置 ```nginx server { listen 80; server_name yourdomain.com; # 强制HTTPS(可选) return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name yourdomain.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; # 静态资源直接由Nginx服务(可选,提升性能) location /static/ { alias /path/to/nav_site/public/static/; expires 30d; add_header Cache-Control "public, immutable"; } # 其余请求转发给Go服务 location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` ### Caddy 配置(更简单) ``` yourdomain.com { reverse_proxy localhost:8080 } ``` --- ## 七、Linux 生产部署(systemd) ```bash # 1. 上传二进制文件和 templates/、public/ 目录到服务器 scp -r nav_site_linux templates/ public/ user@server:/opt/nav_site/ # 2. 给予执行权限 chmod +x /opt/nav_site/nav_site_linux # 3. 创建 systemd 服务 cat > /etc/systemd/system/nav_site.service << 'EOF' [Unit] Description=AI工具导航站 After=network.target [Service] Type=simple User=www-data WorkingDirectory=/opt/nav_site ExecStart=/opt/nav_site/nav_site_linux Environment="PORT=8080" Restart=always RestartSec=5 [Install] WantedBy=multi-user.target EOF # 4. 启动服务 systemctl daemon-reload systemctl enable nav_site systemctl start nav_site systemctl status nav_site ``` --- ## 八、Windows 部署(开机自启) ```powershell # 方式1:手动运行 .\nav_site.exe # 方式2:注册为Windows服务(使用 NSSM) # 下载 nssm.exe 后: nssm install NavSite "D:\nav_site\nav_site.exe" nssm set NavSite AppDirectory "D:\nav_site" nssm start NavSite ``` --- ## 九、安全建议 1. **修改默认密码**:首次登录强制修改,建议使用12位以上复杂密码 2. **Session密钥**:修改 `internal/handlers/session.go` 中的 `sessionSecret` 变量 3. **HTTPS**:生产环境必须配置SSL证书 4. **防火墙**:只开放80/443端口,8080端口仅允许内网访问 5. **定期备份**:备份 `data/nav.db` 数据库文件 --- ## 十、常见问题 ### Q: 修改模板后前台没有更新? A: 前台是静态文件,需要在后台点击"重新生成静态页"或通过后台修改任意数据触发自动重建。 ### Q: 如何添加Google Analytics? A: 编辑 `templates/layout.html`,在 `` 前粘贴GA代码即可,修改后触发重新生成。 ### Q: 如何自定义Logo? A: 在后台"站点配置"中填写Logo图片URL,或直接编辑 `templates/layout.html` 的 `.logo` 部分。 ### Q: 广告位如何使用? A: 在后台"广告管理"中新增广告位,粘贴第三方广告代码(百度/Google AdSense等),选择位置(top/sidebar/bottom),保存后自动生成到静态页面。 ### Q: 如何迁移数据? A: 直接复制 `data/nav.db` 文件到新服务器同目录即可。 --- *文档版本:v1.0 | 更新时间:2024*