我很快就得出这样的结论:这是不可行的,尽管出于某种原因,人们--很可能是那些没有执行他们给出的‘建议’的人--似乎认为这是可能的。
这种情况非常简单。我正在我的本地开发机器上开发symfony网站,运行Ubuntu10.0.4LTS。我希望能够在本地运行和测试多个站点。
假设我有以下网站:
在文档这里、这里和这里 (这些文档对我都不起作用)之后,我做了以下工作:
A.我修改了我的/etc/文件,第一个条目是:
127.0.0.1位点1. localhost站点2.localhost hpdtp-ubuntu910 localhost php.localhost
B. i修改了我的/etc/apache2/ports.conf文件(第一行)如下:
NameVirtualHost本地主机: 80听80
C.我为每个网站(site1.localhost和site2.localhost)创建了配置站点。每个配置都是/etc/apache2/site中的一个单独的文件-可用
/etc/apache2/site1中的这样一个配置文件(针对site1.localhost)如下所示:
<VirtualHost localhost:80>
ServerName site1.localhost
DocumentRoot "/home/morpheous/work/webdev/frameworks/symfony/sites/site1/web"
DirectoryIndex index.php
<Directory "/home/morpheous/work/webdev/frameworks/symfony/sites/site1/web">
AllowOverride All
Allow from All
</Directory>
Alias /sf /lib/vendor/symfony/symfony-1.3.6/data/web/sf
<Directory "/lib/vendor/symfony/symfony-1.3.6/data/web/sf">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>D.我已经通过使用禁用了默认的站点(它继续显示)
E.由于无法启用我启用的所有站点(比如上面的文档链接),所以我决定一次启用一个站点,这样就不会对运行哪个站点感到困惑。当我需要运行另一个站点时,我会禁用当前的站点并启用我想要的站点。这是(显然?)远不是理想的--但即使这个设置也不起作用--原因如下。
i)。重新启动Apache时,会收到以下警告:
(二)。当我导航到http://site1.localhost时,会在FF中得到以下错误消息:
糟了!这个链接似乎被打破了。
(三)。我的apache相关错误出现在/var/log/apachche2/其他_vosts.log中。
morpheous@hpdtp-ubuntu910:~$ tail /var/log/apache2/other_vhosts_access.log
site1.localhost:80 127.0.0.1 - - [18/Jul/2010:10:08:38 +0100] "GET / HTTP/1.1" 404 506 "-" "Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6 GTB7.1"
site1.localhost:80 127.0.0.1 - - [18/Jul/2010:10:09:30 +0100] "GET / HTTP/1.1" 404 506 "-" "Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6 GTB7.1"
site1.localhost:80 127.0.0.1 - - [18/Jul/2010:10:09:31 +0100] "GET /favicon.ico HTTP/1.1" 404 505 "-" "Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6 GTB7.1"
site1.localhost:80 127.0.0.1 - - [18/Jul/2010:10:09:36 +0100] "GET /favicon.ico HTTP/1.1" 404 505 "-" "Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:1.9.2.6) Gecko/20100628 Ubuntu/10.04 (lucid) Firefox/3.6.6 GTB7.1"我的问题是:
发布于 2010-07-18 09:49:42
是的,您可以在本地计算机上使用几个VirtualHosts --它与在远程服务器上工作时完全相同,只是IP地址和域名不一样。
我通常做的是:
编辑主机文件
若要添加从本地计算机上提供的新域名,请执行以下操作。
例如,我要补充如下:
127.0.0.1 tests
127.0.0.1 blog依此类推,我想要的域名只有一行。
向Apache的配置中添加新的VirtualHosts
然后,我将新的VirtualHosts添加到Apache的配置中。
第一个站点:测试
例如,对于我的tests域名,我将使用:
<VirtualHost *:80>
ServerName tests
DocumentRoot /home/squale/developpement/tests
<Directory /home/squale/developpement/tests>
AllowOverride All
Options Indexes FollowSymLinks MultiViews
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
</VirtualHost>这里有几件事要注意:
VirtualHost在*:80 上
ServerName指令进行。当然,您需要确保Apache看到了这个VirtualHost --或者将它的配置放在一个加载的文件中(不推荐),或者通过:
/etc/apache2/sites-available/中的新文件中a2ensite启用站点/etc/apache2/sites-enabled/中创建一个符号链接,指向您的新配置文件。
第二个网站:博客
在这里,我为第二个域名使用的配置,对应于blog:
<VirtualHost *:80>
ServerName blog
DocumentRoot /home/squale/developpement/blog.pascal-martin.fr/www
<Directory /home/squale/developpement/blog.pascal-martin.fr/www>
AllowOverride All
Options Indexes FollowSymLinks MultiViews
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
</VirtualHost>基本上是一样的,只有两个不同之处:
ServerName指令与我的第二个域名(当然是名称)相对应。DocumentRoot是不一样的其他文件?
我并没有将其他任何东西更改为Apache的默认配置(如果这重要的话,我在Ubuntu上)。
例如,我不会更改ports.conf文件中的任何内容:我仍然拥有默认的NameVirtualHost和Listen指令:
NameVirtualHost *:80
Listen 80我所做的唯一重要的修改就是启用一些模块,比如重写,过期,.但这与您的VirtualHosts问题没有多大关系;-)
结果?
如果打开浏览器并转到http://tests/,我就会从tests域得到我所期望的东西--这里是目录和文件的列表。
如果打开浏览器并转到http://blog/,就会得到博客的开发实例--以及错误页面,说明我忘记设置数据库^^。
发布于 2010-07-18 09:49:58
您是否创建了一个链接,从/etc/apache2/sites available/site 1到/etc/apache2/sites启用/site 1?
我使用的是nginx而不是apache,但是ubuntu有标准化的配置方式。通常,站点可用包括apache不包括的所有配置。它只查找在启用站点目录中链接的配置。
我也不认为你需要启用一个网站一次。一切都应该起作用。都有不同的域名。
https://stackoverflow.com/questions/3275029
复制相似问题