Windows上使用Vagrant打造Laravel Homestead可協同跨平台開發環境

來源:互聯網
上載者:User

標籤:map   reg   表示   嵌入   日常   ons   其他   ora   狀態   

http://www.itkeyword.com/doc/3863994020922591518 1、簡介

Laravel 致力於讓整個 PHP 開發過程變得讓人愉悅,包括本地開發環境,為此官方為我們提供了一整套本地開發環境 —— Laravel Homestead。

Laravel Homestead 是一個打包好各種 Laravel 開發所需要的工具及環境的 Vagrant 盒子(Vagrant 提供了一個便捷的方式來管理和設定虛擬機器),該盒子為我們提供了優秀的開發環境,有了它,我們不再需要在本地環境安裝 PHP、HHVM、Web伺服器以及其它工具軟體,我們也完全不用再擔心誤操作搞亂作業系統 —— 因為 Vagrant 盒子是一次性的,如果出現錯誤,可以在數分鐘內銷毀並重新建立該 Vagrant 盒子!

Homestead可以運行在 Windows、Mac 以及 Linux 系統上,其中已經安裝好了Nginx、PHP7.0、MySQL、Postgres、Redis、Memcached、Node以及很多其它開發 Laravel 應用所需要的東西。

註:如果你使用的是Windows,需要開啟系統的硬體虛擬化(VT-x),這通常可以通過BIOS來開啟。

預裝軟體
  • Ubuntu 14.04
  • Git
  • PHP 7.0
  • HHVM
  • Xdebug
  • Nginx
  • MySQL
  • SQLite 3
  • Postgres
  • Composer
  • Node(With PM2, Bower, Grunt, and Gulp)
  • Redis
  • Memcached
  • Beanstalkd
  • Blackfire Profiler
環境準備
  1. Git
  2. PHP
  3. Laravel
  4. Composer
  5. Vagrant
  6. VirtualBox
安裝git

1.下載GitHub for Windows

https://windows.github.com/

安裝php

建議大家盡量安裝當前最新版本的 PHP

1.下載PHP

http://windows.php.net/download/

2.解壓目錄

我的路徑D:\php

3.添加環境變數

右鍵電腦->進階系統設定->環境變數->系統變數->PATH

C:\ProgramData\Oracle\Java\javapath;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\nodejs\;D:\php;C:\ProgramData\ComposerSetup\bin

4.設定php.ini

進入 PHP 安裝目錄(例如 D:\php)。找到 php.ini-development 檔案並複製一份到目前的目錄,重新命名為 php.ini,修改以下配置
去掉extension=php_mbstring.dll 前面的分號(888 行左右)
去掉extension=php_openssl.dll前面的分號(893 行左右)
去掉extension_dir = "ext"前面的分號(736 行左右)

5.使環境變數生效

重啟explorer.exe

安裝Laravel

1.下載Laravel

http://www.golaravel.com/download/

2.解壓目錄

我的路徑D:\laravel-v5.1.4

3.啟動Laravel

d: cd laravel-v5.1.4 D:\laravel-v5.1.4>php artisan serve Laravel development server started on http://localhost:8000/

在瀏覽器中訪問http://localhost:8000/

artisanserve 命令還支援兩個參數:

host 設定主機地址
port 設定 web server 監聽的連接埠號碼
例如:php artisan serve --port=8888

安裝Composer

1.下載Composer-Setup.exe

https://getcomposer.org/doc/00-intro.md#installation-windows

2.配置Composer

Loading composer repositories with package information Installing dependencies (including require-dev) SSL certificate problem, verify that the CA cert is OK. Details:  error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed”

如果安裝過程提示報錯為缺少CA認證,下載cacert.pem到自訂路徑
http://curl.haxx.se/docs/caextract.html

然後修改php.ini檔案(1983行左右)

openssl.cafile=D:\php\verify\cacert.pem

3.測試Composer

composer -V Composer version 1.0-dev (d79427f1a7b15e8f4d46ce8124a4d0c58ba1479c) 2016-01-27 13:01:22

windows安裝可參考

http://pkg.phpcomposer.com/

2、安裝 & 設定準備工作
  • VirtualBox 虛擬機器,基礎依賴
  • Vagrant 基於VirtualBox或vmware的虛擬化環境部署工具,可以將一個虛擬機器打包(簡稱vbox)給別人。
  • Homestead laravel官方vbox,Integration Environment以及一套特製的命令列工具。
  • xshell 這是一款windows下的ssh & shell工具,同類的有securecrt、putty等。

