【问题标题】:Django app not responding on Apache with wsgi_modDjango 应用程序在 Apache 上没有响应 wsgi_mod
【发布时间】:2017-09-21 10:56:25
【问题描述】:

我正在尝试通过 Apache 设置 Django 网站。为此,我使用的是运行 CentOS7 的虚拟机并使用 Apache 2.4.6。

我用 Python (3.6.2) 创建了一个虚拟环境,安装了 Django (1.10.05) 和 mod-wsgi (4.5.18)。启动了新的 Django 项目,迁移了数据库,在地址 0.0.0.0:8003 上启动了开发人员服务器,并且从 VM 外部我可以毫无问题地连接到 <VMs IP>:8003。但是,如果没有开发人员服务器,尝试在 Apache 上进行中继,它就无法工作。我的浏览器只是说它无法连接到网站,事实上,Apache 的访问日志不包含任何连接尝试的痕迹。同一个 Apache 还托管另一个用 Perl 编写的应用程序,它在其专用端口上正常工作。

我的一些 settings.py 可能对你有用

ALLOWED_HOSTS = ['localhost', '127.0.0.1', '[::1]', '<VMs address>']
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static/")

我的 httpd.conf 看起来像这样:

<VirtualHost *:8003>
# using port 8003, because 80 is used by another app. Both ports are open on firewall
    Alias /static /var/www/zdm_ebok/static
    <Directory /var/www/zdm_ebok/static>
        Require all granted
    </Directory>
    <Directory /var/www/zdm_ebok/zdm_ebok>
      <Files wsgi.py>
            Require all granted
       </Files>
    </Directory> 
    WSGIDaemonProcess zdm_ebok python-path=/var/www/zdm_ebok:/var/www/zdm_ebok/venv/lib/python3.6/site-packages
    WSGIProcessGroup zdm_ebok
    WSGIScriptAlias / /var/www/zdm_ebok/zdm_ebok/wsgi.py
</VirtualHost>

我已向 Apache 正在使用的用户授予访问 (664) 访问权限和所有权,所以可能不是这样。

您对我可能做错了什么还有其他想法吗?

编辑

我与另一个应用程序切换了端口,因此 Django 现在可以在端口 80 上工作,我收到 503 Service Unavailable 错误。然后我设法通过在 httpd.conf 中设置 WSGISocketPrefix /var/run/wsgi 并在 WSGIDaemonProcess 中添加 user=#1000 来修复(1000 是我的主要用户的 ID)。但是,当我将它带回端口 8003(以便我的其他应用程序可以在 80 上运行)时,它不再响应。

解决方案

不知道我是否应该删除它,但也许对于那些和我一样不了解 Apache 的人来说,这将是有用的。我忘记做的一件事是在 httpd.conf 中添加“Listen 8003”,以便 Apache 开始监听新端口。

【问题讨论】:

  • 你能找到解决这个问题的方法吗?

标签: python django apache wsgi


【解决方案1】:

我已经在我的一台服务器上尝试过这个,它工作正常。试试这个,

<VirtualHost *:80>

  ServerName localhost.localdomain
  ServerAlias ipaddress

  DocumentRoot /var/www/projectname
  WSGIScriptAlias / /var/www/projectname/projectname/wsgi.py

  Alias /static/ "/var/www/projectname/projectname/static/"
  <Directory "/var/www/projectname/projectname/static">
      Require all granted
  </Directory>

  ErrorLog /var/www/logs/error.log
  CustomLog /var/www/logs/access.log combined

</VirtualHost>

并编辑 /etc/httpd/conf/httpd.conf

WSGIPythonPath /var/www/projectname

【讨论】:

  • 很遗憾没有。我试过这个(当然用我自己的路径代替)和它的几个变体。结果总是一样的:Apache 正常启动,但不响应请求。
猜你喜欢
  • 2020-10-18
  • 2020-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-04
相关资源
最近更新 更多