Windows上使用Vagrant打造Laravel Homestead可协同跨平台开发环境

系统 Windows 系统运维
本文通过Vagrant搭建一套类似Laravel Homestead完整开发环境,这样极大的减少了架设开发环境的时间,同时还支持在Windows/Mac/Linux不同平台上分享定制包,统一团队之间的开发环境提高工作效率,而Docker的出现也让未来更值得期待。
文章目录

1. 前言

2. 更新历史

3. 环境准备

4. 安装git

5. 安装php

6. 安装Laravel

7. 安装Composer

8. 安装Vagrant

9. 安装VirtualBox

10. Vagrant配置

10.1. 启动Vagrant

10.2. 导出box

10.3. 其它命令

11. Laravel Homestead

[[141307]]

前言

大家对VMware或者VirtualBox一定不会陌生,虚拟化的好处自然深入人心,而现在我们可以通过Vagrant搭建一套类似Laravel Homestead完整开发环境,这样极大的减少了架设开发环境的时间,同时还支持在Windows/Mac/Linux不同平台上分享定制包,统一团队之间的开发环境提高工作效率,而Docker的出现也让未来更值得期待。

用Vagrant为自己打造一个奇妙的跨平台开发环境

更新历史

扩展阅读

Vagrant - https://www.vagrantup.com/
Laravel Homestead - http://laravel.com/docs/5.1/homestead
在windows下进行linux开发:利用Vagrant+virtualbox - http://blog.star7th.com/2015/06/1538.html
在 Mac/win7 下上使用 Vagrant 打造本地开发环境 - http://segmentfault.com/a/1190000002645737

环境准备

  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

#p#

安装Laravel

1.下载Laravel

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

2.解压目录

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

3.启动Laravel

  1. d: 
  2. cd laravel-v5.1.4 
  3. D:\laravel-v5.1.4>php artisan serve 
  4. 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

  1. Loading composer repositories with package information 
  2. Installing dependencies (including require-dev) 
  3. SSL certificate problem, verify that the CA cert is OK. Details:  
  4. 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

  1. composer -V 
  2.  
  3. Composer version 1.0-dev (d79427f1a7b15e8f4d46ce8124a4d0c58ba1479c) 2015-07-04 11:22:58 

安装Vagrant

1.下载Vagrant

https://www.vagrantup.com/downloads.html

2.离线下载虚拟镜像

https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.0.0/centos-6.6-x86_64.box

上面给出的是centos-6.6镜像下载链接,要下载其他镜像请访问官网
http://www.vagrantbox.es/

安装VirtualBox

BIOS里面开启CPU硬件虚拟化支持VT(Virtualization Technology)

1.下载VirtualBox

https://www.virtualbox.org/wiki/Downloads

2.导入镜像

设置VirtualBox目录并拷贝镜像centos-6.6-x86_64.box
E:\VirtualBox\centos-6.6-x86_64.box

3.命令初始化Vagrant

  1. #切换VirtualBox目录 
  2. e: 
  3. cd .\VirtualBox 
  4.  
  5. #输入命令初始化 
  6. E:\VirtualBox> vagrant init centos6.6 
  7. A `Vagrantfile` has been placed in this directory. You are now 
  8. ready to `vagrant up` your first virtual environment! Please read 
  9. the comments in the Vagrantfile as well as documentation on 
  10. `vagrantup.com` for more information on using Vagrant. 
  11.  
  12. #执行添加命令 
  13. E:\VirtualBox> vagrant box add centos6.6 centos-6.6-x86_64.box 
  14. ==> box: Adding box 'centos6.6' (v0) for provider: 
  15.     box: Downloading: file://E:/VirtualBox/centos-6.6-x86_64.box 
  16.     box: Progress: 100% (Rate: 670M/s, Estimated time remaining: --:--:--) 
  17. ==> box: Successfully added box 'centos6.6' (v0) for 'virtualbox'
  18.  
  19. #检查是否导入成功 
  20. E:\VirtualBox> vagrant box list 
  21. centos6.6 (virtualbox, 0) 

