CentOS 8怎么安装配置Django?Django环境搭建教程

在CentOS 8上安装和配置Django的核心步骤是:通过DNF包管理器安装Python及依赖,创建虚拟环境,使用Pip安装Django,最后通过Nginx与Gunicorn构建生产级Web服务器架构。

很多开发者在搭建Python后端环境时,往往被CentOS 8的包管理变化和环境隔离问题困扰,特别是对于习惯使用Ubuntu或Debian的用户来说,RHEL系发行版的逻辑差异容易导致配置失误,本文将提供一套经过验证的实操方案,确保你在2026年的技术栈中,能够稳定、高效地部署Django应用。

Python Django教程 - 安装及配置项目
加载中
Python Django教程 - 安装及配置项目

CentOS 8环境准备与Python安装

Django是基于Python开发的,因此第一步是确保系统拥有正确版本的Python,CentOS 8默认包含Python 3.6,但对于现代Django版本(如4.x或5.x),建议安装更新的Python 3.9或更高版本。

更新系统包管理器

在开始任何安装之前,刷新软件源索引是基础操作,打开终端,执行以下命令:

sudo dnf update -y

这一步能确保你获取最新的软件包元数据,避免后续安装出现版本冲突。

安装Python 3及必要依赖

CentOS 8的AppStream仓库中通常包含较新的Python版本,如果默认版本过低,可以通过模块流(Module Stream)切换。

sudo dnf module install python39 -y

安装完成后,验证Python版本:

python3 --version

还需要安装编译工具和开发库,因为某些Django依赖包(如psycopg2用于PostgreSQL连接)需要C编译器:

sudo dnf install gcc libpq-devel python3-devel -y

业内专家指出,忽略开发库的安装是导致许多第三方库编译失败的常见原因,务必确保这些依赖齐全。

虚拟环境配置与Django安装

在生产环境中,绝对不要在全局Python环境中安装Django,虚拟环境能隔离项目依赖,防止系统级冲突。

创建虚拟环境

使用Python自带的venv

CentOS 8怎么安装配置Django?Django环境搭建教程

模块创建隔离环境,假设你的项目目录为/var/www/myproject

cd /var/www
sudo mkdir myproject
sudo chown $USER:$USER myproject
cd myproject
python3 -m venv venv

激活虚拟环境:

source venv/bin/activate

激活后,命令行提示符前会出现(venv)字样,表明当前环境已切换。

安装Django及相关依赖

在虚拟环境中,使用Pip安装Django,建议指定版本以确保稳定性:

pip install django gunicorn psycopg2-binary

这里安装gunicorn作为生产级WSGI服务器,psycopg2-binary用于连接PostgreSQL数据库,如果项目轻量,也可使用MySQL,需安装mysqlclient

安装完成后,验证Django版本:

django-admin --version

你的开发环境已就绪,接下来需要配置Django项目本身。

Django项目初始化与安全配置

创建项目并配置生产环境参数是部署的关键环节,许多新手在此阶段因配置不当导致安全漏洞或服务无法启动。

创建新项目

django-admin startproject config .

注意末尾的点号,这会将项目文件创建在当前目录,便于管理。

配置settings.py

编辑config/settings.py文件,修改以下关键参数:

  1. ALLOWED_HOSTS:必须填入你的服务器IP地址或域名。ALLOWED_HOSTS = ['your_domain.com', '192.168.1.100'],如果不配置,Django将拒绝所有外部请求。
  2. DEBUG:生产环境中必须设置为False,这会隐藏错误详情,提升安全性。
  3. SECRET_KEY:使用python -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'生成新的密钥,并替换默认值。
  4. 数据库设置:根据你选择的数据库(PostgreSQL/MySQL),配置

    CentOS 8怎么安装配置Django?Django环境搭建教程

    DATABASES字典中的ENGINE、NAME、USER和PASSWORD。

静态文件收集

Django在开发模式下自动处理静态文件,但在生产模式下,需要手动收集它们。

python manage.py collectstatic

这会将所有静态资源(CSS、JS、图片)复制到STATIC_ROOT指定的目录,供Nginx直接服务。

Nginx与Gunicorn生产环境部署

Gunicorn负责处理Python请求,Nginx作为反向代理处理静态文件和负载均衡,这种组合是业内共识认为最稳定的Django部署方案。

