"vagrant up" 没问题,但是无法通过浏览器访问。

5

我在OSX Yosemite上第一次尝试使用Vagrant,并从http://rove.io下载了带有LAMP堆栈的Vagrantfile/Cheffile。

它们如下所示:

Cheffile

# encoding: utf-8

site 'http://community.opscode.com/api/v1'

cookbook "apt"
cookbook "mysql", {}
cookbook "nodejs", {:github=>"mdxp/nodejs-cookbook"}
cookbook "python", {}
cookbook "git", {}
cookbook "php", {}
cookbook "nginx", {}

vagrantfile

# encoding: utf-8
# This file originally created at http://rove.io/36f03d7ed905b30118b48bfe3d16ee07

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

Vagrant.configure("2") do |config|

  config.vm.box = "opscode-ubuntu-12.04_chef-11.4.0"
  config.vm.box_url = "https://opscode-vm-bento.s3.amazonaws.com/vagrant/opscode_ubuntu-12.04_chef-11.4.0.box"
  config.ssh.forward_agent = true

  config.vm.network :forwarded_port, guest: 80, host: 8080

  config.vm.provision :chef_solo do |chef|
    chef.cookbooks_path = ["cookbooks"]
    chef.add_recipe :apt
    chef.add_recipe 'mysql::server'
    chef.add_recipe 'nodejs'
    chef.add_recipe 'python'
    chef.add_recipe 'git'
    chef.add_recipe 'php'
    chef.add_recipe 'nginx'
    chef.json = {
      :mysql => {
        :server_root_password   => "password",
        :server_repl_password   => "password",
        :server_debian_password => "password",
        :service_name           => "mysql",
        :basedir                => "/usr",
        :data_dir               => "/var/lib/mysql",
        :root_group             => "root",
        :mysqladmin_bin         => "/usr/bin/mysqladmin",
        :mysql_bin              => "/usr/bin/mysql",
        :conf_dir               => "/etc/mysql",
        :confd_dir              => "/etc/mysql/conf.d",
        :socket                 => "/var/run/mysqld/mysqld.sock",
        :pid_file               => "/var/run/mysqld/mysqld.pid",
        :grants_path            => "/etc/mysql/grants.sql"
      },
      :git   => {
        :prefix => "/usr/local"
      },
      :nginx => {
        :dir                => "/etc/nginx",
        :log_dir            => "/var/log/nginx",
        :binary             => "/usr/sbin/nginx",
        :user               => "www-data",
        :init_style         => "runit",
        :pid                => "/var/run/nginx.pid",
        :worker_connections => "1024"
      }
    }
  end
end

那么,接着我试图将这个上升:

$ librarian-chef install
$ vagrant up

  myapp git:(master)  vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: VirtualBox VM is already running.
  myapp git:(master)  vagrant reload
==> default: Attempting graceful shutdown of VM...
==> default: Clearing any previously set forwarded ports...
Skipping Berkshelf with --no-provision
==> default: Fixed port collision for 22 => 2222. Now on port 2200.
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 22 => 2200 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2200
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Connection timeout. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you see
    default: shared folder errors, please make sure the guest additions within the
    default: virtual machine match the version of VirtualBox you have installed on
    default: your host and reload your VM.
    default:
    default: Guest Additions Version: 4.2.12
    default: VirtualBox Version: 4.3
==> default: Mounting shared folders...
    default: /vagrant => /Users/myuser/projects/dev
    default: /tmp/vagrant-chef-3/chef-solo-1/cookbooks => /Users/myuser/projects/dev/cookbooks
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: to force provisioning. Provisioners marked to run always will still run.

我猜它正在工作,对吧?

我正在Chrome上尝试http://127.0.0.1,但它显示未找到。

我做错了什么吗?


"not found" 意味着 Vagrant 虚拟机正常运行,浏览器可以连接到服务器,只是您在文档根目录中没有任何文件或您尝试访问的文件不存在。 - Daniel W.
2个回答

2
你需要按照以下步骤通过虚拟机盒子的IP地址进行访问。
1. SSH连接到Vagrant box。
vagrant ssh

$ ifconfig

复制ID并在浏览器中打开。IP应该类似于192.168.1.5,并且在浏览器中,打开http://192.168.1.5:8080

-2

尝试销毁并重新启动它。如果这样做没有帮助,请向我们展示日志:

vagrant destroy
vagrant up

您可以始终使用ssh登录VM并检查出了什么问题:

vagrant ssh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接