Django 一台服务器上有两个站点:NameVirtualHost site2没有虚拟主机

Django 一台服务器上有两个站点:NameVirtualHost site2没有虚拟主机,django,apache2,Django,Apache2,我有两个网站是用Django框架开发的,我试图通过Apache2中的虚拟主机配置从同一台机器上访问它们。 我已经创建了/etc/apache2/sites available/alcs: NameVirtualHost alcs:80 <VirtualHost alcs:80> ServerAdmin candini@meeo.it ServerName alcs DocumentRoot /home/candini/Repos/ALCS/SW/alcs-sy

我有两个网站是用Django框架开发的,我试图通过Apache2中的虚拟主机配置从同一台机器上访问它们。 我已经创建了/etc/apache2/sites available/alcs

NameVirtualHost alcs:80
<VirtualHost alcs:80>
    ServerAdmin candini@meeo.it
    ServerName alcs
    DocumentRoot /home/candini/Repos/ALCS/SW/alcs-system/GUI-User-Interface
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/candini/Repos/ALCS/SW/alcs-system/GUI-User-Interface/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
    WSGIScriptAlias / /home/candini/Repos/ALCS/SW/alcs-system/GUI-User-Interface/apache/django.wsgi
    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
</VirtualHost>
NameVirtualHost jsonopenlayers:80
<VirtualHost jsonopenlayers:80>
    ServerAdmin candini@meeo.it
    ServerName jsonopenlayers
    DocumentRoot /home/candini/Repos/CanetaRepo/tmp/STO
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /home/candini/Repos/CanetaRepo/tmp/STO/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
    WSGIScriptAlias / /home/candini/Repos/CanetaRepo/tmp/STO/apache/django.wsgi
    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>
</VirtualHost>
但问题是我得到了:

root@office-007:~# /etc/init.d/apache2 restart
* Restarting web server apache2 [Mon Dec 12 11:23:26 2011] [warn] NameVirtualHost jsonopenlayers:80 has no VirtualHosts
[Mon Dec 12 11:23:26 2011] [warn] NameVirtualHost jsonopenlayers:80 has no VirtualHosts
... waiting [Mon Dec 12 11:23:27 2011] [warn] NameVirtualHost jsonopenlayers:80 has no VirtualHosts
[Mon Dec 12 11:23:27 2011] [warn] NameVirtualHost jsonopenlayers:80 has no VirtualHosts
只有alcs站点正确到达。如果我试图达到第二个,我会得到以下Django错误:

Page not found (404)
Request Method: GET
Request URL: http://localhost/jsonopenlayers/

Using the URLconf defined in python_scripts.urls, Django tried these URL patterns, in this order:
^alcs/
^alcs/evolution_model_catalogue.html
^alcs/advanced_search_option.html
^alcs/ontological_tree_cascade.html
^alcs/search_evolution_model.html
^alcs/load_evolution_model.json
^alcs/select_load_option.html
^alcs/delete_model.json
^alcs/withdraw_model.json
^alcs/evolution_model_catalogue.html
^alcs/support_request.json
^alcs/malfunction_report.json
^alcs/file_upload.html
^alcs/malfunction_file_upload

The current URL, jsonopenlayers/, didn't match any of these.
但是如果我从/etc/apache2/sites enabled/目录中删除alcs链接,它就可以正常工作


我的配置哪里错了?

正如我在评论中提到的,命名主机是完全错误的。当你想从同一台机器上为几个不同的域名提供服务时,命名主机正是如此。因此,如果您想从同一个Apache服务foo.com和bar.com,您可以使用这个

您需要的是一些不同的、更简单的东西:只需在同一域中的不同子文件夹中为两个Django站点提供服务。只需两行代码即可完成此操作:

WSGIScriptAlias /alcs/ /home/candini/Repos/ALCS/SW/alcs-system/GUI-User-Interface/apache/django.wsgi
WSGIScriptAlias /jsonopenlayers/ /home/candini/Repos/CanetaRepo/tmp/STO/apache/django.wsgi

正如我在评论中提到的,命名主机是完全错误的方法。当你想从同一台机器上为几个不同的域名提供服务时,命名主机正是如此。因此,如果您想从同一个Apache服务foo.com和bar.com,您可以使用这个

您需要的是一些不同的、更简单的东西:只需在同一域中的不同子文件夹中为两个Django站点提供服务。只需两行代码即可完成此操作:

WSGIScriptAlias /alcs/ /home/candini/Repos/ALCS/SW/alcs-system/GUI-User-Interface/apache/django.wsgi
WSGIScriptAlias /jsonopenlayers/ /home/candini/Repos/CanetaRepo/tmp/STO/apache/django.wsgi

如果你想把你的网站放在
localhost/sitename
上,你为什么要在命名主机上乱搞呢?是的,我只是希望我的网站可以在和访问。那么如何实现这一点呢?如果你想让你的站点位于
localhost/sitename
,为什么你要在命名主机上胡闹?是的,我只是希望我的网站可以在和访问。那么如何做到这一点呢?