#p#

Vagrant配置

详细配置文档可以参考官方手册 - https://docs.vagrantup.com/v2/

启动Vagrant

通过Shell进入目录E:\VirtualBox后执行命令

  1. vagrant up 

顺利启动的完整过程如下所示:

  1. E:\VirtualBox>vagrant up 
  2. Bringing machine 'default' up with 'virtualbox' provider... 
  3. ==> default: Importing base box 'centos6.6'... 
  4. ==> default: Matching MAC address for NAT networking... 
  5. ==> default: Setting the name of the VM: VirtualBox_default_1437213832296_68434 
  6. ==> default: Clearing any previously set forwarded ports... 
  7. ==> default: Clearing any previously set network interfaces... 
  8. ==> default: Preparing network interfaces based on configuration... 
  9.     default: Adapter 1: nat 
  10. ==> default: Forwarding ports... 
  11.     default: 22 => 2222 (adapter 1) 
  12. ==> default: Booting VM... 
  13. ==> default: Waiting for machine to boot. This may take a few minutes... 
  14.     default: SSH address: 127.0.0.1:2222 
  15.     default: SSH username: vagrant 
  16.     default: SSH auth method: private key 
  17.     default: Warning: Connection timeout. Retrying... 
  18.     default
  19.     default: Vagrant insecure key detected. Vagrant will automatically replace 
  20.     default: this with a newly generated keypair for better security. 
  21.     default
  22.     default: Inserting generated public key within guest... 
  23.     default: Removing insecure key from the guest if it's present... 
  24.     defaultKey inserted! Disconnecting and reconnecting using new SSH key... 
  25. ==> default: Machine booted and ready! 
  26. ==> default: Checking for guest additions in VM... 
  27.     default: The guest additions on this VM do not match the installed version of 
  28.     default: VirtualBox! In most cases this is fine, but in rare cases it can 
  29.     default: prevent things such as shared folders from working properly. If you see 
  30.     default: shared folder errors, please make sure the guest additions within the 
  31.     default: virtual machine match the version of VirtualBox you have installed on 
  32.     default: your host and reload your VM. 
  33.     default
  34.     default: Guest Additions Version: 4.3.28 
  35.     default: VirtualBox Version: 5.0 
  36. ==> default: Mounting shared folders... 
  37.     default: /vagrant => E:/VirtualBox 

虚拟机启动之后则可以通过 vagrant ssh 联入虚拟机进行进一步的环境配置,或者软件安装相关的工作,在Windows系统下,并不能直接通过vagrant ssh连到虚拟机,需要使用SecureCRT/Putty/Xshell等第三方工具进行连接。连接地址127.0.0.1,端口2222。登录的帐号root的密码为vagrant

  1. E:\VirtualBox> vagrant up 
  2. Bringing machine 'default' up with 'virtualbox' provider... 
  3. ==> default: Clearing any previously set forwarded ports... 
  4. ==> default: Clearing any previously set network interfaces... 
  5. ==> default: Preparing network interfaces based on configuration... 
  6.     default: Adapter 1: nat 
  7.     default: Adapter 2: bridged 
  8. ==> default: Forwarding ports... 
  9.     default: 80 => 8080 (adapter 1) 
  10.     default: 22 => 2222 (adapter 1) 
  11. ==> default: Booting VM... 
  12. ==> default: Waiting for machine to boot. This may take a few minutes... 
  13. The guest machine entered an invalid state while waiting for it 
  14. to boot. Valid states are 'starting, running'. The machine is in the 
  15. 'poweroff' state. Please verify everything is configured 
  16. properly and try again. 
  17.  
  18. If the provider you're using has a GUI that comes with it, 
  19. it is often helpful to open that and watch the machine, since the 
  20. GUI often has more helpful error messages than Vagrant can retrieve. 
  21. For example, if you're using VirtualBox, run `vagrant up` while the 
  22. VirtualBox GUI is open

