一、项目背景与需求分析

1.1 项目介绍

本项目是基于 Django 开发的个人展示网站,包含首页、个人介绍、静态页面展示、后台管理等功能,可作为课程作业、个人作品集展示使用。

1.2 功能需求

前端页面展示(首页、关于我)

静态资源加载(CSS、JS、图片)

Django Admin 后台内容管理

支持生产环境部署,可公网 / 局域网访问

1.3 技术栈

后端:Django

数据库:SQLite3

部署:Gunicorn + Nginx

系统:CentOS8 虚拟机

二、环境准备 

VM 虚拟机 / VMware

 安装 CentOS8 操作系统 

确保虚拟机可以联网

Django 项目已上传 Gitee(本文使用你自己的 personalwebsite)

三、CentOS8 部署 Django + Gunicorn + Nginx 详细步骤

3.1 安装系统依赖

dnf update -y
dnf install python3-pip python3-devel nginx gcc git -y

3.2 拉取项目代码  

cd /opt
git clone https://gitee.com/kxhuan/personalwebsite.git
cd personalwebsite

3.3 创建虚拟环境

python3 -m venv venv
source venv/bin/activate

pip install django gunicorn

3.4 修改 Django 配置(生产必备)
编辑 settings.py

vi personal_website/settings.py

按 / 输入 DEBUG 回车
把 True 改成 False
把 ALLOWED_HOSTS 改成 ['*']
最后一行添加:

STATIC_ROOT = os.path.join(BASE_DIR, 'static_files')

按 Esc → 输入 :wq 保存

3.5 收集静态文件

python manage.py collectstatic --noinput

3.6 测试 Gunicorn 启动

gunicorn personal_website.wsgi:application --bind 0.0.0.0:8000

出现启动成功即正常,Ctrl+C 停止。

四、Nginx 反向代理配置

4.1安装Nginx 创建 Nginx 配置文件

dnf install nginx -y --skip-broken

先创建 Nginx 配置目录

mkdir -p /etc/nginx/conf.d
vi /etc/nginx/conf.d/personalwebsite.conf

写入内容

server {
    listen 80;
    server_name localhost;

    # 静态文件交由Nginx直接处理
    location /static/ {
        alias /opt/personalwebsite/static_files/;
    }

    # 动态请求转发给Gunicorn
    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;
    }
}

4.2 检查配置并重启 Nginx

nginx -t
systemctl restart nginx
systemctl enable nginx

4.3 防火墙放行 HTTP

firewall-cmd --add-service=http --permanent
firewall-cmd --reload

五、后台启动 Gunicorn

gunicorn personal_website.wsgi:application --bind 127.0.0.1:8000 --daemon

六、访问网站

在虚拟机浏览器输入:

http://localhost

网站部署完成!

七、部署架构说明


Gunicorn:WSGI 应用服务器,负责运行 Django,替代不安全的 runserver
Nginx:反向代理 + 静态文件处理,提高访问速度与并发能力
CentOS8:稳定服务器操作系统
静态文件分离:Nginx 直接处理静态资源,减轻 Django 压力

八、常见问题


页面无法访问:检查防火墙、Nginx 是否启动、Gunicorn 是否运行
样式丢失:未执行 collectstatic 或 Nginx 静态路径配置错误
权限报错:给 static_files 开权限或关闭 SELinux

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