个人博客架构与部署

个人博客部署架构与流程


一、系统架构

用户 → 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'

评论