极简博客在云服务器上的完整部署教程
极简博客项目部署到云服务器(域名访问)完整教程
部署核心逻辑:云服务器安装运行环境 → 上传项目 → 用Gunicorn(生产级WSGI服务器)运行Flask应用 → 用Nginx(反向代理)处理域名转发/静态文件 → 域名解析指向服务器IP。
以下步骤以阿里云/腾讯云 Ubuntu 20.04/22.04 服务器为例(CentOS 操作仅包管理器不同,文末补充),全程新手友好,复制命令即可执行;同时补充 Ubuntu 24.04 版本的适配说明,方便大家根据需求选择系统版本。
补充:Ubuntu 20.04 与 24.04 版本对比及推荐建议
首先明确结论:没有绝对的“更好”,只有更适合自己的选择,两者均为 Ubuntu LTS(长期支持)版本,稳定性有保障,具体差异和推荐如下:
1. 版本核心差异
Ubuntu 20.04 LTS:支持周期至 2025 年 4 月,软件包版本稳定(如 Python 3.8、Nginx 1.18),经过长期验证,兼容性极强,几乎所有部署教程(包括本教程)都能直接适配,新手零踩坑,是目前个人部署的“稳妥之选”。
Ubuntu 24.04 LTS:支持周期至 2030 年 4 月(支持更久),软件包版本更新(如 Python 3.12、Nginx 1.24),硬件兼容性更好(尤其新服务器),但部分旧教程的细节需微调,适合想长期使用、愿意接受轻微适配的用户,也是未来的主流选择。
2. 推荐场景
✅ 新手、怕麻烦、追求零报错:优先选 Ubuntu 20.04,本教程所有命令可直接复制执行,无需任何修改。
✅ 新购买服务器、想长期使用(5年以上)、喜欢新版本软件:选Ubuntu 24.04,只需微调2-3处命令,部署流程基本一致。
注意:两者对本博客项目(Flask+Nginx+Gunicorn)的支持都完全足够,核心功能无差异,仅软件包版本和少量命令有细微区别。
一、前期准备
1. 云服务器购买&登录
购买:阿里云ECS/腾讯云CVM,选「Ubuntu 20.04 64位」(新手推荐)或「Ubuntu 24.04 64位」,配置1核2G即可(足够运行博客);
登录:
方式1:服务器控制台「远程连接」(新手推荐);
方式2:本地用Xshell/FinalShell,输入服务器公网IP + 账号(默认
root) + 密码/密钥登录。
2. 域名购买&备案(关键)
购买:阿里云域名/腾讯云域名(比如
yourblog.com);备案:国内服务器必须备案(阿里云/腾讯云有备案流程,提交资料后7-15天通过),未备案域名无法访问;
临时测试:可先用服务器公网IP访问(跳过域名步骤),备案完成后再配置域名。
3. 开放服务器端口
在云服务器控制台「安全组」中,开放以下端口:
80端口(HTTP,域名访问默认端口);
443端口(HTTPS,可选,后期配置SSL用);
22端口(SSH登录,默认已开)。
二、服务器环境配置
1. 更新系统&安装基础依赖
登录服务器后,执行以下命令(逐行复制):
# 更新系统包
apt update && apt upgrade -y
# 安装Python3、pip3、虚拟环境(核心依赖)
apt install python3 python3-pip python3-venv -y
# 安装Nginx(反向代理)
apt install nginx -y
# 安装进程管理工具(确保服务崩溃后自动重启)
apt install supervisor -y
Ubuntu 24.04 适配说明:上述命令完全可用,无需修改;唯一差异是 Ubuntu 24.04 默认 Python 版本为 3.12,pip 版本也更高,安装后无需额外升级,直接使用即可。
2. 创建项目目录&虚拟环境
# 创建项目根目录(自定义,比如/blog)
mkdir -p /blog
cd /blog
# 创建Python虚拟环境(隔离依赖,避免冲突)
python3 -m venv venv
# 激活虚拟环境(激活后命令行开头会显示(venv))
source venv/bin/activate
Ubuntu 24.04 适配说明:虚拟环境创建和激活命令与 20.04 完全一致,无任何差异。
3. 安装项目依赖
虚拟环境激活后,安装Flask项目所需依赖:
# 安装核心依赖(和本地一致)
pip install flask markdown2 werkzeug
# 安装Gunicorn(生产级WSGI服务器,替代Flask自带的开发服务器)
pip install gunicorn
Ubuntu 24.04 适配说明:若执行 pip 命令提示“command not found”,需先执行 apt install python3-pip -y(部分 24.04 镜像默认未安装 pip),其余命令完全一致;Flask、markdown2 等依赖均支持 Python 3.12,无需指定版本。
三、上传项目到服务器
方式1:本地打包上传(新手推荐)
本地操作:
把博客项目文件夹(
blog)打包为blog.zip;用FinalShell/Xftp(或服务器控制台「文件上传」),把
blog.zip上传到服务器/blog目录。
服务器操作:
# 进入项目目录
cd /blog
# 解压压缩包(解压后生成blog文件夹)
unzip blog.zip
# 查看解压后的文件(确认结构和本地一致)
ls blog # 应看到app.py、templates、static、database.db等文件
方式2:Git上传(可选,适合有Git仓库的情况)
如果项目托管在GitHub/Gitee,服务器执行:
cd /blog
git clone 你的仓库地址 blog
关键检查:确保数据库文件存在
# 进入项目目录,检查database.db是否存在
cd /blog/blog
ls | grep database.db # 能看到database.db说明正常
Ubuntu 24.04 适配说明:上传、解压、Git克隆步骤与 20.04 完全一致,无差异;若解压时提示“unzip: command not found”,执行 apt install unzip -y 即可安装解压工具。
四、配置Gunicorn(运行Flask应用)
1. 创建Gunicorn配置文件
# 进入项目目录
cd /blog/blog
# 创建gunicorn配置文件
vim gunicorn_config.py
按下i进入编辑模式,粘贴以下内容(直接复制):
# gunicorn_config.py
import multiprocessing
# 绑定地址和端口(本地监听,不对外暴露)
bind = "127.0.0.1:8000"
# 工作进程数(推荐:CPU核心数*2+1,1核2G服务器设2即可)
workers = 2
# 工作模式(同步,适合小型应用)
worker_class = "sync"
# 超时时间(避免长时间请求卡住)
timeout = 60
# 进程ID文件(方便管理)
pidfile = "gunicorn.pid"
# 日志文件(记录运行日志,方便排错)
accesslog = "access.log"
errorlog = "error.log"
loglevel = "info"
按下Esc → 输入:wq → 回车保存退出。
2. 测试Gunicorn运行
# 激活虚拟环境(如果已退出)
source /blog/venv/bin/activate
# 进入项目目录
cd /blog/blog
# 启动Gunicorn(用配置文件)
gunicorn -c gunicorn_config.py app:app
正常输出:
Listening at: http://127.0.0.1:8000,无报错说明Flask应用运行成功;按
Ctrl+C停止,下一步配置Supervisor实现后台运行。
Ubuntu 24.04 适配说明:Gunicorn 配置和运行命令完全一致,无任何差异;Python 3.12 对 Gunicorn 完全兼容,不会出现启动报错。
五、配置Supervisor(后台运行+自动重启)
1. 创建Supervisor配置文件
# 创建配置文件(文件名自定义,比如blog.conf)
vim /etc/supervisor/conf.d/blog.conf
按下i编辑,粘贴以下内容(注意修改路径为你的实际路径):
[program:blog]
# 项目目录
directory = /blog/blog
# 启动命令(虚拟环境的gunicorn + 配置文件)
command = /blog/venv/bin/gunicorn -c gunicorn_config.py app:app
# 运行用户(root即可)
user = root
# 自动启动
autostart = true
# 崩溃后自动重启
autorestart = true
# 启动延迟(避免开机时提前启动)
startsecs = 5
# 日志文件
stdout_logfile = /blog/blog/supervisor.log
stderr_logfile = /blog/blog/supervisor_error.log
按下Esc → :wq保存退出。
2. 启动Supervisor管理的博客服务
# 重新加载Supervisor配置
supervisorctl reload
# 启动博客服务
supervisorctl start blog
# 查看状态(显示RUNNING说明正常)
supervisorctl status blog
常用命令:
重启服务:
supervisorctl restart blog;停止服务:
supervisorctl stop blog。
Ubuntu 24.04 适配说明:Supervisor 配置和命令完全一致;若启动时提示“supervisorctl: command not found”,执行 apt install supervisor -y 重新安装即可(部分 24.04 镜像未默认安装)。
六、配置Nginx(反向代理+域名访问)
1. 创建Nginx配置文件
# 备份默认配置(可选)
mv /etc/nginx/sites-enabled/default /etc/nginx/sites-enabled/default.bak
# 创建博客的Nginx配置文件
vim /etc/nginx/sites-available/blog
按下i编辑,粘贴以下内容(替换yourblog.com为你的域名,无域名则用服务器公网IP):
server {
# 监听80端口(HTTP默认端口)
listen 80;
# 域名(多个域名用空格分隔,比如 yourblog.com www.yourblog.com)
server_name yourblog.com;
# 静态文件路径(Flask的static目录,Nginx直接处理,提升性能)
location /static {
alias /blog/blog/static;
# 静态文件缓存(可选,加快访问)
expires 30d;
}
# 所有动态请求转发给Gunicorn(127.0.0.1:8000)
location / {
proxy_pass http://127.0.0.1:8000;
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;
}
}
按下Esc → :wq保存退出。
2. 启用Nginx配置&测试
# 创建软链接(启用配置)
ln -s /etc/nginx/sites-available/blog /etc/nginx/sites-enabled/
# 测试Nginx配置是否有语法错误
nginx -t
输出
nginx: configuration file /etc/nginx/nginx.conf test is successful说明配置正常;若报错,检查配置文件路径/语法是否正确。
3. 重启Nginx
systemctl restart nginx
# 设置Nginx开机自启
systemctl enable nginx
Ubuntu 24.04 适配说明:Nginx 配置、启用和重启命令完全一致;Ubuntu 24.04 自带 Nginx 1.24 版本,配置文件语法与 20.04 兼容,无需修改任何配置内容。
七、域名解析(关键)
登录域名服务商(阿里云/腾讯云)控制台,找到「域名解析」;
添加解析记录:
记录类型:
A;主机记录:
@(解析根域名,比如yourblog.com)或www(解析www.yourblog.com);记录值:服务器公网IP;
线路:默认;
TTL:默认(600秒)。
保存后,等待5-10分钟(解析生效)。
八、测试访问
打开本地浏览器,输入:
域名访问:
http://yourblog.com;IP访问(无域名):
http://服务器公网IP。
能看到博客首页,且能正常登录管理员、编辑博客,说明部署成功!
九、常见问题&避坑指南
1. 访问403/502错误
403:Nginx权限不足 → 检查
/blog目录权限,执行chmod -R 755 /blog;502:Gunicorn未运行 → 执行
supervisorctl status blog,确保显示RUNNING,若未运行则supervisorctl start blog。
2. 静态文件(CSS/JS)加载失败
检查Nginx配置中
/static的alias路径是否正确(必须是绝对路径,比如/blog/blog/static);执行
nginx -s reload重启Nginx。
3. 服务器是CentOS系统?
仅环境安装步骤不同,替换为:
# CentOS安装依赖
yum update -y
yum install python3 python3-pip python3-venv nginx supervisor -y
其余步骤(Gunicorn/Supervisor/Nginx配置)完全一致。
4. 服务器是Ubuntu 24.04系统?
核心差异汇总(仅3处细微调整,其余步骤与20.04完全一致):
若提示
pip: command not found:执行apt install python3-pip -y安装pip;若提示
unzip: command not found:执行apt install unzip -y安装解压工具;若提示
supervisorctl: command not found:执行apt install supervisor -y重新安装Supervisor。
补充:Ubuntu 24.04 自带 Python 3.12、Nginx 1.24,无需额外升级,所有配置文件和命令均与 20.04 兼容,部署流程完全一致。
5. 配置HTTPS(可选,实现https://访问)
阿里云/腾讯云提供免费SSL证书,下载后配置到Nginx即可,核心步骤:
下载证书文件(
*.pem/*.key),上传到服务器/etc/nginx/ssl目录;修改Nginx配置,监听443端口并配置证书路径(服务商有详细教程)。
十、总结
部署核心步骤:
服务器环境:Python虚拟环境 + Gunicorn(运行Flask) + Nginx(反向代理);
服务保障:Supervisor实现Gunicorn后台运行+自动重启;
域名访问:域名解析指向服务器IP + Nginx绑定域名。
部署完成后,你的博客就能通过域名公网访问,且稳定性远高于本地运行的Flask开发服务器,满足个人博客的日常使用需求。
版本选择补充:新手优先 Ubuntu 20.04(零踩坑),想长期使用选 Ubuntu 24.04(支持久、软件新),两者部署流程基本一致,仅24.04需偶尔处理少量依赖安装问题,本教程已全部覆盖适配细节。
评论区
暂无评论,快来抢沙发吧~