1

I have install laravel homestead by following the docs here and following the tutorial here.

Now when I command vagrant up inside root directory (<myName>@<myPCName> MING32 ~/Homestead (master)), it will show the error.

I try to follow the solutions here at answer #1, i successfully follow the instruction of the solution but it still the same, even when i do vagrant reload --provision and vagrant reload followed by vagrant up.

I put my laravel at C:/xampp/htdocs/laraTry and ~/Code. And i am using Windows 10.

Heres my Vagrantfile' inside~/Homestead`:

# -*- mode: ruby -*-
# vi: set ft=ruby :

require 'json'
require 'yaml'

VAGRANTFILE_API_VERSION = "2"
confDir = $confDir ||= File.expand_path("~/.homestead")

homesteadYamlPath = confDir + "/Homestead.yaml"
homesteadJsonPath = confDir + "/Homestead.json"
afterScriptPath = confDir + "/after.sh"
aliasesPath = confDir + "/aliases"

require File.expand_path(File.dirname(__FILE__) + '/scripts/homestead.rb')

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
if File.exists? aliasesPath then
    config.vm.provision "file", source: aliasesPath, destination: "~/.bash_aliases"
end

if File.exists? homesteadYamlPath then
    settings = YAML::load(File.read(homesteadYamlPath))
elsif File.exists? homesteadJsonPath then
    settings = JSON.parse(File.read(homesteadJsonPath))
end

Homestead.configure(config, settings)

if File.exists? afterScriptPath then
    config.vm.provision "shell", path: afterScriptPath, privileged: false
end

if defined? VagrantPlugins::HostsUpdater
    config.hostsupdater.aliases = settings['sites'].map { |site| site['map'] }
end
end

