下面给你一份在 CentOS 上配置 Django 项目的常见做法(以 CentOS 7/8 + Python 3 + Nginx + Gunicorn 为例,这是生产环境最常用方案)。
sudo yum update -y
sudo yum install -y epel-release
sudo yum install -y python3 python3-pip python3-devel \
nginx git gcc make
CentOS 8 可用
dnf替代yum
mkdir -p /opt/myproject
cd /opt/myproject
python3 -m venv venv
source venv/bin/activate
升级 pip:
pip install --upgrade pip
pip install django gunicorn
创建或上传 Django 项目:
django-admin startproject myproject .
测试运行:
python manage.py runserver
编辑 myproject/settings.py:
ALLOWED_HOSTS = ['你的服务器IP', '域名']
STATIC_ROOT = '/opt/myproject/static'
收集静态文件:
python manage.py collectstatic
测试 Gunicorn:
gunicorn myproject.wsgi:application \
--bind 0.0.0.0:8000
创建服务文件:
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
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
gunicorn.sock 是否存在collectstaticsudo dnf install python39
如果你需要:
可以告诉我你的具体需求,我可以给你更针对性的配置。