如何将Homestead / VM从C盘上运行到F盘?

时间:2015-08-06 17:08:08

标签: laravel laravel-5 vagrant virtualbox homestead

我目前在家庭目录中运行Windows 7,即C:/Users/username

我的C云端硬盘空间不足且没有突袭。但是,我有另一个标有" F"其中raid为0以帮助保持我的数据/文件更安全,以防HD崩溃,并且还有更多的存储空间。

我想把我的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

我发现了一条与我预期不同的路径#34;或者在我的Homestead.yaml"中定义的路径。这就是我所看到的

cd /home/vagrant/Projects/Projects1/Project1

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

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

F:\Projects\Project1\public

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

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:0)

我已成功将我的Project文件夹从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!

最后,你必须提供你的项目'文件夹路径在' map'键入 Headstead.yaml 文件。在我的电脑上,Homestead目录中存在 Projects 文件夹,Headstead.yaml中的 map 路径如下所示。

folders:
    - map: D:/vagrant/Homestead/Projects
       to: /home/vagrant/Projects

在Git Bash中运行以下命令以重新加载流浪盒。

bash init.sh
vagrant reload --provision