My Homestead.yaml (C:Users//.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

And homestead.rb (C:/Users//Homestead/scripts):

class Homestead
def Homestead.configure(config, settings)
# Set The VM Provider
ENV['VAGRANT_DEFAULT_PROVIDER'] = settings["provider"] ||= "virtualbox"

# Configure Local Variable To Access Scripts From Remote Location
scriptDir = File.dirname(__FILE__)

# Prevent TTY Errors
config.ssh.shell = "bash -c 'BASH_ENV=/etc/profile exec bash'"

# Allow SSH Agent Forward from The Box
config.ssh.forward_agent = true

# Configure The Box
config.vm.box = settings["box"] ||= "laravel/homestead"
config.vm.box_version = settings["version"] ||= ">= 0.4.0"
config.vm.hostname = settings["hostname"] ||= "homestead"

# Configure A Private Network IP
config.vm.network :private_network, ip: settings["ip"] ||= "192.168.10.10"

# Configure Additional Networks
if settings.has_key?("networks")
  settings["networks"].each do |network|
    config.vm.network network["type"], ip: network["ip"], bridge: network["bridge"] ||= nil
  end
end

# Configure A Few VirtualBox Settings
config.vm.provider "virtualbox" do |vb|
  vb.name = settings["name"] ||= "homestead-7"
  vb.customize ["modifyvm", :id, "--memory", settings["memory"] ||= "2048"]
  vb.customize ["modifyvm", :id, "--cpus", settings["cpus"] ||= "1"]
  vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
  vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  vb.customize ["modifyvm", :id, "--ostype", "Ubuntu_64"]
end

# Configure A Few VMware Settings
["vmware_fusion", "vmware_workstation"].each do |vmware|
  config.vm.provider vmware do |v|
    v.vmx["displayName"] = settings["name"] ||= "homestead-7"
    v.vmx["memsize"] = settings["memory"] ||= 2048
    v.vmx["numvcpus"] = settings["cpus"] ||= 1
    v.vmx["guestOS"] = "ubuntu-64"
  end
end

# Configure A Few Parallels Settings
config.vm.provider "parallels" do |v|
  v.update_guest_tools = true
  v.memory = settings["memory"] ||= 2048
  v.cpus = settings["cpus"] ||= 1
end

# Standardize Ports Naming Schema
if (settings.has_key?("ports"))
  settings["ports"].each do |port|
    port["guest"] ||= port["to"]
    port["host"] ||= port["send"]
    port["protocol"] ||= "tcp"
  end
else
  settings["ports"] = []
end

# Default Port Forwarding
default_ports = {
  80   => 8000,
  443  => 44300,
  3306 => 33060,
  5432 => 54320
}

# Use Default Port Forwarding Unless Overridden
unless settings.has_key?("default_ports") && settings["default_ports"] == false
  default_ports.each do |guest, host|
    unless settings["ports"].any? { |mapping| mapping["guest"] == guest }
      config.vm.network "forwarded_port", guest: guest, host: host, auto_correct: true
    end
  end
end

# Add Custom Ports From Configuration
if settings.has_key?("ports")
  settings["ports"].each do |port|
    config.vm.network "forwarded_port", guest: port["guest"], host: port["host"], protocol: port["protocol"], auto_correct: true
  end
end

# Configure The Public Key For SSH Access
if settings.include? 'authorize'
  if File.exists? File.expand_path(settings["authorize"])
    config.vm.provision "shell" do |s|
      s.inline = "echo $1 | grep -xq \"$1\" /home/vagrant/.ssh/authorized_keys || echo $1 | tee -a /home/vagrant/.ssh/authorized_keys"
      s.args = [File.read(File.expand_path(settings["authorize"]))]
    end
  end
end

# Copy The SSH Private Keys To The Box
if settings.include? 'keys'
  settings["keys"].each do |key|
    config.vm.provision "shell" do |s|
      s.privileged = false
      s.inline = "echo \"$1\" > /home/vagrant/.ssh/$2 && chmod 600 /home/vagrant/.ssh/$2"
      s.args = [File.read(File.expand_path(key)), key.split('/').last]
    end
  end
end

# Copy User Files Over to VM
if settings.include? 'copy'
  settings["copy"].each do |file|
    config.vm.provision "file" do |f|
      f.source = File.expand_path(file["from"])
      f.destination = file["to"].chomp('/') + "/" + file["from"].split('/').last
    end
  end
end

# Register All Of The Configured Shared Folders
if settings.include? 'folders'
  settings["folders"].each do |folder|
    mount_opts = []

    if (folder["type"] == "nfs")
        mount_opts = folder["mount_options"] ? folder["mount_options"] : ['actimeo=1']
    elsif (folder["type"] == "smb")
        mount_opts = folder["mount_options"] ? folder["mount_options"] : ['vers=3.02', 'mfsymlinks']
    end

    # For b/w compatibility keep separate 'mount_opts', but merge with options
    options = (folder["options"] || {}).merge({ mount_options: mount_opts })

    # Double-splat (**) operator only works with symbol keys, so convert
    options.keys.each{|k| options[k.to_sym] = options.delete(k) }

    config.vm.synced_folder folder["map"], folder["to"], type: folder["type"] ||= nil, **options

    # Bindfs support to fix shared folder (NFS) permission issue on Mac
    if Vagrant.has_plugin?("vagrant-bindfs")
      config.bindfs.bind_folder folder["to"], folder["to"]
    end
  end
end

# Install All The Configured Nginx Sites
config.vm.provision "shell" do |s|
    s.path = scriptDir + "/clear-nginx.sh"
end


if settings.include? 'sites'
  settings["sites"].each do |site|
    type = site["type"] ||= "laravel"

    if (site.has_key?("hhvm") && site["hhvm"])
      type = "hhvm"
    end

    if (type == "symfony")
      type = "symfony2"
    end

    config.vm.provision "shell" do |s|
      s.name = "Creating Site: " + site["map"]
      s.path = scriptDir + "/serve-#{type}.sh"
      s.args = [site["map"], site["to"], site["port"] ||= "80", site["ssl"] ||= "443"]
    end

    # Configure The Cron Schedule
    if (site.has_key?("schedule"))
      config.vm.provision "shell" do |s|
        s.name = "Creating Schedule"

        if (site["schedule"])
          s.path = scriptDir + "/cron-schedule.sh"
          s.args = [site["map"].tr('^A-Za-z0-9', ''), site["to"]]
        else
          s.inline = "rm -f /etc/cron.d/$1"
          s.args = [site["map"].tr('^A-Za-z0-9', '')]
        end
      end
    end

  end
end

config.vm.provision "shell" do |s|
  s.name = "Restarting Nginx"
  s.inline = "sudo service nginx restart; sudo service php7.0-fpm restart"
end

# Install MariaDB If Necessary
if settings.has_key?("mariadb") && settings["mariadb"]
  config.vm.provision "shell" do |s|
    s.path = scriptDir + "/install-maria.sh"
  end
end


# Configure All Of The Configured Databases
if settings.has_key?("databases")
    settings["databases"].each do |db|
      config.vm.provision "shell" do |s|
        s.name = "Creating MySQL Database"
        s.path = scriptDir + "/create-mysql.sh"
        s.args = [db]
      end

      config.vm.provision "shell" do |s|
        s.name = "Creating Postgres Database"
        s.path = scriptDir + "/create-postgres.sh"
        s.args = [db]
      end
    end
end

# Configure All Of The Server Environment Variables
config.vm.provision "shell" do |s|
    s.name = "Clear Variables"
    s.path = scriptDir + "/clear-variables.sh"
end

if settings.has_key?("variables")
  settings["variables"].each do |var|
    config.vm.provision "shell" do |s|
      s.inline = "echo \"\nenv[$1] = '$2'\" >> /etc/php/7.0/fpm/php-fpm.conf"
      s.args = [var["key"], var["value"]]
    end

    config.vm.provision "shell" do |s|
        s.inline = "echo \"\n# Set Homestead Environment Variable\nexport $1=$2\" >> /home/vagrant/.profile"
        s.args = [var["key"], var["value"]]
    end
  end

  config.vm.provision "shell" do |s|
    s.inline = "service php7.0-fpm restart"
  end
end

# Update Composer On Every Provision
config.vm.provision "shell" do |s|
  s.inline = "/usr/local/bin/composer self-update"
end

# Configure Blackfire.io
if settings.has_key?("blackfire")
  config.vm.provision "shell" do |s|
    s.path = scriptDir + "/blackfire.sh"
    s.args = [
      settings["blackfire"][0]["id"],
      settings["blackfire"][0]["token"],
      settings["blackfire"][0]["client-id"],
      settings["blackfire"][0]["client-token"]
    ]
  end
end
end
end
Community
  • 1
  • 1
noel10
  • 318
  • 4
  • 16
  • Could you post the exact error message you get? – Giorgian Borca-Tasciuc Jun 14 '16 at 03:04
  • @GiorgianBorca-Tasciuc `Failed to mount folders in Linux guest. This is usually because the "vboxsf" file system is not available. Please verify that the guest additions are properly installed in the guest and can work properly. The command attempted was:` – noel10 Jun 14 '16 at 13:36
  • 'mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3`,actimeo=1 home_vagrant_Code /home/vagrant/Code mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant`,actimeo=1 home_vagrant_Code /home/vagrant/Code' – noel10 Jun 14 '16 at 13:36
  • Install VirtualBoxGuest Additions in the Linux Guest. http://superuser.com/questions/496513/mount-gives-unknown-filesystem-type-vboxsf – Giorgian Borca-Tasciuc Jun 14 '16 at 13:39
  • I already had a VirtualBoxGuest, its version was 5.0.20. – noel10 Jun 14 '16 at 13:52
  • but ill try your suggestion right away. – noel10 Jun 14 '16 at 13:53
  • Yeah the guest additions aren't normally installed automatically. – Giorgian Borca-Tasciuc Jun 14 '16 at 14:16
  • yeah, that's what I confused about, do you have an idea on how to install it using terminal @GiorgianBorca-Tasciuc? The VirtualBoxGuestAdditions-5.0.20 folder exists but not working. btw, I am doing this for Laravel homestead. I notice that my file from windows where I put the Laravel is not transferred to the host(which is ubuntu) when I do the command `vagrant up`. – noel10 Jun 14 '16 at 14:41
  • Sorry that I was away, had to take some exams. Did you say that the guest was Ubuntu? Try running `sudo apt-get install virtualbox-guest-additions-iso virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11`. – Giorgian Borca-Tasciuc Jun 14 '16 at 19:57
  • @GiorgianBorca-Tasciuc it's ok, i wll try that. I will just reach you when there is a good or bad result. – noel10 Jun 15 '16 at 03:25

0 Answers0