【发布时间】: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 开始监听新端口。
【问题讨论】:
-
你能找到解决这个问题的方法吗?