如果有报上述错误,并且运行Virtualbox去安装系统时出错:Failed to open a session for the virtual machine,Unable to load R3 module C:\Program Files\Oracle\VirtualBox/VBoxDD.DLL (VBoxDD): GetLastError=1790 (VERR_UNRESOLVED_ERROR).,需要使用UniversalThemePatcher还原未破解的themeservice.dll themeui.dll uxtheme.dll文件

已经打包好的下载链接 - http://pan.baidu.com/s/1c0HGj2g

  1. ==> default: Booting VM... 
  2. ==> default: Waiting for machine to boot. This may take a few minutes... 
  3.     default: SSH address: 127.0.0.1:2222 
  4.     default: SSH username: vagrant 
  5.     default: SSH auth method: private key 
  6.     default: Warning: Connection timeout. Retrying... 
  7.     default: Warning: Connection timeout. Retrying... 
  8.     default: Warning: Connection timeout. Retrying... 

如果报default: Warning: Connection timeout. Retrying...,建议打编辑Vagrantfile打开VirtualBox图形化界面vb.gui = true进一步分析错误代码和原因。

导出box

通过Shell进入目录E:\VirtualBox后执行命令

  1. vagrant package 
  2.  
  3. vagrant package --output NAME --vagrantfile FILE 
  4.  
  5. #可选参数: 
  6. --output NAME : (可选)设置通过NAME来指定输出的文件名 
  7. --vagrantfile FILE:(可选)可以将Vagrantfile直接封进box中 

完成后会在当前目录就会生成package.box,可以在家或者团队成员共享开发环境保持一致性

其它命令

vagrant up (启动虚拟机)
vagrant halt (关闭虚拟机——对应就是关机)
vagrant suspend (暂停虚拟机——只是暂停,虚拟机内存等信息将以状态文件的方式保存在本地,可以执行恢复操作后继续使用)
vagrant resume (恢复虚拟机 —— 与前面的暂停相对应)
vagrant box remove centos6.6 (移除box,其中centos6.6是box名)
vagrant destroy (删除虚拟机,删除后在当前虚拟机所做进行的除开Vagrantfile中的配置都不会保留)

#p#

Laravel Homestead

细节部分可参考官方文档 - http://laravel.com/docs/5.1/homestead

1.下载安装包

  1. vagrant box add laravel/homestead 
  2.  
  3. E:\Homestead>vagrant box add laravel/homestead 
  4. ==> box: Loading metadata for box 'laravel/homestead' 
  5.     box: URL: https://atlas.hashicorp.com/laravel/homestead 
  6. This box can work with multiple providers! The providers that it 
  7. can work with are listed below. Please review the list and choose 
  8. the provider you will be working with
  9.  
  10. 1) virtualbox 
  11. 2) vmware_desktop 
  12.  
  13. Enter your choice: 1 
  14. ==> box: Adding box 'laravel/homestead' (v0.2.7) for provider: virtualbox 
  15.     box: Downloading: https://vagrantcloud.com/laravel/boxes/homestead/versions/0.2.7/providers/virtualbox.box 
  16.     box: Progress: 0% (Rate: 9d/s, Estimated time remaining: 0:05:30)11)) 

