我试图通过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上工作)它没有再次响应。
解
Dunno如果我应该删除或不删除,但也许对于那些在Apache中与我同样文盲的人来说,这将是有用的。我忘了做的一件事就是添加&#34;听8003&#34;在httpd.conf中,以便Apache开始侦听新端口。
答案 0 :(得分:0)
我在我的一台服务器上尝试了这个,它运行正常。试试这个,
<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