YM blog部署指南
本文档介绍如何在 Ubuntu 22.04 服务器上部署 YM Blog,使用
Nginx + Gunicorn + Systemd + MySQL + Redis + HTTPS(Certbot) 的生产环境方案。
一、服务器环境准备
- 更新系统并安装依赖
sudo apt update && sudo apt upgrade -y
sudo apt install -y \
python3-pip \
python3-venv \
python3-dev \
libmysqlclient-dev \
redis-server \
nginx \
git
- 启动并设置 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)
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
- 启动并设置开机自启
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