由于国内网络环境问题建议离线下载后手动导入

  1. #输入命令初始化 
  2. E:\Homestead>vagrant init laravel 
  3. A `Vagrantfile` has been placed in this directory. You are now 
  4. ready to `vagrant up` your first virtual environment! Please read 
  5. the comments in the Vagrantfile as well as documentation on 
  6. `vagrantup.com` for more information on using Vagrant. 
  7.  
  8. #执行添加命令 
  9. E:\Homestead>vagrant box add laravel laravel.box 
  10. ==> box: Box file was not detected as metadata. Adding it directly... 
  11. ==> box: Adding box 'laravel' (v0) for provider: 
  12.     box: Unpacking necessary files from: file://E:/Homestead/laravel.box 
  13.     box: Progress: 100% (Rate: 141M/s, Estimated time remaining: --:--:--) 
  14. ==> box: Successfully added box 'laravel' (v0) for 'virtualbox'
  15.  
  16. #检查是否导入成功 
  17. E:\Homestead>vagrant box list 
  18. centos6.6 (virtualbox, 0) 
  19. laravel   (virtualbox, 0) 
  20.  
  21. #启动Lavarel Homestead 
  22. E:\Homestead>vagrant up 
  23. Bringing machine 'default' up with 'virtualbox' provider... 
  24. ==> default: Importing base box 'laravel'... 
  25. ==> default: Matching MAC address for NAT networking... 
  26. ==> default: Setting the name of the VM: Homestead_default_1437217549272_56101 
  27. ==> default: Clearing any previously set network interfaces... 
  28. ==> default: Preparing network interfaces based on configuration... 
  29.     default: Adapter 1: nat 
  30. ==> default: Forwarding ports... 
  31.     default: 22 => 2222 (adapter 1) 
  32. ==> default: Booting VM... 
  33. ==> default: Waiting for machine to boot. This may take a few minutes... 
  34.     default: SSH address: 127.0.0.1:2222 
  35.     default: SSH username: vagrant 
  36.     default: SSH auth method: private key 
  37.     default: Warning: Connection timeout. Retrying... 
  38.     default
  39.     default: Vagrant insecure key detected. Vagrant will automatically replace 
  40.     default: this with a newly generated keypair for better security. 
  41.     default
  42.     default: Inserting generated public key within guest... 
  43.     default: Removing insecure key from the guest if it's present... 
  44.     defaultKey inserted! Disconnecting and reconnecting using new SSH key... 
  45. ==> default: Machine booted and ready! 
  46. ==> default: Checking for guest additions in VM... 
  47.     default: The guest additions on this VM do not match the installed version of 
  48.     default: VirtualBox! In most cases this is fine, but in rare cases it can 
  49.     default: prevent things such as shared folders from working properly. If you see 
  50.     default: shared folder errors, please make sure the guest additions within the 
  51.     default: virtual machine match the version of VirtualBox you have installed on 
  52.     default: your host and reload your VM. 
  53.     default
  54.     default: Guest Additions Version: 4.3.14 
  55.     default: VirtualBox Version: 5.0 
  56. ==> default: Mounting shared folders... 
  57.     default: /vagrant => E:/Homestead 

登录帐户vagrant/vagrant,开始全新的Laravel Homestead体验之旅吧!

 

责任编辑:火凤凰 来源: HelloDog博客
相关推荐

2019-11-18 14:00:40

开发工具环境搭建vagrant

2018-02-07 11:15:07

Vagrant使用问题

2018-03-02 16:30:30

2013-12-10 09:39:01

Windows平台Linux开发

2013-12-10 09:00:51

WindowsLinux开发环境

2024-02-27 18:59:55

ReactRSDWeb

2020-10-26 09:00:00

LinuxVagrant操作系统

2009-10-09 09:37:46

2023-08-29 09:16:53

ElectronForge

2024-03-12 00:05:00

开发编程语言IDE

2018-03-21 14:23:39

vagrant测试环境

2021-06-29 07:14:19

NEXTCLOUDONLYOFFICE协同编辑平台

2009-06-01 15:56:48

eclipse sdkeclipse

2021-03-23 09:52:39

鸿蒙HarmonyOS应用开发

2019-07-25 15:24:20

2013-02-18 10:40:55

2015-03-30 16:00:21

Windows应用少开发工具

2015-01-14 09:41:28

跨平台移动应用Linux开发

2012-05-22 21:56:49

Android

2014-05-26 15:17:10

CrossApp开源跨平台开发引擎
点赞
收藏

51CTO技术栈公众号