安装Nginx

sudo dnf install nginx -y
sudo systemctl start nginx
sudo systemctl enable nginx

创建Gunicorn服务文件

/etc/systemd/system/目录下创建gunicorn.service文件:

[Unit]
Description=Gunicorn daemon for Django project
After=network.target
[Service]
User=your_username
Group=nginx
WorkingDirectory=/var/www/myproject
ExecStart=/var/www/myproject/venv/bin/gunicorn --workers 3 --bind unix:/var/www/myproject/myproject.sock config.wsgi:application
[Install]
WantedBy=multi-user.target

注意替换your_username和项目名称。--bind unix:/var/www/myproject/myproject.sock指定了Gunicorn通过Unix socket与Nginx通信,比TCP端口更高效且安全。

启动并启用Gunicorn:

sudo systemctl start gunicorn
sudo systemctl enable gunicorn

配置Nginx反向代理

/etc/nginx/conf.d/目录下创建myproject.conf

server {
    listen 80;
    server_name your_domain.com;
    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /var/www/myproject;
    }
    location / {
        include proxy_params;
        proxy_pass http://unix:/var/www/myproject/myproject.sock;
    }
}

重启Nginx使配置生效:

CentOS 8怎么安装配置Django?Django环境搭建教程

sudo systemctl restart nginx

防火墙与SELinux配置

CentOS 8默认启用防火墙和SELinux,未正确配置会导致访问被拒。

开放HTTP/HTTPS端口

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

SELinux权限设置

如果SELinux阻止Gunicorn创建socket或访问静态文件,需设置上下文:

sudo setsebool -P httpd_can_network_connect 1
sudo chcon -Rt httpd_sys_rw_content_t /var/www/myproject/static

常见问题排查与维护

部署完成后,监控日志是维护的关键。

查看日志

Gunicorn日志可通过journalctl查看:

sudo journalctl -u gunicorn

Nginx错误日志位于/var/log/nginx/error.log

自动重启机制

确保Gunicorn在系统重启后自动启动,已在[Install]部分配置,若服务异常,可手动重启:

sudo systemctl restart gunicorn

CentOS 8安装Django常见问题解答

CentOS 8如何安装Django虚拟环境

使用python3 -m venv venv创建环境,并通过source venv/bin/activate激活,务必确保Python版本符合Django要求,且所有依赖在虚拟环境中安装,避免污染系统环境。

Django生产环境Nginx配置要点

核心在于设置proxy_pass指向Gunicorn的Unix socket,并正确配置STATIC_ROOT路径,必须设置ALLOWED_HOSTS以匹配域名,否则Django将返回400错误。

CentOS 8配置Django防火墙规则

使用firewall-cmd --permanent --add-service=http开放80端口,--add-service=https开放443端口,最后执行--reload生效,若使用SELinux,需额外配置httpd_can_network_connect布尔值以允许Nginx代理请求。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/401546.html

(0)
cn2cdn是什么?cn2cdn加速原理及使用方法详解
上一篇 2026年6月19日 18:29
WooCommerce结账页怎么改?商店自定义结账页面设置教程
下一篇 2026年6月19日 18:35

