首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony --基于本地主机上基于名称的虚拟服务器--这可能吗?

问Symfony --基于本地主机上基于名称的虚拟服务器--这可能吗?
EN

Stack Overflow用户
提问于 2010-07-18 09:43:38
回答 2查看 3.2K关注 0票数 1

我很快就得出这样的结论:这是不可行的,尽管出于某种原因,人们--很可能是那些没有执行他们给出的‘建议’的人--似乎认为这是可能的。

这种情况非常简单。我正在我的本地开发机器上开发symfony网站,运行Ubuntu10.0.4LTS。我希望能够在本地运行和测试多个站点。

假设我有以下网站:

  • site1.localhost
  • site2.localhost
  • site3.localhost

在文档这里、这里和这里 (这些文档对我都不起作用)之后,我做了以下工作:

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)如下所示:

代码语言:javascript
复制
<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时,会收到以下警告:

  • 重新加载web服务器配置apache2 Sun 18 10:32:23 2010 NameVirtualHost localhost:80没有VirtualHosts

(二)。当我导航到http://site1.localhost时,会在FF中得到以下错误消息:

糟了!这个链接似乎被打破了。

(三)。我的apache相关错误出现在/var/log/apachche2/其他_vosts.log中。

代码语言:javascript
复制
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"

我的问题是:

  1. 可以设置Apache来处理本地主机上的多个虚拟主机吗?毕竟,到目前为止,我看到的所有示例都涉及到使用面向公共的ip地址来设置Apache。
  2. 如果Apache确实可以处理localhost上的多个站点,那么上面的步骤中有哪些是我做的不正确的?AFAICT,我一直在跟踪这封信的文件。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-18 09:49:42

是的,您可以在本地计算机上使用几个VirtualHosts --它与在远程服务器上工作时完全相同,只是IP地址和域名不一样。

我通常做的是:

编辑主机文件

若要添加从本地计算机上提供的新域名,请执行以下操作。

例如,我要补充如下:

代码语言:javascript
复制
127.0.0.1       tests
127.0.0.1       blog

依此类推,我想要的域名只有一行。

向Apache的配置中添加新的VirtualHosts

然后,我将新的VirtualHosts添加到Apache的配置中。

第一个站点:测试

例如,对于我的tests域名,我将使用:

代码语言:javascript
复制
<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:

代码语言:javascript
复制
<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指令:

代码语言:javascript
复制
NameVirtualHost *:80
Listen 80

我所做的唯一重要的修改就是启用一些模块,比如重写,过期,.但这与您的VirtualHosts问题没有多大关系;-)

结果?

如果打开浏览器并转到http://tests/,我就会从tests域得到我所期望的东西--这里是目录和文件的列表。

如果打开浏览器并转到http://blog/,就会得到博客的开发实例--以及错误页面,说明我忘记设置数据库^^。

票数 11
EN

Stack Overflow用户

发布于 2010-07-18 09:49:58

您是否创建了一个链接,从/etc/apache2/sites available/site 1到/etc/apache2/sites启用/site 1?

我使用的是nginx而不是apache,但是ubuntu有标准化的配置方式。通常,站点可用包括apache不包括的所有配置。它只查找在启用站点目录中链接的配置。

我也不认为你需要启用一个网站一次。一切都应该起作用。都有不同的域名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3275029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档