2015-06-30 81 views
18

我一直在使用XAMPP很長一段時間,發現Laravel並發現後,我非常喜歡它,我也想使用Homestead。我遇到的問題是,我似乎無法運行多個站點。使用vagrant和家園爲多個網站和每個項目安裝

我已經嘗試了各種各樣的東西,但目前的主要問題是,當一個項目工作,而其他所有人都試圖訪問他們的網頁時出現連接超時。

這些都是我所使用的宅基地

  1. 安裝VirtualBox的
  2. vagrant box add laravel/homestead
  3. Clonging庫安裝流浪
  4. 添加宅基地步驟git clone https://github.com/laravel/homestead.git Homestead
  5. 創建Homestead.yaml文件在Homestead目錄中使用bash init.sh腳本
  6. 創建一個新項目laravel new projectA
  7. 要求宅基地composer require laravel/homestead
  8. 生成Vagrantfile php vendor/bin/homestead make
  9. 修改Homestead.yaml有與10
  10. 結束的IP創建另一個項目laravel new projectB
  11. 要求宅基地composer require laravel/homestead
  12. Generate Vagrantfile php vendor/bin/homestead make
  13. Modi FY的Homestead.yaml有與11
  14. 添加將這兩個網站的hosts文件sudo nano /etc/hosts =>xxx.xx.xx.10 projecta.app & xxx.xx.xx.11 projectb.app
  15. 從兩個目錄vagrant up

的一個開始顛沛流離的現在結束的IP,我遇到了問題,只有其中一個項目可以訪問。它始終是我呼叫vagrant up的地方。所以如果我從項目A撥打vagrant up我可以訪問http://projecta.apphttp://projectb.app超時。可悲的是,其他方式也是如此。

這是我vagrant global-status

id  name provider state directory       
------------------------------------------------------------------------ 
fc6fadb default virtualbox running /Users/mknb/work/projectA 

我想我只是做另一個vagrant upprojectB目錄,但並不當然工作。

我不想使用全球家園,因爲Laravel說,有可能安裝per project,那麼我該如何實現它?你需要更多信息?

我沒有修改Homestead.yaml除IP和域名homestead.app =>projecta.app

這似乎是一個全球性的安裝與宅基地相當容易,因爲我只想有更多的網站加入到家園。yaml,但正如我所說我想每個項目的安裝。任何人都可以幫忙嗎?

從Homestead目錄開始流浪漢當然不起作用。

+0

