YM blog部署指南

2026-01-01
92

本文档介绍如何在 Ubuntu 22.04 服务器上部署 YM Blog,使用

Nginx + Gunicorn + Systemd + MySQL + Redis + HTTPS(Certbot) 的生产环境方案。

一、服务器环境准备

  1. 更新系统并安装依赖
sudo apt update && sudo apt upgrade -y

sudo apt install -y \
  python3-pip \
  python3-venv \
  python3-dev \
  libmysqlclient-dev \
  redis-server \
  nginx \
  git
  1. 启动并设置 Redis 自启动
sudo systemctl enable redis-server
sudo systemctl start redis-server

二、获取项目代码 & 创建环境 & 安装依赖

cd /var/local
git clone https://github.com/sirwym/YMblog.git
cd YMblog


python3 -m venv venv
source venv/bin/activate

pip install -r requirements.txt
pip install gunicorn mysqlclient

# mysqlclient 安装失败也没关系, 安装pymysql 即可  pip install pymysql

三、配置环境变量

创建 .env文件, 并参照 .env.example 配置

########################################
# 基础运行环境配置
########################################

# 是否开启调试模式
# 开发环境:True
# 生产环境:False(⚠️ 上线必须关闭)
DEBUG=False

########################################
# Django 核心配置
########################################

# Django 项目密钥
SECRET_KEY="xxxxxxxxxx"

# 允许访问的主机列表(逗号分隔)
# 示例:
# 127.0.0.1,localhost
# yourdomain.com,www.yourdomain.com
ALLOWED_HOSTS=127.0.0.1,xxxx,

########################################
# 数据库配置(MySQL)
########################################

# 数据库服务器地址
DB_HOST=127.0.0.1

# 数据库名称
DB_NAME=xxx

# 数据库用户名
DB_USER=xxx

# 数据库密码(建议使用强密码)
DB_PASSWORD="xxxxx"

# 数据库端口(MySQL 默认 3306)
DB_PORT=3306

四、Django 初始化

mkdir logs

python manage.py collectstatic
python manage.py migrate

五、配置 Gunicorn (Systemd)

  1. sudo vim /etc/systemd/system/ymblog.service
[Unit]
Description=YM Blog Gunicorn Service
After=network.target

[Service]
User=root
Group=www-data
WorkingDirectory=/var/local/YMblog

EnvironmentFile=/var/local/YMblog/.env

ExecStart=/var/local/YMblog/venv/bin/gunicorn \
          --access-logfile - \
          --workers 3 \
          --bind unix:/var/local/YMblog/ymblog.sock \
          config.wsgi:application

Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
  1. 启动并设置开机自启
sudo systemctl daemon-reload
sudo systemctl start ymblog
sudo systemctl enable ymblog

# 查看运行状态
sudo systemctl status ymblog

六、配置 Nginx 反向代理

sudo vim /etc/nginx/sites-available/ymblog

# --------------- ymblog start  复制到ymblog ------------------
server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;

    # 静态文件
    location /static/ {
        alias /var/local/YMblog/staticfiles/;
    }

    # 媒体文件
    location /media/ {
        alias /var/local/YMblog/media/;
    }

    # 主应用
    location / {
        include proxy_params;
        proxy_pass http://unix:/var/local/YMblog/ymblog.sock;
    }
}
# --------------- ymblog end ------------------

# 启动
sudo ln -s /etc/nginx/sites-available/ymblog /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

七、配置HTTPS (Certbot ) 自动续期

sudo apt install -y certbot python3-certbot-nginx

sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com