
[英]Serving two Django sites with WSGI results in internal server error for only one of the sites
[英]Two sites on one server: NameVirtualHost site2 has no VirtualHosts
我有两个使用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>
和/ etc / apache2 / sites-available / jsonopenlayers :
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>
然后,我做了以下事情:
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
但是问题是我得到了:
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
只能通过http:// localhost / alcs正确访问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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.