You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署Django应用至RHEL 8服务器时manage.py无响应故障排查

Django命令在RHEL8服务器无报错卡住的排查方案

问题现象

本地可正常运行的Python 3.8+Django+PostgreSQL重构项目,部署到新RHEL 8服务器后出现以下问题:

  • 执行sudo python3.8 manage.py runserver时,系统检查后进程卡住,无报错无输出
  • 执行sudo python3.8 manage.py createsuperuser --username <username>时同样无输出、进程卡住
  • 不用sudo执行命令会返回权限拒绝错误;已尝试在安装全量依赖的虚拟环境中执行,问题依旧;排除磁盘空间问题(项目目录分配20GB,仅占用9GB)

排查解决步骤

1. 优先排查PostgreSQL连接问题

Django命令卡顿大概率是数据库连接阻塞导致:

  • 检查PostgreSQL服务状态:
sudo systemctl status postgresql

若服务未运行,启动并设置开机自启:

sudo systemctl start postgresql
sudo systemctl enable postgresql
  • 验证settings.py中数据库配置参数:确认HOST、USER、PASSWORD、PORT与服务器PostgreSQL配置完全匹配
  • 手动测试数据库连接:
# 进入Python交互环境
python3.8
# 执行连接测试
import psycopg2
try:
    conn = psycopg2.connect(
        dbname="你的数据库名",
        user="数据库用户",
        password="数据库密码",
        host="localhost",
        port="5432"
    )
    print("数据库连接成功")
    conn.close()
except Exception as e:
    print("连接失败:", e)

2. 修复权限问题(避免滥用sudo)

不用sudo提示权限拒绝,说明当前用户对项目或Python环境无足够权限:

  • 检查并修改项目目录权限:
# 查看目录权限
ls -ld /path/to/your/project
ls -l /path/to/your/project
# 赋予当前用户目录所有权
sudo chown -R $USER:$USER /path/to/your/project
# 设置合理权限
sudo chmod -R 755 /path/to/your/project
  • 检查虚拟环境目录权限:
sudo chown -R $USER:$USER /path/to/your/venv

3. 开启详细日志定位卡顿点

让Django输出调试级日志,或查看系统日志:

  • 带详细日志执行命令:
# runserver命令
python3.8 manage.py runserver --verbosity 3
# createsuperuser命令
python3.8 manage.py createsuperuser --username <username> --verbosity 3
  • 查看系统及PostgreSQL日志:
sudo tail -f /var/log/messages
sudo tail -f /var/log/postgresql/postgresql-<版本号>-main.log

4. 校验依赖版本一致性

确保服务器虚拟环境依赖与本地完全一致:

  • 本地导出依赖列表:
pip freeze > requirements.txt
  • 服务器安装并比对依赖:
pip install -r requirements.txt
pip freeze > server_requirements.txt
diff requirements.txt server_requirements.txt

重点确认django、psycopg2-binary(或psycopg2)版本与本地匹配。

5. 排查SELinux限制(RHEL 8特有)

RHEL 8默认开启SELinux,可能限制Django或PostgreSQL操作:

  • 临时关闭SELinux测试:
sudo setenforce 0

若命令恢复正常,说明是SELinux规则问题,联系IT部门配置对应策略,或添加临时规则:

# 允许服务访问项目目录(以Apache为例)
sudo semanage fcontext -a -t httpd_sys_content_t "/path/to/your/project(/.*)?"
sudo restorecon -Rv /path/to/your/project

内容的提问来源于stack exchange,提问作者Ben Bettencourt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 23:40:58