【问题标题】:Configure Homestead for Laravel为 Laravel 配置 Homestead
【发布时间】:2020-04-12 07:51:39
【问题描述】:

我正在尝试为 Laravel 服务器配置 Homestead 环境,但无法正常工作。我按照文档安装和配置 Homestead 和 Vagrant。这是我的Homestead.yaml

---
ip: "192.168.10.10"
memory: 2048
cpus: 2
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: C:\\Users\\meadi\\PhpstormProjects
      to: /home/vagrant/code

sites:
    - map: blog.test
      to: /home/vagrant/code/blog/public

databases:
    - homestead

features:
    - mariadb: false
    - ohmyzsh: false
    - webdriver: false

PhpstormProjects 是我所有的 php 项目所在的文件夹,blog 是我要为其设置的项目的文件夹。在项目根目录中运行vagrant up 会产生这个Vagrantfile(在PhpStorm 中使用了Vagrant 工具,所以我假设这是PhpStorm 提供的模板):

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

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
  # The most common configuration options are documented and commented below.
  # For a complete reference, please see the online documentation at
  # https://docs.vagrantup.com.

  # Every Vagrant development environment requires a box. You can search for
  # boxes at https://vagrantcloud.com/search.
  config.vm.box = "laravel/homestead"

  # Disable automatic box update checking. If you disable this, then
  # boxes will only be checked for updates when the user runs
  # `vagrant box outdated`. This is not recommended.
  # config.vm.box_check_update = false

  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine. In the example below,
  # accessing "localhost:8080" will access port 80 on the guest machine.
  # NOTE: This will enable public access to the opened port
  # config.vm.network "forwarded_port", guest: 80, host: 8080

  # Create a forwarded port mapping which allows access to a specific port
  # within the machine from a port on the host machine and only allow access
  # via 127.0.0.1 to disable public access
  # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"

  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  # config.vm.network "private_network", ip: "192.168.33.10"

  # Create a public network, which generally matched to bridged network.
  # Bridged networks make the machine appear as another physical device on
  # your network.
  # config.vm.network "public_network"

  # Share an additional folder to the guest VM. The first argument is
  # the path on the host to the actual folder. The second argument is
  # the path on the guest to mount the folder. And the optional third
  # argument is a set of non-required options.
  # config.vm.synced_folder "../data", "/vagrant_data"

  # Provider-specific configuration so you can fine-tune various
  # backing providers for Vagrant. These expose provider-specific options.
  # Example for VirtualBox:
  #
  # config.vm.provider "virtualbox" do |vb|
  #   # Display the VirtualBox GUI when booting the machine
  #   vb.gui = true
  #
  #   # Customize the amount of memory on the VM:
  #   vb.memory = "1024"
  # end
  #
  # View the documentation for the provider you are using for more
  # information on available options.

  # Enable provisioning with a shell script. Additional provisioners such as
  # Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
  # documentation for more information about their specific syntax and use.
  # config.vm.provision "shell", inline: <<-SHELL
  #   apt-get update
  #   apt-get install -y apache2
  # SHELL
end

我看到大部分文件都被注释掉了,但我不知道我是否应该启用任何这些配置。运行vagrant provision 后,我希望能够在浏览器中连接到服务器。我设置了从 192.168.10.10 到 blog.test 的 hosts 映射,我还尝试直接连接到 192.168.10.10 和 localhost:8000,但没有成功,Chrome 告诉我无法访问该站点。

在 PhpStorm 中浏览遥控器会显示这个文件夹结构:

我看到没有“/home/vagrant/code”目录,即使这是Homestead.yaml 中的映射,当运行vagrant up 时,我在控制台中打印了这个:

==> default: Mounting shared folders...
    default: /vagrant => C:/Users/meadi/PhpstormProjects/blog

我假设我配置错误导致代码文件夹未安装在 VM 中,从而导致无法提供 public 文件夹。谁能帮我吗?我遵循了多个教程,但似乎无法找出我错过了什么。提前致谢!

另外,这是我在 PhpStorm 中的远程配置。我假设如果我配置错误,我在 Remote 中看到的文件夹结构将不准确。

【问题讨论】:

    标签: php laravel vagrant phpstorm homestead


    【解决方案1】:

    问题可能隐藏在 Homestead.yaml 的这一部分中:

    folders:
    - map: C:\\Users\\meadi\\PhpstormProjects
      to: /home/vagrant/code
    

    一开始,你不必在路径中使用双反斜杠,你可以这样写:

    C:\Users\meadi\PhpstormProjects
    

    其次,你的项目文件夹映射到/home/vagrant/code,但是你想将你的项目设置在“blog”文件夹,所以你需要改变你的映射如下: p>

    /home/vagrant/code/blog
    

    另外,您应该将具体的博客项目放在主机上的“blog”目录中:

    C:\Users\meadi\PhpstormProjects\blog
    

    并在您的 Homestead.yaml 中定义此路径

    最后的变种是:

    folders:
    - map: C:\Users\meadi\PhpstormProjects\blog
      to: /home/vagrant/code/blog
    

    如果你想创建另一个项目(例如,shop),你必须添加另一个映射:

    folders:
    - map: C:\Users\meadi\PhpstormProjects\blog
      to: /home/vagrant/code/blog
    - map: C:\Users\meadi\PhpstormProjects\shop
      to: /home/vagrant/code/shop
    

    编辑

    检查,如果您已遵循所有这些安装步骤:

    1. 安装 vagrant 和 virtualbox 后,在 cmd 中的任意位置运行 vagrant box add laravel/homestead
    2. 转到您的项目的 empty 文件夹并运行 git clone https://github.com/laravel/homestead.git Homestead
    3. 克隆此包后,在其中运行 init.bat 脚本
    4. 它将生成 Homestead.yaml 您需要编辑
    5. vagrant up 从 Homestead.yaml 所在的文件夹中

    【讨论】:

    • 进行了更改,但仍然没有结果。解压并重新创建vm后,远程中仍然没有代码文件夹,果然在'127.0.0.1:8000'、'192.168.10.10'或'blog.test'上什么都没有弹出
    • @Adrian,尝试从 cmd 或 Powershell 运行“vagrant up”,然后运行 ​​vagrant ssh 连接远程,现在不要使用 Phpstorm。然后使用 ls -a 命令检查文件夹。 Homestead.yaml 似乎配置正确,所以你应该看到代码/博客路径。
    • 同样的结果。也销毁了之前的vm,从powershell而不是Phpstorm重新运行vagrant init,但是还是没有code文件夹(直接用ssh检查)
    • @Adrian,嘿,您不必运行 vagrant init。我会更新答案,检查你是否完成了我描述的所有步骤
    • 哦,所以我必须从 homestead 文件夹中运行 vagrant。我看到现在它不会自动生成 ssh 密钥。'~/.ssh/id_rsa' 解析到哪里? (我不确定 ~/ 在 windows 上是什么意思
    猜你喜欢
    • 2018-12-16
    • 2014-10-05
    • 1970-01-01
    • 2018-12-29
    • 2014-11-15
    • 2014-10-22
    • 2017-12-14
    • 1970-01-01
    • 2018-02-11
    相关资源
    最近更新 更多