繁体   English   中英

如何配置Django网站与Apache VirtualHosts配合使用?

[英]How can I configure a Django website to work with Apache VirtualHosts?

我最近开始开发Django网站,并希望将它们部署在具有mod_wsgi和Apache的CentOS VPS上。

我遵循了本指南 ,它可以完美运行,但是我想同时运行多个Django网站,因此我尝试在一个适当的配置文件中创建多个虚拟主机,从而出现了问题。

<VirtualHost the.ip.of.server:80>
    ErrorLog /root/praxis.error.log

    Alias /static /root/Praxis/static
    <Directory /root/Praxis/static>
        Require all granted
    </Directory>

    <Directory /root/Praxis/Praxis>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    WSGIDaemonProcess Praxis python-path=/root/Praxis:/root/Env/Praxis/lib/python2.7/site-packages
    WSGIProcessGroup Praxis
    WSGIScriptAlias /praxis /root/Praxis/Praxis/wsgi.py
</VirtualHost>

如果删除VirtualHost的开始和结束标记,则该站点将按预期运行,但是如果保留这些标记,则将不断收到404错误。

我真的不明白为什么只有没有标签,一切都可以正常工作。

我还尝试在基于IP的虚拟主机和基于名称的虚拟主机之间切换,但是没有任何变化。

这也是wsgi.py

wsgi.py

import os

from django.core.wsgi import get_wsgi_application

sys.path.append('/root/Praxis/Praxis')

os.environ['PYTHON_EGG_CACHE'] = '/root/Praxis/.python-egg'
os.environ['DJANGO_SETTINGS_MODULE'] = 'Praxis.settings'

application = get_wsgi_application()

在我的httpd.conf文件中,我还有:

Listen 80

ServerName ip.to.the.server #without port specified

#NameVirtualHost *:80 <-- THIS IS A COMMENT RIGHT NOW

在此先感谢大家的努力,希望有人能为我提供帮助,我正为此努力奋斗! 感谢大伙们。


问题解决了! 我发现(实际上我不知道为什么)所有VIrtualHosts必须放置在httpd.conf文件中,而不是外部.conf文件中。 因此,我将它们全部放置在那里,并删除了所有“ IncludeOptional”指令。 而已!

尝试这个:

virtualhost.conf:

<VirtualHost you.ip.address:80>

  ServerAdmin admin@you.ip.address
  ServerName you.ip.address
  ServerAlias you.ip.address

  <Directory /You/directory/where/wsgifile>
    <Files wsgi.py>
      Require all granted
    </Files>
  </Directory>  
  WSGIScriptAlias / /You/directory/where/wsgifile/wsgi.py

  <Directory /You/directory/where/media>
    Require all granted
  </Directory> 
  Alias /media /You/directory/where/media

  <Directory /You/directory/where/static>
    Require all granted
  </Directory> 
  Alias /static /You/directory/where/static

</VirtualHost>

在您httpd.conf中:

ServerName your.server.name,例如www.example.com或您的ip

您的wsgi.py文件:

import os
import sys
sys.path.append(r'/Path/to/You/DjanoSite')
sys.path.append(r'/Path/to/You/DjanoSite/DjangoSite/Wherewsgifile')
sys.path.append(r'/Path/to/You/media')
sys.path.append(r'/Path/to/You/static')
os.environ['DJANGO_SETTINGS_MODULE'] = 'DjangoSite.settings'
import django
django.setup()
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM