冰序小站

极简博客在云服务器上的完整部署教程

发布时间:2026-03-19 21:04:20 | 更新时间:2026-03-19 21:09:02

极简博客项目部署到云服务器(域名访问)完整教程

部署核心逻辑:云服务器安装运行环境 → 上传项目 → 用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:本地打包上传(新手推荐)

  1. 本地操作:

    • 把博客项目文件夹(blog)打包为blog.zip

    • 用FinalShell/Xftp(或服务器控制台「文件上传」),把blog.zip上传到服务器/blog目录。

  2. 服务器操作:


# 进入项目目录
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 兼容,无需修改任何配置内容。

七、域名解析(关键)

  1. 登录域名服务商(阿里云/腾讯云)控制台,找到「域名解析」;

  2. 添加解析记录:

    • 记录类型:A

    • 主机记录:@(解析根域名,比如yourblog.com)或www(解析www.yourblog.com);

    • 记录值:服务器公网IP;

    • 线路:默认;

    • TTL:默认(600秒)。

  3. 保存后,等待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配置中/staticalias路径是否正确(必须是绝对路径,比如/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端口并配置证书路径(服务商有详细教程)。

十、总结

部署核心步骤:

  1. 服务器环境:Python虚拟环境 + Gunicorn(运行Flask) + Nginx(反向代理);

  2. 服务保障:Supervisor实现Gunicorn后台运行+自动重启;

  3. 域名访问:域名解析指向服务器IP + Nginx绑定域名。

部署完成后,你的博客就能通过域名公网访问,且稳定性远高于本地运行的Flask开发服务器,满足个人博客的日常使用需求。

版本选择补充:新手优先 Ubuntu 20.04(零踩坑),想长期使用选 Ubuntu 24.04(支持久、软件新),两者部署流程基本一致,仅24.04需偶尔处理少量依赖安装问题,本教程已全部覆盖适配细节。

评论区

暂无评论,快来抢沙发吧~