在使用 Homestead 之前,需要先安裝 Virtual Box/VMWare 和 Vagrant,所有這些軟體包都為常用作業系統提供了一個便於使用的可視化安裝器。

安裝完以後重啟一下,再開啟cmd

vagrant --version

Vagrant 1.8.1

 

下載 安裝 Homestead Vagrant 盒子

通過命令

VirtualBox/VMWare 和 Vagrant 安裝好了之後,在終端中使用能如下命令將 laravel/homesterad 添加到 Vagrant 中。下載該盒子將會花費一些時間,時間長短主要取決於你的網路連接速度:

vagrant box add laravel/homestead

如果上述命令執行失敗,可以使用 Vagrant 老版本的方式,這需要輸入完整的 URL:

vagrant box add laravel/homestead https://atlas.hashicorp.com/laravel/boxes/homestead

可以自動下載homestead的vbox,然而國內網路大家懂的,龜速。

建議自己有vps的同學,在vps上通過

wget -O homestead.box https://atlas.hashicorp.com/laravel/boxes/homestead/versions/0.4.1/providers/virtualbox.box

手動下載後,再從vps上將box下載到本地,或者可以試試用迅雷下載。總之,想辦法把這個box檔案下載下來,然後通過以下命令添加到vagrant

vagrant box add laravel/homestead file:///d:/homestead.box

通過 GitHub 安裝 Homestead命令列工具

你還可以通過簡單複製倉庫代碼來實現 Homestead 安裝。將倉庫複製到使用者目錄下的 Homestead 目錄,這樣 Homestead 盒子就可以會作為所有其他 Laravel 項目的主機:

cd ~git clone https://github.com/laravel/homestead.git Homestead

複製完成後,在 Homestead 目錄下運行 bash init.sh 命令來建立 Homestead.yaml 設定檔,Homestead.yaml 設定檔檔案位於 ~/.homestead 目錄:

bash init.sh
安裝依賴
composer install

在Homestead目錄執行

php homestead
Laravel Homestead version 3.0.1

 

配置 Homestead

設定 Provider

Homestead.yaml 檔案中的 provider 鍵表示使用哪個 Vagrant 提供者:virtualboxvmware_fushion 或者vmware_workstation,你可以將其設定為自己喜歡的提供者:

provider: virtualbox

配置共用資料夾

推薦:使用Vagrant在Windows平台搭建嵌入式Linux開發環境(2)Tftpd伺服器搭建

1、擷取root許可權        Ubuntu預設使用user使用者登入,而開發大部分情況下需要用到root許可權,使用命令切換使用者到超級許可權使用者root        sudo su   2、下載安裝

C:\Users\stone\.homestead\Homestead.yaml

Homestead.yaml 檔案中的 folders 屬性列出了所有主機和 Homestead 虛擬機器共用的檔案夾,一旦這些目錄中的檔案有了修改,將會在本地和 Homestead 虛擬機器之間保持同步,如果有需要的話,你可以配置多個共用資料夾(一般一個就夠了):

folders:    - map: d:/app      to: /home/vagrant/Code

如果要開啟 NFS,只需簡單添加一個標識到同步資料夾配置:

folders:    - map: ~/Code      to: /home/vagrant/Code      type: "nfs"

配置 Nginx 網站

對 Nginx 不熟?沒問題,通過 sites 屬性你可以方便地將“網域名稱”映射到 Homestead 虛擬機器的指定目錄,Homestead.yaml 中預設已經配置了一個樣本網站。和共用資料夾一樣,你可以配置多個網站:

sites:    - map: homestead.app      to: /home/vagrant/Code/Laravel/public

你還可以通過設定 hhvm 為 true 讓所有的 Homestead 網站使用 HHVM:

sites:    - map: homestead.app      to: /home/vagrant/Code/Laravel/public      hhvm: true

預設情況下,每個網站都可以通過 HTTP(連接埠號碼:8000)和 HTTPS(連接埠號碼:44300)進行訪問。

修改Hosts檔案|訪問網站

不要忘記把 Nginx 網站配置中的網域名稱添加到本地機器上的 hosts 檔案中,該檔案會將對本地區名的請求重新導向到 Homestead 虛擬機器,在 Mac 或 Linux上,該檔案位於 /etc/hosts,在 Windows 上,位於C:\Windows\System32\drivers\etc\hosts,添加方式如下:

