我有运行Ubuntu的虚拟机。 我想input浏览器“ http:// localhost / mwiki ”,并看到我的MediaWiki网站。 我把这个网站放到/ var / www / mwiki文件夹中,我configuration了Apache的“默认”文件。 但是当我尝试在浏览器中打开这个网站 – 打开下面的网页:“在这个服务器上找不到请求的URL / mwiki / Apache / 2.2.11(Ubuntu)mod_python / 3.3.1 Python / 2.6.2服务器在localhost端口80“。
另外在这个服务器上运行另一个站点(ReviewBoard系统)。 它运行完美。 当我input“本地主机/评论”,我得到这个网站的索引页面。 我对configurationApache了解甚less。
请帮忙。
/etc/apache2/sites-available/default :
<VirtualHost *:80> ServerName localhost DocumentRoot "/var/www/mwiki" AddDefaultCharset UTF-8 <Location "/mwiki"> Order allow,deny Deny from all </Location> </VirtualHost> <VirtualHost *:80> ServerName localhost DocumentRoot "/var/www/reviews.mysite.com/htdocs" AddDefaultCharset UTF-8 # Error handlers ErrorDocument 500 /errordocs/500.html # Serve django pages <Location "/reviews/"> PythonPath "['/var/www/reviews.mysite.com/conf'] + sys.path" SetEnv DJANGO_SETTINGS_MODULE reviewboard.settings SetEnv PYTHON_EGG_CACHE "/var/www/reviews.mysite.com/tmp/egg_cache" SetEnv HOME "/var/www/reviews.mysite.com/data" SetHandler mod_python PythonHandler django.core.handlers.modpython PythonAutoReload Off PythonDebug Off # Used to run multiple mod_python sites in the same apache PythonInterpreter reviewboard_reviews_mysite_com </Location> <Location "/reviews/media"> SetHandler None </Location> # Serve static media without running it through mod_python # (overrides the above) <Location "/reviews/errordocs"> SetHandler None </Location> <Directory "/var/www/reviews.mysite.com/htdocs"> AllowOverride All </Directory> # Alias static media requests to filesystem Alias /reviews/media "/var/www/reviews.mysite.com/htdocs/media" Alias /reviews/errordocs "/var/www/reviews.mysite.com/htdocs/errordocs" </VirtualHost> <VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www <Directory /> Options FollowSymLinks AllowOverride None </Directory> <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all </Directory> 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 /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/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>
你对<VirtualHost >工作原理有一个误解。 当使用基于名称的虚拟主机(即相同的IP,多个主机名来区分它们)时,您需要具有唯一的ServerName 。
此外,您已将DocumentRoot设置为/var/www/mwiki ,这会导致http://localhost/显示您的wiki。 既然你只有一个ServerName( localhost ),我build议你添加一个Alias而不是虚拟主机。
<VirtualHost *:80> ServerName localhost DocumentRoot "/var/www/reviews.mysite.com/htdocs" AddDefaultCharset UTF-8 Alias /mywiki /var/www/mwiki # ...
虚拟主机只有在您有多个IP或主机名时才有用。 例子:
# Use ServerNames to distinct virtual hosts on 127.0.0.1 NameVirtualHost 127.0.0.1:80 <VirtualHost 127.0.0.1:80> ServerName site1.example.com DocumentRoot /var/www/site1.example.com </VirtualHost> <VirtualHost 127.0.0.1:80> ServerName site2.example.com DocumentRoot /var/www/site2.example.com </VirtualHost> <VirtualHost 127.0.0.2:80> ServerName meh.example.com DocumentRoot /var/www/meh.example.com </VirtualHost>
添加到/etc/hosts :
127.0.0.1 site1.example.com 127.0.0.1 site2.example.com # note: the next line is not included in the vhost config 127.0.0.1 invalid.example.com 127.0.0.2 meh.example.com
您现在可以使用{site1,site2,meh} .example.com域访问主机。 如果您打开127.0.0.1或invalid.example.com ,则会选取第一个虚拟主机( site1.example.com )。