个人博客部署架构与流程
一、系统架构
用户 → https://orcadmeg.cn
|
Nginx(80/443)
|
Gunicorn(5000)
|
Flask 应用 ↙ ↘ SQLite 文件存储 (数据库) (上传文件)
二、技术栈
| 类别 | 技术组件 | 说明 |
|---|---|---|
| 域名 | orcadmeg.cn / gao.orcadmeg.cn | 主站 + 子站 |
| 服务器 | 阿里云 ECS(47.110.71.249) | Rocky Linux 9.7 |
| 反向代理 | Nginx | HTTP/HTTPS + 静态文件 |
| Web框架 | Flask 2.3.3 | Python轻量框架 |
| WSGI | Gunicorn | 高性能服务器 |
| 数据库 | SQLite | 轻量嵌入式 |
| 进程管理 | Supervisor | 自动守护进程 |
| SSL证书 | Let's Encrypt | 免费,90天自动续期 |
三、部署流程
第1步:环境准备
```bash
安装基础软件
dnf install -y python3 nginx supervisor
域名解析(DNS添加A记录)
orcadmeg.cn → 47.110.71.249 gao.orcadmeg.cn → 47.110.71.249
安全组开放端口
TCP 80(HTTP)、TCP 443(HTTPS)
第2步:项目结构
/var/www/blog/
├── app.py #Flask应用主文件
├── requirements.txt #Python依赖
├── venv/ #虚拟环境
├── templates/ #HTML模板
│ ├── base.html #基础布局
│ ├── index.html #首页
│ ├── post.html #文章页
│ ├── about.html #关于页
│ ├── files.html #文件中心
│ └── admin/ #管理后台
├── static/css/ #样式文件
├── uploads/ #上传文件存储
└── logs/ #日志文件
第3步:SSL证书
申请Let's Encrypt免费证书
certbot certonly --standalone \ -d orcadmeg.cn -d gao.orcadmeg.cn
证书路径
/etc/letsencrypt/live/orcadmeg.cn/
├── fullchain.pem 完整证书
└── privkey.pem 私钥
第4步:启动服务
启动顺序
systemctl start nginx #先启动Nginx
systemctl start supervisord #再启动进程管理
supervisorctl start blog #最后启动应用
验证
curl -I https://orcadmeg.cn #返回200即成功
四、数据持久化
| 数据类型 | 存储路径 | 备份策略 |
|---|---|---|
| 数据库 | blog.d | 每日定时备份 |
| 上传文件 | /uploads/ | 每周打包备份 |
| Nginx配置 | /etc/nginx/conf.d/ | Git版本控制 |
| SSL证书 | /etc/letsencrypt/ | 自动续期 |
五、访问地址
| 页面 | 地址 | 说明 |
|---|---|---|
| 首页 | https://orcadmeg.cn | 文章列表 |
| 子站 | https://gao.orcadmeg.cn | 子域名 |
| 后台 | https://orcadmeg.cn/login | admin/admin123 |
| 文件 | https://orcadmeg.cn/files | 上传下载 |
| 画廊 | https://orcadmeg.cn/gallery | 图片浏览 |
六、日常维护
查看服务状态
supervisorctl status # 应用状态 systemctl status nginx # Nginx状态
查看日志
tail -f /var/www/blog/logs/blog_out.log tail -f /var/log/nginx/access.log
数据库备份
cp /var/www/blog/instance/blog.db /backup/blog_$(date +%Y%m%d).db
SSL自动续期(已配置crontab)
0 3 * * * certbot renew --quiet --post-hook 'systemctl reload nginx'
评论