说在前面的话:
当初搭建Homestead踩了无数的坑,现在把它记录下来,希望能给下一个入坑的筒靴一点点帮助


  1. 安装virtualbox(5.0.20)、vagrant(1.8.1)和git。一般选择最新版本的软件即可

  2. 添加homestead镜像。如果你直接运行官方的命令vagrant box add laravel/homestead,在国内由于大家都懂的原因注定是失败的,所以建议大家直接在网上搜索laravel/homestead镜像并下载到本地(使用上面的命令后,选择virtualbox后,会有相应的下周地址,复制到迅雷下载,速度非常快),最后使用git bash运行命令vagrant box add laravel/homestead E:\virtualbox.box (这里的路径只是演示,路径最好不要有中文)

  3. 克隆homestead配置文件。在git bash根目录下git clone https://github.com/laravel/homestead.git Homestead

  4. 生成Homestead.yaml文件。切换至Homestead目录cd Homestead,运行命令bash init.sh生成Homestead.yaml文件,文件位于根目录.homestead下,内容如下(基本不用修改即可用):

ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/Code
      to: /home/vagrant/Code

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

databases:
    - homestead

5. 修改homestead.rb文件。如果这时候你直接在Homestead目录下启动homestead虚拟机,肯定会得到反复叫你下载virtualbox的提示,猜测这是由于手动添加的virtualbox没有保存版本信息的缘故(可以使用命令vagrant box list来查看)。所以可以通过修改Homestead/scripts/homestead.rb来解决这一个问题,找到config.vm.box_version = settings["version"] ||= ">= 0.4.4"这一行,将其修改为config.vm.box_version = settings["version"] ||= ">= 0"即可

6. 修改host文件。打开C:WindowsSystem32driversetchosts文件,添加192.168.10.10 homestead.app

7. 启动虚拟机。进入Homestead目录,使用命令vagrant up命令启动虚拟机,可使用vagrant ssh登陆虚拟机。顺便一提,虚拟机数据库的root用户密码为secret

8. 访问网站。在浏览器输入homestead.app应该就能访问你的网站了,当然前提是你已经将项目代码放在了根目录Code文件夹下(确保已经可以正确访问),并且确保项目文件夹名即为Homestead.yaml配置文件sites中映射的文件夹。


其他配置
9. 数据库配置。将项目的.env数据库配置部分修改如下:

DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

10. 添加更多站点。可以参照Homestead.yaml的folders格式来添加多个站点,同时修改sties对应的映射和别忘了修改hosts文件。最后还要记得在Homestead目录下vagrant provision,使修改配置正式生效


2016-8-3更新

如果在vagrant up这一步出现一些诸如下面的错误提示,那么很可能是yaml配置文件语法有误,请一定要确保语法正确(可以删除重新生成一份全新的)

