logo
0
0
WeChat Login

我的第一个网站

一个现代化的个人网站,包含用户认证系统和响应式设计。

功能特性

  • ✅ 用户注册和登录系统
  • ✅ SQLite数据库存储
  • ✅ 密码加密(bcrypt)
  • ✅ 会话管理
  • ✅ 响应式设计
  • ✅ 现代化UI界面
  • ✅ 消息提示系统

技术栈

后端

  • Node.js + Express.js
  • SQLite3 数据库
  • bcryptjs 密码加密
  • express-session 会话管理

前端

  • 原生HTML5 + CSS3 + JavaScript
  • 响应式设计
  • Font Awesome 图标
  • Google Fonts 字体

快速开始

本地开发

  1. 安装依赖
npm install
  1. 启动开发服务器
npm run dev
  1. 访问网站 打开浏览器访问 http://localhost:3001

生产环境部署

  1. 安装依赖
npm install --only=production
  1. 启动服务
npm start

默认账户

  • 用户名: admin
  • 密码: admin123

项目结构

myweb/ ├── server.js # 后端服务器 ├── index.html # 主页面 ├── styles.css # 样式文件 ├── script.js # 前端逻辑 ├── package.json # 项目配置 ├── Dockerfile # Docker配置 └── README.md # 项目说明

API接口

用户认证

  • POST /api/register - 用户注册
  • POST /api/login - 用户登录
  • POST /api/logout - 用户注销
  • GET /api/check-auth - 检查登录状态
  • GET /api/user - 获取用户信息

部署到Lighthouse

准备工作

  1. 确保服务器已安装Docker
  2. 确保服务器已安装TAT(腾讯云自动化助手)

部署步骤

  1. 构建Docker镜像
docker build -t my-first-website .
  1. 运行容器
docker run -d --name my-website -p 3001:3001 my-first-website
  1. 配置防火墙规则 确保服务器开放3001端口

使用Docker Compose(推荐)

创建 docker-compose.yml 文件:

version: '3.8' services: website: build: . ports: - "3001:3001" restart: unless-stopped environment: - NODE_ENV=production

启动服务:

docker-compose up -d

开发说明

数据库

项目使用SQLite数据库,数据库文件为 database.db。首次运行时会自动创建数据库表和默认管理员账户。

会话管理

使用express-session进行会话管理,会话数据存储在内存中。生产环境建议使用Redis等持久化存储。

安全性

  • 密码使用bcrypt加密
  • 会话使用安全配置
  • CORS跨域配置
  • 输入验证和错误处理

自定义配置

修改端口

server.js 中修改端口号:

const PORT = process.env.PORT || 3001; // 修改这里的端口号

修改会话配置

server.js 中修改会话配置:

app.use(session({ secret: 'my-first-website-secret-key', // 修改密钥 resave: false, saveUninitialized: false, cookie: { secure: false, maxAge: 24 * 60 * 60 * 1000 } }));

故障排除

端口被占用

如果3001端口被占用,可以修改端口号或停止占用该端口的服务。

数据库错误

如果数据库连接失败,检查是否有写入权限,或删除 database.db 文件重新创建。

依赖安装失败

确保使用正确的Node.js版本(推荐18+),并清理node_modules后重新安装:

rm -rf node_modules npm install

许可证

MIT License

联系方式

如有问题或建议,请联系项目维护者。

About

管理员上传文件,用户查看下载,支持PDF,TXT,JPG多种格式,DOC无法在线预览。

Language
JavaScript71.5%
HTML17.7%
CSS9.4%
Shell1.2%
Others0.2%