如何将C盘的运行的Homestead/VM移动到F盘?

How to move Homestead/VM from running on the C drive to the F drive?

我目前在主目录 Windows 7 上有 Homestead 运行ning,即 C:/Users/username

我的 C 驱动器在 space 上 运行ning 很低并且没有突袭。但是,我有另一个标有 "F" 的驱动器,它有 raid 0 以帮助在 HD 崩溃的情况下保持我的 data/files 更安全,它还有更多存储空间 space.

我想把我的 Homestead 和项目移动到 F 盘。

这是我到目前为止所做的。

我从命令行执行了以下命令

f:
vagrant box add laravel/homestead
git clone https://github.com/laravel/homestead.git Homestead
mkdir Projects

然后我用下面的代码

编辑了位于F:/Homestead的init.sh文件
#!/usr/bin/env bash

homesteadRoot=~/.homestead

mkdir -p "$homesteadRoot"

cp -i src/stubs/Homestead.yaml "$homesteadRoot/Homestead.yaml"
cp -i src/stubs/after.sh "$homesteadRoot/after.sh"
cp -i src/stubs/aliases "$homesteadRoot/aliases"

echo "Homestead initialized!"

到下面的代码,以便文件在 F 驱动器而不是主驱动器上执行

#!/usr/bin/env bash

homesteadRoot=/f/.homestead

mkdir -p "$homesteadRoot"

cp -i src/stubs/Homestead.yaml "$homesteadRoot/Homestead.yaml"
cp -i src/stubs/after.sh "$homesteadRoot/after.sh"
cp -i src/stubs/aliases "$homesteadRoot/aliases"

echo "Homestead initialized!"

然后使用 Git Bash 我从 F:\Homestead

执行了以下命令
bash init.sh

然后我在F盘手动创建了.ssh文件夹,然后像这样创建了我的rsa密钥

mkdir .ssh
ssh-keygen -t rsa -C "you@homestead"

最后,我更新了 Homestead.yaml 看起来像这样

---
ip: "192.168.10.10"
memory: 5120
cpus: 1
provider: virtualbox

authorize: /f/.ssh/id_rsa.pub

keys:
    - /f/.ssh/id_rsa

folders:
    - map: /f/Projects
      to: /home/vagrant/Projects
      type: "nfs"

sites:
    - map: dev.app
      to: /home/vagrant/Projects/Project1/public

databases:
    - homestead

variables:
    - key: APP_ENV
      value: local

然而,当我转到 192.168.10.10:8000

时,我一直收到 No input file specified.

然后当我尝试像这样通过 SSH 连接到服务器时

vagrant SSH

我找到了与预期不同的路径 "or defined in my Homestead.yaml" 这就是我所看到的

cd /home/vagrant/Projects/Projects1/Project1

因此:请注意框中的文件夹命名

我看到的文件与我笔记本电脑上的文件不同

F:\Projects\Project1\public

我做错了什么?我应该如何正确 运行 我机器上的 Homestead 在 F 驱动器上而不是在用户主驱动器上?

您在应该使用 Linux 路径的地方使用了 Windows 路径。

Homestead 使用虚拟机 运行ning Linux,Linux 不需要知道或关心您现在 运行ning Homestead 在您的F: 驱动器而不是 C: 驱动器。

Homestead 的工作方式是将文件夹从 Windows 操作系统映射到 Linux 操作系统。然后在 Homestead Linux 机器内部,它不必知道或关心文件所在的位置(C: 或 F:)。

你把 /f/ 放在的所有地方都不正确;这在 Windows 或 Linux 上都不存在。

首先,您需要撤消对以 .sh 结尾的文件所做的任何更改。 Linux 中的这些文件 运行,因此不需要修改此移动到 F:.

init.sh homesteadRoot=/f/.homestead

恢复到

homesteadRoot=~/.homestead

接下来,我认为唯一需要更改的是您的 Homestead.yaml:

folders:
    - map: F:/Projects
      to: /home/vagrant/Code

我已成功将我的项目文件夹从 C: 驱动器移动到 D: 驱动器。我不得不如下更改几个宅基地文件。

更改 Homestead 目录中 Vagrantfile 中的以下行

-confDir = $confDir ||= File.expand_path(File.join(Dir.home, ".homestead"))

confDir = $confDir ||= File.expand_path(File.dirname(__FILE__))

如果您正在处理 Mac 或 Linux,请在 init.sh 文件中进行以下更改。

#!/usr/bin/env bash

cp -i src/stubs/Homestead.yaml Homestead.yaml
cp -i src/stubs/after.sh after.sh
cp -i src/stubs/aliases aliases

echo "Homestead initialized!"

在 Windows init.bat 文件包含以下更改

@echo off

copy /-y src\stubs\Homestead.yaml Homestead.yaml
copy /-y src\stubs\after.sh after.sh
copy /-y src\stubs\aliases aliases

echo Homestead initialized!

最后,您必须在 Headstead.yaml 文件中的 'map' 键中提供您的 'Projects' 文件夹路径。在我的电脑上,Projects 文件夹存在于 Homestead 目录中,map 路径在 Headstead.yaml.

中给出如下
folders:
    - map: D:/vagrant/Homestead/Projects
       to: /home/vagrant/Projects

运行 按照 Git Bash 中的命令重新加载 vagrant box。

bash init.sh
vagrant reload --provision