AI部署前后端
Published on April 03, 2025
轻量级书签管理系统部署与使用指南(AI编写)
项目概述
本项目旨在构建一个轻量级的书签管理系统,适合个人用户进行网址收藏与管理。系统采用单用户模式,以 SQLite 作为数据库存储书签信息,后端使用 Node.js 搭建服务,前端提供简单的交互界面。整体架构设计注重轻量化,以适应内存较小的服务器环境。
功能特性
- 单用户管理:仅需一个用户账户即可完成书签的添加、删除、分类等操作。
- 轻量化设计:对服务器内存要求低,整体内存占用小于 100MB。
- 数据库支持:采用 SQLite 数据库,无需复杂的数据库管理系统。
- 跨域支持:配置了跨域访问,方便前后端交互。
- HTTPS 支持:可通过配置 SSL 证书实现 HTTPS 安全访问。
环境准备
服务器要求
- 操作系统:建议使用基于 Debian 或 Ubuntu 的 Linux 发行版。
- 内存:最低 512MB,推荐 1GB 及以上。
- CPU:1 核及以上。
安装必要软件
# 更新系统软件包
sudo apt update && sudo apt upgrade -y
# 安装 Node.js 16.x
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install -y nodejs
# 安装 SQLite
sudo apt install sqlite3
# 安装 Nginx
sudo apt install nginx
# 验证安装
node -v
npm -v
sqlite3 --version
项目部署
1. 克隆项目
cd /var/www
git clone https://github.com/1523090155/book.git project
cd project
2. 后端部署
安装依赖
cd backend
npm install
初始化数据库
sqlite3 database/database.db < database/init.sql
配置环境变量
在 backend 目录下创建 .env 文件,内容如下:
PORT=3000
DB_PATH=./database/database.db
启动后端服务
使用 PM2 管理后端服务,确保服务在后台稳定运行:
# 全局安装 PM2
npm install -g pm2
# 启动后端服务
pm2 start server.js --name backend
# 配置 PM2 开机自启
pm2 startup
pm2 save
3. 前端部署
配置 Nginx 虚拟主机
创建 Nginx 配置文件 /etc/nginx/sites-available/frontend,内容如下:
server {
listen 80;
server_name 140.82.5.217; # 替换为你的服务器 IP 或域名
root /var/www/project/frontend/public;
index index.html;
location / {
proxy_pass http://127.0.0.1:3000;
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;
# 允许跨域
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Content-Type';
# 处理预检请求
if ($request_method = OPTIONS) {
return 204;
}
}
}
激活配置:
# 创建软链接到 sites-enabled 目录
sudo ln -s /etc/nginx/sites-available/frontend /etc/nginx/sites-enabled/
# 检查 Nginx 配置文件语法
sudo nginx -t
# 重启 Nginx 服务
sudo systemctl restart nginx
直接启动静态服务器(可选)
若不想使用 Nginx,也可使用 http-server 直接提供静态文件服务:
# 全局安装 http-server
npm install -g http-server
# 启动静态服务器
http-server ./frontend/public
数据库操作
SQLite 操作
连接数据库
sqlite3 /var/www/project/backend/database.db
常用命令
-
列出所有表:
.tables -
查看
users表结构:PRAGMA table_info(users); -
查询特定用户:
SELECT * FROM users WHERE username = 'test'; -
退出 SQLite CLI:
.exit
MySQL 操作(可选)
若使用 MySQL 数据库,可参考以下常用命令:
-
连接到 MySQL:
mysql -u root -p -
查找所有数据库:
SHOW DATABASES; -
进入指定数据库:
USE cloud_nav; -
查找数据库中的所有表:
SHOW TABLES; -
查看表结构:
DESCRIBE 表名; -
查看表中的所有数据:
SELECT * FROM 表名;
API 测试
登录测试
curl -X POST http://localhost:3000/login \
-H "Content-Type: application/json" \
-d '{"username": "test", "password": "123"}'
其他测试示例
curl -X POST -H "Content-Type: application/json" -d '{"username": "newuser", "password": "$2a$10$newlygeneratedhash"}' http://140.82.5.217/login
curl -X POST -H "Content-Type: application/json" -d '{"username": "newuser", "password": "newpassword"}' http://140.82.5.217/login
安全配置
SSL 证书配置
将 SSL 证书文件放置在以下路径:
/var/www/project/111600key.key
/var/www/project/111600cet.pem
然后修改 Nginx 配置文件,添加 HTTPS 支持:
server {
listen 443 ssl;
server_name 140.82.5.217; # 替换为你的服务器 IP 或域名
root /var/www/project/frontend/public;
index index.html;
ssl_certificate /var/www/project/111600cet.pem;
ssl_certificate_key /var/www/project/111600key.key;
location / {
proxy_pass http://127.0.0.1:3000;
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;
# 允许跨域
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Content-Type';
# 处理预检请求
if ($request_method = OPTIONS) {
return 204;
}
}
}
重启 Nginx 服务使配置生效:
sudo systemctl restart nginx
防火墙配置
建议使用防火墙限制非必要端口访问,例如使用 ufw:
# 允许 SSH 连接
sudo ufw allow ssh
# 允许 HTTP 和 HTTPS 访问
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 启用防火墙
sudo ufw enable
日常维护
服务监控
-
查看 PM2 服务列表:
pm2 list -
查看后端服务日志:
pm2 logs backend -
重启后端服务:
pm2 restart backend
数据库备份
为防止数据丢失,建议定期备份数据库:
sqlite3 /var/www/project/backend/database.db ".backup db_backup_$(date +%F).db"
项目结构
/var/www/project/
├── backend
│ ├── database
│ │ ├── database.db
│ │ └── init.sql
│ ├── .env
│ └── server.js
├── frontend
│ └── public
│ └── index.html
└── ...
常见问题与解决方案
- 后端服务无法启动
- 检查依赖是否安装:确保
backend目录下的依赖已正确安装,可再次执行npm install。 - 查看日志文件:使用
pm2 logs backend查看后端服务的日志,根据日志信息排查问题。
- 检查依赖是否安装:确保
- Nginx 配置错误
- 检查配置文件语法:使用
sudo nginx -t检查 Nginx 配置文件的语法是否正确。 - 查看 Nginx 日志:查看
/var/log/nginx/error.log文件,获取详细的错误信息。
- 检查配置文件语法:使用
- 数据库连接失败
- 检查数据库文件路径:确保
.env文件中的DB_PATH配置正确。 - 检查数据库文件权限:确保数据库文件具有正确的读写权限。
- 检查数据库文件路径:确保
以上就是完整的项目部署与使用指南,按照上述步骤操作,您可以顺利搭建并运行轻量级书签管理系统。如有其他问题,请随时联系。
Categories: