2014-06-30 82 views
2

我的問題:流浪端口轉發80到8000 Laravel宅基地

我只能通過8000端口訪問我的網站,而不是80,這讓我覺得這是不是重定向80至8000,因爲它說,它應該。我想簡單地輸入local.kujif.com到我的瀏覽器,並加載該網站,我默認讀取的是80端口。我正在使用捲曲來檢查它,它會返回:

curl 'http://local.kujif.com' 
curl: (7) Failed connect to local.kujif.com:80; No error 

但是,如果我將:8000添加到網址然後它的工作;它返回我的index.php它只是打印 '測試':

curl 'http://local.kujif.com:8000' 
test 

我的詳細信息:

我使用Laravel莊園和流浪漢用的Oracle VM VirtualBox。

在Homestead.rb它有端口轉發。我還沒有修改它在所有:

config.vm.network "forwarded_port", guest: 80, host: 8000 
config.vm.network "forwarded_port", guest: 3306, host: 33060 
config.vm.network "forwarded_port", guest: 5432, host: 54320 

我也有安裝Microsoft IIS對我的工作的東西。當我需要流浪使用本地主機時,我顯然會停止該服務。

「無業遊民了」 顯示:

enter image description here

我Homestead.yaml文件:

--- 
ip: "192.168.10.10" 
memory: 2048 
cpus: 1 

authorize: /Users/Tyler/.ssh/id_rsa.pub 

keys: 
    - /Users/Tyler/.ssh/id_rsa 

folders: 
    - map: C:\DEV\Linux 
     to: /var/www/ 

sites: 
    - map: homestead.app 
     to: /home/vagrant/Code/Laravel/public 
    - map: local.kujif.com 
     to: /var/www/kujif 

variables: 
    - key: APP_ENV 
     value: local 

回答

8

您應該繼續使用高於1024的端口,因爲它們是非特權端口,但是如果您確實希望您可以在Homestead VM上作爲端口80運行,只要您沒有任何東西保持該端口在主機上。剛剛嘗試過它,它的工作,幾個陷阱。首先,你改變那條線。

config.vm.network 「forwarded_port」,嘉賓:從RB文件80,主持人:8000

config.vm.network 「forwarded_port」,嘉賓:80,主持人: 80

當你解僱你的虛擬機節省你會從遊民得到警告後了起來:

==> defaul t:您正嘗試轉發特權端口(端口< = 1024)。最

==>默認:操作系統限制這對只有特權過程(通常

==>默認:運行以管理用戶進程)。這是一個警告,以防

==>默認:端口轉發不起作用。如果發生任何問題,請嘗試

==>默認:端口高於1024

==>默認:轉發端口...

default: 80 => 80 (adapter 1) 

但它爲我工作。現在,實際得到的虛擬機,我不得不使用它的私有IP,而不是本地主機名:

http://192.168.10.10/ 

但果然我的網站在那裏,一切工作。如果您決定保留它,那麼您可以將該IP地址添加到您的主機文件中,以便爲其指定一個簡短的名稱。

希望這會有所幫助。

4

我不知道是什麼的困惑是 - 這是它應該工作的方式。

VM上的Web服務器偵聽端口80.Vagrant/VirtualBox將該端口從80(在VM上)轉發到8000(在本地主機上),以便您可以訪問該網站http://localhost:8000

虛擬機域名上的端口80不可用 - 該域名可能會解析爲localhost

請嘗試以下操作:dig local.kujif.com(或nslookup或甚至ping - 我不知道Windows上有什麼工具可用)查找該名稱解析爲哪個IP地址。你可能會發現它是127.0.0.1(本地主機)。

你可以嘗試使用宅基地的文件,而不是設置IP地址:http://192.168.10.10/ - 這威力的工作,但是這將取決於網絡是如何在虛擬機配置。

理想情況下,您需要將網絡設置爲在虛擬機中「橋接」 - 這將使虛擬機像網絡上的任何其他設備一樣(對您的網絡而言)。虛擬機中的其他網絡選項(對不起,我不熟悉VirtualBox中的選項)會使虛擬機與它自己的網絡無法在虛擬機之外訪問 - 這就是爲什麼端口轉發用於展示網絡服務的原因VM。

+0

嗯我下班後會試試這個東西,謝謝。我不應該只能將local.kujif.com輸入到瀏覽器中,並且它可以加載我的本地站點,而不必每次都添加:8000。 – Samir

+1

這取決於local.kujif.com解析到的IP地址。如果它是'127.0.0.1',那麼就像輸入'http:// localhost'一樣,這將需要端口8000. – Kryten

+0

是的,它解析爲127.0.0.1,它是如何在我的hosts文件中設置的。我檢查了我的虛擬機箱,並且有兩個不同IP的主機連接。我嘗試了ping IP,並且都工作,所以我嘗試更改我的hosts文件以解析local.kujif.com到每個IP,但都沒有工作。如果我能得到它使用這些VM IP之一,它會繞過8000的需要嗎? – Samir

6

我看到有一個被接受的答案,但是這個選擇也可能有助於某人。 如果我理解正確,你真的不喜歡端口「8000」!

您是否嘗試過設置專用網絡?

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| 
    /*other config stuff here */ 
    config.vm.network :private_network, ip: "192.168.33.22" 

這樣你就可以簡單地使用IP地址,或編輯主機文件映射本地域名到IP。

在流浪文檔看看:Vagrant Private Networks

順便說一句,因爲這是一個完全不同的IP範圍內運行,則應該不需要關閉您的IIS本地服務器。我有Apache在本地運行,同時也訪問虛擬機服務器。這可以讓你在需要的時候在你的本地使用像composer這樣的工具(拉入laravel)。

+0

這應該是被接受的答案。在主機文件中將域路徑映射到此配置的本地IP,使我可以訪問我家園框中託管的多個項目。 – jagzviruz