$ vagrant up
C:/HashiCorp/Vagrant/embedded/lib/ruby/2.2.0/psych.rb:370:in `parse': (<unknown>): did not find expected key while parsing a block mapping at line 2 column 1 (Psych::SyntaxError)
        from C:/HashiCorp/Vagrant/embedded/lib/ruby/2.2.0/psych.rb:370:in `parse_stream'
        from C:/HashiCorp/Vagrant/embedded/lib/ruby/2.2.0/psych.rb:318:in `parse'
        from C:/HashiCorp/Vagrant/embedded/lib/ruby/2.2.0/psych.rb:245:in `load'
        from C:/Users/admin/Homestead/Vagrantfile:25:in `block in <top (required)>'
        from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/config/v2/loader.rb:37:in `call'
        from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/config/v2/loader.rb:37:in `load'
        from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/config/loader.rb:113:in `block (2 levels) in load'
        from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/config/loader.rb:107:in `each'
        from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/config/loader.rb:107:in `block in load'
        from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/config/loader.rb:104:in `each'
        from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/config/loader.rb:104:in `load'
        from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/vagrantfile.rb:28:in `initialize'
        from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/environment.rb:740:in `new'
        from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/environment.rb:740:in `vagrantfile'
        from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/environment.rb:486:in `host'
        from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/environment.rb:208:in `block in action_runner'
        from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:33:in `call'
        from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/action/runner.rb:33:in `run'
        from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/environment.rb:473:in `hook'
        from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.1/lib/vagrant/environment.rb:722:in `unload'
        from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.1/bin/vagrant:177:in `ensure in <main>'
        from C:/HashiCorp/Vagrant/embedded/gems/gems/vagrant-1.8.1/bin/vagrant:177:in `<main>'

2016-9-1更新
如果是直接从github上面下载特定版本的源码(以5.0为例),在使用composer install安装组件的时候可能会出现下面的错误

php artisan clear-compiled
PHP Warning:  require(/home/vagrant/Code/laravel-5.0/bootstrap/../vendor/autoload.php): failed to open stream: No such file or directory in /home/vagrant/Code/laravel-5.0/bootstrap/autoload.php on line 17
PHP Stack trace:
PHP   1. {main}() /home/vagrant/Code/laravel-5.0/artisan:0
PHP   2. require() /home/vagrant/Code/laravel-5.0/artisan:16

Warning: require(/home/vagrant/Code/laravel-5.0/bootstrap/../vendor/autoload.php): failed to open stream: No such file or directory in /home/vagrant/Code/laravel-5.0/bootstrap/autoload.php on line 17

Call Stack:
    0.0003     353360   1. {main}() /home/vagrant/Code/laravel-5.0/artisan:0
    0.0013     355792   2. require('/home/vagrant/Code/laravel-5.0/bootstrap/autoload.php') /home/vagrant/Code/laravel-5.0/artisan:16

PHP Fatal error:  require(): Failed opening required '/home/vagrant/Code/laravel-5.0/bootstrap/../vendor/autoload.php' (include_path='.:/usr/share/php') in /home/vagrant/Code/laravel-5.0/bootstrap/autoload.php on line 17
PHP Stack trace:
PHP   1. {main}() /home/vagrant/Code/laravel-5.0/artisan:0
PHP   2. require() /home/vagrant/Code/laravel-5.0/artisan:16

Fatal error: require(): Failed opening required '/home/vagrant/Code/laravel-5.0/bootstrap/../vendor/autoload.php' (include_path='.:/usr/share/php') in /home/vagrant/Code/laravel-5.0/bootstrap/autoload.php on line 17

Call Stack:
    0.0003     353360   1. {main}() /home/vagrant/Code/laravel-5.0/artisan:0
    0.0013     355792   2. require('/home/vagrant/Code/laravel-5.0/bootstrap/autoload.php') /home/vagrant/Code/laravel-5.0/artisan:16

Script php artisan clear-compiled handling the pre-update-cmd event returned with error code 255

简单分析一下应该是没有自动加载文件,执行一下composer dump-autoload

再次执行compser install命令,可能会出现下面不一样的错误提示

> php artisan clear-compiled
PHP Fatal error:  Uncaught Error: Class 'Illuminate\Foundation\Application' not                                                                                                                                                                                                found in /home/vagrant/Code/laravel-5.0/bootstrap/app.php:14
Stack trace:
#0 /home/vagrant/Code/laravel-5.0/artisan(18): require_once()
#1 {main}
  thrown in /home/vagrant/Code/laravel-5.0/bootstrap/app.php on line 14

Fatal error: Uncaught Error: Class 'Illuminate\Foundation\Application' not found in /home/vagrant/Code/laravel-5.0/bootstrap/app.php on line14

Error: Class 'Illuminate\Foundation\Application' not found in /home/vagrant/Code/laravel-5.0/bootstrap/app.php on line 14

Call Stack:
    0.0002     353360   1. {main}() /home/vagrant/Code/laravel-5.0/artisan:0
    0.0068     416896   2. require_once('/home/vagrant/Code/laravel-5.0/bootstra  p/app.php') /home/vagrant/Code/laravel-5.0/artisan:18

Script php artisan clear-compiled handling the pre-update-cmd event returned with error code 255

这个原因未知,可能原因可以参考这一篇帖子
这时候可以使用如下命令composer update --no-scripts解决


参考网站


Laravel

风筝2016

哈哈

zshanjun

test

zshanjun

test

登陆发表评论