【问题标题】:How to run meteor app inside an Ubuntu VrtualBox and edit using an editor on a Windows host?如何在 Ubuntu VirtualBox 中运行流星应用程序并使用 Windows 主机上的编辑器进行编辑?
【发布时间】:2014-01-11 14:51:28
【问题描述】:

我希望在运行 Ubuntu 的虚拟机客户机中运行一个流星服务器以用于开发目的。该项目将位于主机上的一个文件夹中,该文件夹将共享给来宾(文件夹本身位于 Dropbox 文件夹中 - 这样我可以在多个虚拟机和工作站之间共享开发,但这不应该受到伤害),

我已经通过仅主机适配器和 NAT 在客户机上设置了网络,为方便起见,将 SSH 密钥输入到 putty + 客户机的 ip 在 windows etc/hosts 文件中,因此可以在 http://dev:3000 上本地访问服务器,这部分工作正常。

virtualbox 在 Windows 7 上运行,因此问题是 Meteor 无法启动,因为无法启动想要创建锁定文件的 Mongo(因为该文件必须位于 Windows 主机上,通过vboxfs)。

如果我将项目移动到其他文件夹,则无法再使用主机上的编辑器编辑文件。我尝试将.meteor/local 文件夹移出到 ext3 分区并使用符号链接进行连接,但由于无法创建锁定文件的相同原因,这不起作用。

那么,有人对如何设置有建议吗?

更新

我在 ubuntu 客户机中安装了 mongodb,但是当我尝试运行 meteor 时,启动失败了,因为流星似乎想在文件夹中创建符号链接:

/home/bbozo/.meteor/tools/09b63f1ed5/lib/node_modules/fibers/future.js:173
                                                throw(ex);
                                                      ^
Error: EROFS, read-only file system '/media/sf_Shared/Dropbox/dev_uhurajr/chat/.meteor/local/.build320446.build/programs/server/npm/logging/main/node_modules'

Plan B 将是 @user3185338 答案中的一些东西,这是一个可行的解决方法,但我有点希望有一个更优雅的替代方案来运行一个带有 x 秒延迟的 while 循环 screen

更新

有没有办法告诉meteor 移动它的.meteor 工作文件夹而不使用符号链接?也许通过在 ubuntu 中设置应用程序服务器,类似于 apache/nginx + 乘客?

【问题讨论】:

  • 你试过Vagrant吗?
  • @bredikhin,我已经用它玩了一点,但是因为我已经准备好 Ubuntu 虚拟机来处理其他事情,所以我使用它。你知道是否有任何 Vagrant 虚拟机对我错过的虚拟机做了一些好事?
  • AFAIK,Vagrant 基本上可以完成您想要实现的一切:包含代码的共享文件夹、端口映射等。您唯一需要做的就是设置配置(使用 Chef 或 Puppet ) 以便在 VM 中安装必要的软件。这种方法的美妙之处在于您不必转移整个虚拟机,您只需将Vagrantfile 和一些食谱/食谱置于版本控制之下,仅此而已。之后,您只需使用一个命令vagrant up,就可以在任何新机器上重新创建您的环境。
  • 我阅读了您的帖子,想知道在使用外部 mongoDb 后是否有解决 EROFS 错误的解决方案!?

标签: windows mongodb ubuntu meteor virtualbox


【解决方案1】:

我对符号链接有相同的目标和相同的问题。

这是我所做的:

  • 使用 VirtualBox 配置共享目录(例如:/media/sf_meteor),您可以在其中复制需要编辑的源文件
  • 在来宾上创建并运行同步脚本(您可能需要安装 rsync):

    #!/bin/sh
    #
    while true;
    do rsync -avt --delete <LIST OF DIRECTORY TO SYNC ex: ./client ./lib ./public ./server ./shared > <YOUR METEOR APP DIR IN THE HOST ex: ~/my_app/>;
    sleep 5;
    done

    • 当您在 Windows 主机上编辑代码时,它将在来宾上更新。如果 Meteor 正在运行,您的更改将在您的浏览器上自动更新

希望对你有帮助

【讨论】:

  • 我笑了 :) 不是很华丽,但如果其他选项失败,它工作:)
【解决方案2】:

VirtualBox 共享文件夹(vboxsf 设备)具有不同的设备接口,并且在 MongoDB 2.4 中不支持 MongoDB 数据目录。

解决方法是只让您的应用程序文件使用共享文件夹。

您可以使用几种不同的方法将 MongoDB 数据文件移出共享文件夹:

1) 登录到 VirtualBox VM 并将 .meteor/local/db/ 符号链接到不是共享文件夹的目录(例如 ~/db)。这应该允许您在系统之间共享您的应用程序并在 VM 本地拥有一个数据库。

2) 通过设置MONGO_URL 环境变量,使用外部 MongoDB 服务器(即在主机环境而不是 VM 中运行的服务器)运行 meteor

MONGO_URL=mongodb://192.168.1.123:27017 meteor 

【讨论】:

  • 感谢您的提示 :) 不幸的是,#1 不起作用,因为无法在共享文件夹(位于主机上)内创建符号链接,当我尝试 #2 时,出现了另一个障碍,meteor 似乎想在其.meteor 文件夹中创建符号链接,我会尽快更新问题
  • 我忘了提到共享在 Dropbox 上 :) 你知道如何解决访客内部的符号链接问题吗?
  • 您的配置似乎异常,因为您收到“只读文件系统”错误。在使用这种方法(OS X 主机,Linux VM)之前,我已经在 VirtualBox 上设置了共享文件夹,并且共享文件夹在主机和 VM 中都是读/写的。如果共享在 Dropbox 上,我会尝试为 VM 中的源代码文件夹设置 Dropbox 守护程序,而不是使用 VirtualBox 共享文件夹。
  • 你也可以颠倒方法:通过 Samba 将一个目录从你的 VM 共享到主机。
  • 我很确定“只读文件系统”只是 Ubuntu 被混淆了,因为无法创建符号链接。我在文件夹中有完整的 rw 功能,只是当我尝试 ln -s ubuntu 返回“只读文件系统”错误时。我可以通过 Samba 分享,但这意味着我必须放弃我非常喜欢的 Dropbox 设置。我开始意识到 VirtualBox 技巧并不能帮助我很好地解决这个问题
【解决方案3】:

http://win.meteor.com查看虚拟化解决方案

【讨论】:

    猜你喜欢
    • 2016-05-06
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 2017-12-01
    相关资源
    最近更新 更多