網域名稱需要在本機綁定hosts:192.168.10.10 homestead.app

確保 IP 位址和你的 Homestead.yaml 檔案中列出的一致,一旦你將網域名稱放置到 hosts 檔案,就可以在瀏覽器中通過該網域名稱訪問網站了!

http://homestead.app
啟動 Vagrant Box

配置好 Homestead.yaml 檔案後,在 Homestead 目錄下運行 vagrant up 命令,Vagrant 將會啟動虛擬機器並自動設定共用資料夾以及 Nginx 網站。
銷毀該機器,可以使用 vagrant destroy –force

vagrant up Box ‘laravel/homestead‘ could not be found 問題解決辦法

Box ‘laravel/homestead‘ could not be found

收到在homestead目錄下建立metadata.json檔案,內容為
{
    "name": "laravel/homestead",
    "versions": [{
        "version": "0.4.1",
        "providers": [{
            "name": "virtualbox",
            "url": "file:///F:/VirtualBox/homestead.box"
        }]
    }]
}

Then run vagrant box add metadata.json

This will install the box with a version and can be confirmed by:

$ vagrant box list
laravel/homestead               (virtualbox, 0.4.0)

You will now be able to perform vagrant up using your local box.

Default login and password is just vagrant.

參考:

http://stackoverflow.com/questions/34946837/box-laravel-homestead-could-not-be-found

GuestAdditions versions on your host (5.0.14) and guest (5.0.6) do not match.問題解決辦法

 

This works for me in linux, I think this will solve the problem in windows as well.

 

Quick Solution for Failed to mount folders in Linux guest issue.

 

Add the following line to your Homestead/Vagrantfile:

config.vbguest.auto_update = false

Your d:\VirtualBox/Homestead/Homestead/Vagrantfile should looks like this:

/...Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|    # To avoid install and uninstall VBoxGuessAdditions during vagrant provisioning.    config.vbguest.auto_update = false.../

Save it and execute

$ vagrant destroy --force$ vagrant up

 

參考:

http://stackoverflow.com/questions/30175290/laravel-homestead-vagrant-vboxsf-not-available-issue

為指定項目安裝 Homestead

全域安裝 Homestead 將會使每個項目共用同一個 Homestead 盒子,你還可以為每個項目單獨安裝 Homestead,這樣就會在該項目下建立 Vagrantfile,允許其他人在該項目中執行 vagrant up 命令,在指定項目根目錄下使用 Composer 執行安裝命令如下:

composer require laravel/homestead --dev

這樣就在項目中安裝了 Homestead。Homestead 安裝完成後,使用 make 命令產生 Vagrantfile 和Homestead.yaml 檔案,make 命令將會自動設定 Homestead.yaml 中的 sites 和 folders 屬性。

Mac/Linux:

php vendor/bin/homestead make

Windows:

vendor\bin\homestead make

接下來,在終端中運行 vagrant up 命令然後在瀏覽器中通過 http://homestead.app 訪問網站。不要忘記在/etc/hosts 檔案中添加網域名稱 homestead.app

3、日常使用 全域訪問 Homestead

有時候你想要在檔案系統的任意位置運行 vagrant up 啟動 Homestead 虛擬機器,要實現這一目的需要將 Homestead 安裝目錄添加到系統路徑。這樣你就可以在系統的任意位置運行 homestead 或 homestead ssh 來啟動/登入虛擬機器。

通過 SSH 串連虛擬機器

你可以在 Homestead 目錄下通過運行 vagrant ssh 以 SSH 方式串連到虛擬機器

vagrant ssh

但是如果你需要以更平滑的方式串連到 Homestead,可以為主機添加一個別名來快速串連到 Homestead 盒子,建立完別名後,可以使用 vm 命令從任何地方以 SSH 方式串連到 Homestead 虛擬機器:

alias vm="ssh [email protected] -p 2222"
可以通過virtualbox開啟虛擬機器

使用者名稱和密碼: vagrant.

串連到資料庫

預設已經在 Homestead 虛擬機器中為 MySQL 和 Postgres 資料庫做好了配置,更方便的是,Laravel的 .env 還為串連 Homestead 資料庫做好了配置。

想要通過本地的 Navicat 或 Sequel Pro 串連到 Homestead 上的 MySQL 或 Postgres 資料庫,可以通過建立串連來實現,主機 IP 都是 127.0.0.1,對於 MySQL 而言,連接埠號碼是33060,對 Postgres 而言,連接埠號碼是54320,使用者名稱/密碼是 homestead/secret

