温馨提示×

centos怎么配置django

小樊
37
2026-09-30 11:16:33
栏目: 编程语言

下面给你一份在 CentOS 上配置 Django 项目的常见做法(以 CentOS 7/8 + Python 3 + Nginx + Gunicorn 为例,这是生产环境最常用方案)。


一、基础环境准备

1. 更新系统

sudo yum update -y

2. 安装依赖

sudo yum install -y epel-release
sudo yum install -y python3 python3-pip python3-devel \
    nginx git gcc make

CentOS 8 可用 dnf 替代 yum


二、创建 Python 虚拟环境(推荐)

mkdir -p /opt/myproject
cd /opt/myproject

python3 -m venv venv
source venv/bin/activate

升级 pip:

pip install --upgrade pip

三、安装 Django 和 Gunicorn

pip install django gunicorn

创建或上传 Django 项目:

django-admin startproject myproject .

测试运行:

python manage.py runserver

四、配置 Django 设置

编辑 myproject/settings.py:

ALLOWED_HOSTS = ['你的服务器IP', '域名']

STATIC_ROOT = '/opt/myproject/static'

收集静态文件:

python manage.py collectstatic

五、使用 Gunicorn 运行 Django

测试 Gunicorn:

gunicorn myproject.wsgi:application \
    --bind 0.0.0.0:8000

六、配置 Systemd 守护进程(重要)

创建服务文件:

sudo vi /etc/systemd/system/gunicorn.service

内容示例:

[Unit]
Description=gunicorn django
After=network.target

[Service]
User=root
WorkingDirectory=/opt/myproject
ExecStart=/opt/myproject/venv/bin/gunicorn \
    --workers 3 \
    --bind unix:/opt/myproject/myproject.sock \
    myproject.wsgi:application

[Install]
WantedBy=multi-user.target

启动服务:

sudo systemctl daemon-reload
sudo systemctl start gunicorn
sudo systemctl enable gunicorn

七、配置 Nginx 反向代理

sudo vi /etc/nginx/conf.d/myproject.conf

示例配置:

server {
    listen 80;
    server_name 你的域名或IP;

    location /static/ {
        alias /opt/myproject/static/;
    }

    location / {
        proxy_pass http://unix:/opt/myproject/myproject.sock;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

检查并重载 Nginx:

sudo nginx -t
sudo systemctl restart nginx

八、开放防火墙端口

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

九、访问测试

浏览器访问:

http://服务器IP

十、常见问题

1. 502 Bad Gateway

  • 检查 gunicorn.sock 是否存在
  • 检查 Nginx 用户权限

2. 静态文件 404

  • 确保已执行 collectstatic
  • Nginx 路径配置正确

3. CentOS 8 Python 版本低

sudo dnf install python39

如果你需要:

  • CentOS + Django + MySQL
  • Django + uWSGI
  • Django + HTTPS(Let’s Encrypt)

可以告诉我你的具体需求,我可以给你更针对性的配置。

0 踩