我有一个使用标准端口的 apache 和 mysql 的工作安装,并且我的主机文件将域指向 127.0.0.1。
我正在将我的 LAMP 堆栈切换到 Zend Server,但希望我的旧设置同时运行。
我尝试将旧的 apache 端口切换到 8080,并将旧的 mysql 切换到另一个端口。这似乎工作正常(apache 正在运行,mysql 正在监听新端口,但我还没有尝试数据库连接)。
但是我的问题是我无法将域映射到本地主机上的 8080,因为主机文件不处理端口,只处理 IP 地址。
我应该提到我在一台 Windows 机器上。
有什么想法可以解决这个问题,以便我可以使用 hosts 文件将域映射到 2 个不同的 LAMP 堆栈?
编辑
关于 hosts 文件和虚拟主机 - 当我转到 localhost 时,我的新 Zend apache 正在运行,当我转到 localhost:8080 时,我得到的是旧的 apache 文档根目录。这是预期的。
但是我无法让主机文件和虚拟主机在 :8080 上运行。在我的主机文件中,我有
127.0.0.1 example.dev:8080
在我的虚拟主机(我的旧 apache 实例上的 httpd-vhosts.conf,而不是我的 Zend 实例)中,我有
NameVirtualHost *:8080
<VirtualHost *:8080>
DocumentRoot "C:/xampp/htdocs"
</VirtualHost>
<VirtualHost *:8080>
DocumentRoot "C:\xampp\htdocs\example.dev"
ServerName example.dev
</VirtualHost>
现在,当我在浏览器中尝试 example.dev 时,出现“未找到服务器”的提示,所以我认为虚拟主机没有工作。
答案1
虽然主机不会映射端口,但您应该能够使用它们的端口和主机名访问这两个实例,IEhttp://site1:8080/,http://site2:80/或者,如果您确实需要通过单个端口访问两者,请将新堆栈移动到 8081 之类的端口,并设置 NGINX、HAProxy、Squid 甚至另一个 Apache 实例来从一个端口代理站点。
答案2
在我的主机文件中我有
127.0.0.1 example.dev:8080
hosts 文件无法识别该端口。停止尝试。
在我的虚拟主机(我的旧 apache 实例上的 httpd-vhosts.conf,而不是我的 Zend 实例)中,我有
NameVirtualHost *:8080 <VirtualHost *:8080> DocumentRoot "C:/xampp/htdocs" </VirtualHost> <VirtualHost *:8080> DocumentRoot "C:\xampp\htdocs\example.dev" ServerName example.dev </VirtualHost>
VirtualHost 意味着您可以在一个 IP 地址上运行多个网站。因此,将端口更改为 80,为 DocumentRoot 指定一个 ServerName C:/xampp/htdocs
,然后重试。