Apache-2.2

在一個實例上執行 2 個 LAMP 堆棧

  • August 15, 2011

我使用標準埠安裝了 apache 和 mysql,並且我的主機文件將域指向 127.0.0.1。

我正在將我的 LAMP 堆棧切換到 Zend Server,但希望我的舊設置同時工作。

我嘗試將舊的 apache 埠切換到 8080,並為舊的 mysql 切換一個不同的埠。這似乎工作正常(apache 正在工作,mysql 正在偵聽新埠,但我沒有嘗試過數據庫連接)。

但是我的問題是我無法將域映射到本地主機上的 8080,因為主機文件不處理埠,只是 IP 地址。

我應該提到我在 Windows 機器上。

有什麼想法可以解決這個問題,以便我可以使用主機文件將域映射到 2 個不同的 LAMP 堆棧?

編輯

關於主機文件和虛擬主機 - 當我轉到 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 時,我得到“找不到伺服器”,所以我認為虛擬主機不起作用。

雖然主機不會映射埠,但您應該能夠使用它們的埠和主機名訪問這兩個實例,即http://site1:8080/>、<http://site2:80/。或者,如果您確實需要在一個埠上同時訪問兩者,請將新堆棧移動到 8081 之類的埠,並設置 NGINX、HAProxy、Squid 甚至另一個 Apache 實例來從一個埠代理站點。

在我的主機文件中,我有

127.0.0.1     example.dev:8080

hosts 文件無法理解該埠。別再嘗試了。

在我的虛擬主機中(我的舊 apache 實例上的 httpd-vhosts.conf,而不是我的 Zend 實例)我有

NameVirtualHost *:8080

&lt;VirtualHost *:8080&gt;
    DocumentRoot "C:/xampp/htdocs"
&lt;/VirtualHost&gt;

&lt;VirtualHost *:8080&gt;
    DocumentRoot "C:\xampp\htdocs\example.dev"
    ServerName example.dev
&lt;/VirtualHost&gt;

VirtualHost 意味著您可以在一個 IP 地址上執行多個網站。因此,將埠更改為 80,為 DocumentRoot 指定一個 ServerName,C:/xampp/htdocs然後重試。

引用自:https://serverfault.com/questions/301153