2011-12-12 87 views
1

我有兩個使用Django框架開發的網站,我試圖讓它們可以在同一臺機器上使用Apache2中的虛擬主機配置訪問。 我創建的/ etc/apache2的/網站可用/美聯冠軍賽一個服務器上的兩個站點:NameVirtualHost site2沒有虛擬主機

NameVirtualHost alcs:80 
<VirtualHost alcs:80> 
    ServerAdmin [email protected] 
    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> 

的/ etc/apache2的/網站可用/ jsonopenlayers

NameVirtualHost jsonopenlayers:80 
<VirtualHost jsonopenlayers:80> 
    ServerAdmin [email protected] 
    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> 

然後我做了以下:

echo "127.0.0.1 localhost.localdomain localhost jsonopenlayers alcs" >> /etc/hosts 
a2ensite alcs 
a2ensite jsonopenlayers 
/etc/init.d/apache2 reload 
/etc/init.d/apache2 restart 

但問題是,我得到:

[email protected]:~# /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站點正確到達http://localhost/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的/刪除美聯冠軍賽鏈接它的工作原理沒有問題的網站啓用/目錄。

我的配置錯了?

+0

如果你想讓你的網站在'localhost/sitename'上,你爲什麼要使用命名主機?這完全與它無關。 –

+0

是的,我只想讓我的網站在http:// localhost/alcs和http:// localhost/jsonopenlayers中可以訪問。那麼如何實現這一目標呢? – caneta

回答

1

正如我在評論中提到的,命名主機完全是錯誤的方式去做這件事。命名主機就是這樣 - 當你想從同一臺機器提供幾個不同的域名。所以如果你想從同一個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 
相關問題