注意:只有從本地串連 Homestead 的資料庫時才能使用這些非標準的連接埠,在 Homestead 虛擬機器中還是應該使用預設的 3306 和 5432 連接埠進行資料庫連接配置。

添加更多網站

Homestead 虛擬機器在運行時,可能需要添加額外 Laravel 應用到 Nginx 網站。如果是在單個 Homestead 環境中運行多個 Laravel 應用,添加網站很簡單,只需將網站添加到 Homestead.yaml 檔案,然後在 Homestead 目錄中運行vagrant provision 命令即可。

  1. Homestead 中新增一個domain的步驟是
  2. 在homestead.ymal 檔案裡面編輯好sites和folders這兩個項目
  3. 執行vagrant provision
配置 Cron 調度任務

Laravel 提供了很方便的方式來調度 Cron 任務:只需每分鐘調度運行一次 Artisan 命令 schedule:run 即可。schedule:run 會檢查定義在 App\Console\Kernel 類中定義的調度任務並判斷運行哪些任務。

如果想要為某個 Homestead 網站運行 schedule:run 命令,需要在定義網站時設定 schedule 為 true

sites:    - map: homestead.app      to: /home/vagrant/Code/Laravel/public      schedule: true

該網站的 Cron 任務會被定義在虛擬機器的 /etc/cron.d 目錄下。

連接埠轉寄配置

預設情況下,Homestead 連接埠轉寄配置如下:

  • SSH: 2222 → Forwards To 22
  • HTTP: 8000 → Forwards To 80
  • HTTPS: 44300 → Forwards To 443
  • MySQL: 33060 → Forwards To 3306
  • Postgres: 54320 → Forwards To 5432

轉寄更多連接埠

如果你想要為 Vagrant 盒子添加更多連接埠轉寄,做如下轉寄通訊協定設定即可:

ports:    - send: 93000      to: 9300    - send: 7777      to: 777      protocol: udp
4、使用 Blackfire Profiler 進行效能分析

SensioLabs 開發的 Blackfire Profiler 能自動收集代碼執行資料,比如記憶體、CPU 時間、硬碟 I/O 等,Homestead 使得在應用中使用該效能分析器變得輕而易舉。

Blackfire Profiler 需要的軟體包已經預先安裝到 Homestead 盒子,你只需要在 Homestead.yaml 檔案中設定 Blackfire Server ID 和 token:

blackfire:    - id: your-server-id      token: your-server-token      client-id: your-client-id      client-token: your-client-token

配置好 Blackfire 的憑證之後,在 Homestead 目錄下使用 vagrant provision 重新啟動 Homestead。在此之前,確保你已經查看過 Blackfire 文檔瞭解了如何在瀏覽器安裝相應的 Blackfire 擴充。

 

相關密碼

Ubuntu
使用者名稱:vagrant
密碼:vagrant

mysql密碼
homestead / secret
root / secret

虛擬機器操作


在不進入虛擬機器的情況下,還可以使用下面的命令對 虛擬機器進行管理:

vagrant up (啟動虛擬機器)
vagrant halt (關閉虛擬機器——對應就是關機)
vagrant suspend (暫停虛擬機器——只是暫停,虛擬機器記憶體等資訊將以狀態檔案的方式儲存在本地,可以執行恢複操作後繼續使用)
vagrant resume (恢複虛擬機器 —— 與前面的暫停相對應)
vagrant destroy (刪除虛擬機器,刪除後在當前虛擬機器所做進行的除開Vagrantfile中的配置都不會保留)

以上命令需在Homestead目錄下執行
參考:
http://stackoverflow.com/questions/26655516/how-to-install-manually-downloaded-box-for-vagrant
http://stackoverflow.com/questions/34946837/box-laravel-homestead-could-not-be-found
http://stackoverflow.com/questions/25981735/laravel-homestead-stuck-on-vm-login
http://os.51cto.com/art/201507/484834.htm
http://yaojinbu.com/post/2749.html
http://x-bird.qiubs.com/laravel-homestead-intro.html?utm_source=tuicool&utm_medium=referral
http://blog.csdn.net/small_rice_/article/details/45366299
http://blog.csdn.net/markely/article/details/49585887
http://www.ekan001.com/articles/40
http://www.tuicool.com/articles/rIVJRvm

Windows上使用Vagrant打造Laravel Homestead可協同跨平台開發環境

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.