相关推荐

  • 网站打开慢是服务器带宽不够吗?如何提升网站加载速度

    网站打开速度慢,服务器带宽不足仅是原因之一,绝非唯一决定因素,根据长期运维经验与数据分析,带宽因素在网站访问延迟中的占比通常不足30%,更多时候,问题根源在于服务器性能瓶颈、网页代码臃肿、数据库查询低效或网络链路波动,解决访问速度问题,必须建立“服务器-网络-前端-程序”的全链路排查思维,单纯升级带宽往往治标不……

    2026年3月6日
    14800
  • html上传图片到服务器失败怎么办,前端图片上传到后端代码

    通过HTML上传图片到服务器的核心方案是:前端使用FormData对象配合Ajax或Fetch API发送POST请求,后端接收文件流并存储至指定目录或云存储,同时返回访问路径供前端展示,在Web开发领域,文件上传是最基础也最复杂的交互之一,很多初学者容易陷入误区,认为只要写个<input type=”f……

    2026年6月12日
    2900
  • 网站打开慢是服务器带宽不够吗?如何提升网站访问速度

    网站访问速度直接影响用户体验与搜索引擎排名,面对访问迟缓的问题,很多站长第一反应往往是质疑服务器配置,针对“网站打开慢是服务器带宽不够吗?”这一核心疑问,结论十分明确:带宽不足仅是众多潜在原因中的一种,绝大多数情况下,网站打开慢是由前端代码冗余、服务器资源瓶颈、数据库查询低效或网络链路问题共同导致的,单纯升级带……

    2026年3月5日
    12900
  • 外网域名和内网域名如何区别设置与管理?

    外网域名通过公网DNS解析、全球可达,内网域名只由内网DNS服务器应答、局域网可见;两者设置流程相近,但管理思路和安全策略完全不同,外网域名像印在名片上的电话号码,全世界都能拨;内网域名更像公司内部的分机号,只有坐在同一栋楼里的人才知道怎么转接,很多运维朋友在这上面栽过跟头,今天把两者的设置逻辑和管理要点摊开讲……

    2026年9月4日
    100
  • 服务器带宽费用怎么算最便宜?带宽价格多少钱一年

    想要实现服务器带宽费用最低化,核心结论在于:打破“固定带宽”的传统采购思维,转而采用“按量计费+共享带宽包+智能压缩”的组合策略,单纯追求运营商给出的低单价往往陷入误区,真正的低成本源于对自身业务流量模型的精准匹配与技术手段的极致优化,通过混合计费模式与技术优化双管齐下,企业完全有能力将带宽成本降低30%至50……

    2026年3月3日
    14400
  • Access数据库密码忘了怎么办?如何快速找回Access密码

    Access数据库密码遗忘后,若未设置恢复选项,官方并无直接“找回密码”功能,唯一可靠途径是通过第三方工具进行暴力破解或哈希提取,且成功率取决于密码复杂度和数据库版本,忘记Access数据库密码是许多中小企业IT管理员和个体开发者常遇到的棘手问题,这不仅仅是一个技术故障,更往往伴随着业务停滞和数据焦虑,Acce……

    2026年7月3日
    3100
  • WooCommerce产品图片缩放插件哪个好用?免费推荐

    WooCommerce产品图片缩放的核心在于平衡加载速度与视觉清晰度,推荐优先使用官方兼容的Lazy Load插件配合CDN加速,或选择Imagify、ShortPixel等具备自动压缩与WebP转换功能的专用插件,以解决移动端加载慢及大图失真问题,在电商运营中,产品图片不仅是展示窗口,更是转化率的直接推手,许……

    2026年6月21日
    2100
  • 互联网区块链仓单技术是什么?区块链仓单如何防伪确权

    互联网区块链仓单技术通过分布式账本确保数据不可篡改,结合物联网设备实现实物与数字凭证的实时同步,从根本上解决了传统供应链金融中重复质押和信息不透明的问题,传统仓单痛点与区块链解决方案对比信任机制的重构过去,仓库管理员手中的纸质单据或中心化数据库里的电子记录,是货物所有权的唯一证明,这种模式存在天然的脆弱性,一旦……

    2026年6月2日
    4900
  • VPS带宽和服务器带宽区别?云服务器带宽怎么选才合适

    VPS带宽与服务器带宽的核心区别在于资源归属模式与性能保障机制,VPS带宽是基于共享机制的虚拟化资源,而独立服务器带宽则是独占式的物理资源,这一本质差异直接决定了业务场景的匹配度与成本投入的性价比,对于追求高性价比的中小规模业务,VPS带宽通过虚拟化技术实现了成本分摊;而对于金融、大型电商等对稳定性要求极高的核……

    2026年3月5日
    12000
  • 如何在cPanel主机中移动压缩删除文件?cpanel管理面板怎么操作

    在cPanel中管理文件的核心逻辑是:利用“文件管理器”进行可视化操作,通过“压缩”功能打包文件以节省空间或便于传输,而“删除”则是不可逆的清理手段,务必先备份再执行,许多刚接触虚拟主机的用户,面对cPanel那密密麻麻的图标常感到无从下手,文件管理只是其中一环,但却是日常维护中最基础也最频繁的操作,无论是上传……

    2026年6月18日
    3110

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注