本文档详细说明如何在本地环境启动 BlogHub 博客系统。
确保系统已安装 Python 3.9 或更高版本:
python --version如未安装,请从 Python 官网 下载安装。
确保系统已安装 MySQL 8.0 或更高版本。
Windows:
- 下载 MySQL Installer
- 按照安装向导完成安装
macOS:
brew install mysql
brew services start mysqlLinux (Ubuntu/Debian):
sudo apt update
sudo apt install mysql-server
sudo systemctl start mysql# 进入项目目录
cd PythonProject1
# 创建虚拟环境
python -m venv .venv
# 激活虚拟环境
# Windows (PowerShell)
.\.venv\Scripts\Activate.ps1
# Windows (CMD)
.venv\Scripts\activate.bat
# Linux/macOS
source .venv/bin/activatepip install -r requirements.txt方式一:使用 SQL 脚本
mysql -u root -p < init_db.sql方式二:手动创建
登录 MySQL:
mysql -u root -p执行以下 SQL:
CREATE DATABASE IF NOT EXISTS bloghub CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;- 复制环境变量模板:
cp .env.example .env- 编辑
.env文件,修改数据库配置:
APP_NAME=BlogHub
SECRET_KEY=your-super-secret-key-change-in-production
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=10080
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=your_mysql_password
MYSQL_DATABASE=bloghub
⚠️ 请将MYSQL_PASSWORD改为您的 MySQL 密码⚠️ 生产环境请务必更换SECRET_KEY
方式一:直接运行
python main.py方式二:使用 uvicorn(推荐开发环境)
uvicorn main:app --host 0.0.0.0 --port 8000 --reload参数说明:
--host 0.0.0.0: 允许外部访问--port 8000: 端口号--reload: 自动重载(代码修改后自动重启)
成功启动后,您将看到类似输出:
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO: Started reloader process
INFO: Started server process
INFO: Waiting for application startup.
INFO: Application startup complete.
| 文档 | URL |
|---|---|
| Swagger UI | http://localhost:8000/docs |
| ReDoc | http://localhost:8000/redoc |
- 访问 http://localhost:8000/register
- 填写用户名、邮箱、密码
- 点击"注册"按钮
- 注册成功后自动登录
- 登录后点击顶部导航"写文章"
- 输入文章标题
- 填写文章摘要(可选)
- 添加封面图片链接(可选)
- 编写文章内容
- 选择是否公开发布
- 点击"发布文章"
- 点击顶部导航"我的文章"
- 查看所有已发布和草稿文章
- 可对文章进行查看、编辑、删除操作
- 点赞: 在文章详情页点击❤️按钮
- 评论: 在文章下方输入评论内容并提交
- 回复: 点击评论下方的"回复"按钮
错误信息: Can't connect to MySQL server
解决方案:
- 确认 MySQL 服务已启动
- 检查
.env中的数据库配置是否正确 - 确认数据库用户权限
错误信息: ModuleNotFoundError
解决方案:
- 确认虚拟环境已激活
- 重新安装依赖:
pip install -r requirements.txt
错误信息: Address already in use
解决方案:
- 更换端口:
uvicorn main:app --port 8001 - 或关闭占用端口的程序
解决方案:
- 确认
app/static目录存在 - 检查文件路径是否正确
- 更换
SECRET_KEY为随机字符串 - 关闭 DEBUG 模式
- 使用 HTTPS
- 限制 CORS 来源
- 使用 Gunicorn 作为 WSGI 服务器
- 配置 Nginx 反向代理
- 启用数据库连接池
- 添加 Redis 缓存
gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker -b 0.0.0.0:8000如有其他问题,请查阅项目 README.md 或提交 Issue。