在一個實例上執行 2 個 LAMP 堆棧
我使用標準埠安裝了 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 <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
然後重試。