我對Homestead不太熟悉,但我確實有Vagrant在多個站點上運行ubuntu圖像。也許你應該將vhost配置添加到Homestead.yaml文件中。 (示例[here](http://stackoverflow.com/questions/25268411/laravel-homestead-vhost-configuration))。你如何通過localhost:someforwardedport(或許他們轉發到同一個端口?)或直接通過本地主機文件中的條目將IP地址連接到宅基地? (所以不是在你的流浪者實例) –

+0

我已經在網站中添加了條目,但Nginx尚未啓用,所以我必須手動啓用它。你可以給一個方法來自動啓用它只需在yaml文件中添加條目 – hhsadiq

回答

24

通過以您的方式使用Homestead,您可以爲每個項目創建一個虛擬機。因此,VirtualBox無法轉發虛擬機的全部的來自主機的HTTP請求。每次只能運行一臺機器(如此,一個項目)。

要與宅地運行多個項目,您可以根據以下步驟做:

  • 克隆家園git clone https://github.com/laravel/homestead.git Homestead
  • 裏面的Homestead文件夾,運行bash init.sh

編輯的~/.homestead/Homestead.yamlfolders財產分享你的兩個項目的代碼與VM:

folders: 
    - map: ~/pj1 
     to: /path/to/project1 
    - map: ~/pj2 
     to: /path/to/project2 

編輯的~/.homestead/Homestead.yamlsites屬性,以使Nginx的啓用這兩個網站的域名:

sites: 
    - map: project1.local 
     to: /home/vagrant/pj1/public 
    - map: project2.local 
     to: /home/vagrant/pj2/public 

編輯您的hosts文件,以在轉發這些域FO本地主機

127.0.0.1 project1.local 
127.0.0.1 project2.local 
  • 運行vagrant up文件夾,您在其中克隆了Homestead代碼(其中包含init.sh文件)。

現在,只需一臺Homestead虛擬機即可運行儘可能多的項目。

+0

嗨,jeyp,這就是我現在所做的。爲多個projetcs使用一個全球Homestead安裝。無論如何,我爲您付出了努力並接受了您的答案:p – Musterknabe

+0

我在網站中添加了條目,但Nginx尚未啓用,因此我必須手動啓用它。 – hhsadiq

+0

如何爲每個站點設置不同的端口? –

6

在接受的答案中有一些重要的步驟缺失,雖然它幫助了我很多。我已經添加了這些必要的步驟。謝謝@Hieu樂爲答案。

我假設您已按照Laravel docs的說明正確安裝了您的第一站點。現在你有另一個laravel站點,你想在流浪漢上轉移。按照以下步驟。

  1. cd進入您要添加的新Laravel項目的目錄。我假設你有所有的laravel文件,並使用MAMP或任何非流浪解決方案。
  2. 運行vagrant init laravel/homestead。這個命令將在這個新項目中添加必要的VagrantFile
  3. 打開您的第一個原始項目文件的目錄,並在編輯器中打開它的 Homestead.yaml文件。
  4. 現在按照@Hieu樂在接受的答案定義 步驟修改.yaml文件

    folders: 
        - map: ~/pj1 
         to: /path/to/project1 
        - map: ~/pj2 
         to: /path/to/project2 
    
    sites: 
        - map: project1.local 
         to: /home/vagrant/pj1/public 
        - map: project2.local 
         to: /home/vagrant/pj2/public 
    

    編輯您的主機文件轉發這些域FO本地主機

    127.0.0.1 project1.local 
    127.0.0.1 project2.local 
    
  5. 在終端cd到您的第一個原始原始項目 目錄。
  6. 運行命令vagrant reload --provision。這將重新加載 流浪者機器,以便我們在.yaml文件中所做的更改生效。原始項目的數據庫將保持不變。
  7. 運行vagrant ssh
  8. 運行ls並確保您可以看到新項目的文件夾。如果它有 您已正確配置您的新網站。
  9. 擊中加入http://新網站的URL和你是 完成。
+0

正確的路徑是/path/to/project1/......(有尾隨正斜槓) – hhsadiq

+0

「$ vagrant up --provision」是我投票的原因! –

1

怎麼樣here說,你可以使用這個composer require laravel/homestead --dev你有每個項目的根目錄下直接安裝家園到您的項目,需要它。現在通過make命令,您可以將VagrantfileHomestead.yaml文件生成到項目的根目錄中。

  • Mac/Linux中

    php vendor/bin/homestead make 
    
  • 的Windows:

    vendor\bin\homestead make 
    

在每個項目的根,你將有一個Homestead.yaml文件編輯:

  • 項目-A

    ip: "192.168.10.10" 
    ... 
    folders: 
        - map: "~/Code/projecta" 
         to: "/home/vagrant/projecta" 
    sites: 
        - map: project.a 
         to: "/home/vagrant/projecta/public" 
    
  • 項目-B

    ip: "192.168.10.10" 
    ... 
    folders: 
        - map: "~/Code/projectb" 
         to: "/home/vagrant/projectb" 
    sites: 
        - map: project.b 
         to: "/home/vagrant/projectb/public" 
    

一下添加到/etc/hosts

192.168.10.10 project.a 
    192.168.10.10 project.b 

然後,你必須cd到每個項目的根和vagrant up 。 現在,如果您從每個項目獲得vagrant ssh,那麼您將在您的VM環境中擁有該項目。

+0

好的,但這是否允許在當時運行兩個虛擬機? –

0

有一個捷徑命令來代理你想添加的網站..

,而不必弄亂了你的家園。YAML文件,並提供您的無業遊民箱一遍......

這適用於全局和每個工程安裝

只是確保如果要添加其他項目...

你加它的(整個項目)上的共享文件夾 宣佈在Homestead.yaml

假設你的共享文件夾 C:/Users/MYACCOUNT/Codes

添加anothe如果您使用HHVM 如果您使用該文件夾 laravel new homestead.app

然後

假設您正在SSH,即可在宅基地 類型 一個。)R項目nginx的

serve homestead.app /home/Vagrant/Code/homestead/public

灣) serve-hhvm homestead.app /home/Vagrant/Code/homestead/public 只需更改您的域名和路徑到您的項目的公共文件夾

然後編輯etc/hosts文件以管理員身份

什麼你在Homestead.yaml

定義過的IP地址一般默認是192.168.10.10

用它代替127.0.0.1

爲什麼?因爲如果你使用127.0.0.1您的網址看起來就像 homestead.app:8000

如果您在Homestead.yaml使用的IP地址

192.168.10.10 homestead.app

可以不用8000端口訪問您的網站 ,只是使用homestead.app

此解決方案比許多提供更好的...而且速度更快...

這是我做的

相關問題