如何在Ubuntu虚拟现实中运行meteor应用程序,并在Windows主机上使用编辑器进行编辑?

如何在Ubuntu虚拟现实中运行meteor应用程序,并在Windows主机上使用编辑器进行编辑?,windows,mongodb,ubuntu,meteor,virtualbox,Windows,Mongodb,Ubuntu,Meteor,Virtualbox,我希望在运行Ubuntu的virtualbox客户机中运行meteor服务器,用于开发目的。该项目将位于主机上的一个文件夹中,该文件夹将共享给来宾(该文件夹本身位于Dropbox文件夹中-这样我可以在多个VM和工作站之间共享开发,但这不会造成任何伤害) 我通过仅主机适配器和NAT在guest上设置了网络,SSH密钥输入putty以方便使用,并在windowsetc/hosts文件中添加guest的ip,因此服务器可以在http://dev:3000,这部分工作正常 virtualbox在Wind

我希望在运行Ubuntu的virtualbox客户机中运行meteor服务器,用于开发目的。该项目将位于主机上的一个文件夹中,该文件夹将共享给来宾(该文件夹本身位于Dropbox文件夹中-这样我可以在多个VM和工作站之间共享开发,但这不会造成任何伤害)

我通过仅主机适配器和NAT在guest上设置了网络,SSH密钥输入putty以方便使用,并在windows
etc/hosts
文件中添加guest的ip,因此服务器可以在
http://dev:3000
,这部分工作正常

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

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

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

更新

我在ubuntu guest中安装了mongodb,但当我试图运行meteor时,启动程序崩溃了,因为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'
计划B应该是@user3185338答案中的一行,这是一个可行的解决方案,但我希望有一个更优雅的替代方案,来运行while循环,在
屏幕内延迟x秒

更新

有没有一种方法可以让meteor在不使用符号链接的情况下移动它的.meteor工作文件夹?也许通过在ubuntu中设置应用服务器,apache/nginx+passenger?

VirtualBox共享文件夹(
vboxsf
设备)中的某些内容具有不同的设备界面,并且在MongoDB 2.4中不支持MongoDB数据目录

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

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

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

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

MONGO_URL=mongodb://192.168.1.123:27017 meteor 

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

以下是我所做的:

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

    #/bin/sh

    #

    为true时
    do rsync-avt——删除
    sleep5
    done

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

希望它能帮助你

看看上面的虚拟化解决方案

谢谢你的提示:)不幸的是,#1不起作用,因为无法在共享文件夹(位于主机上)中创建符号链接,而当我尝试#2时,又遇到了另一个障碍,meteor似乎想在其
文件夹中创建符号链接,我将简短地更新问题我忘了提到共享在Dropbox上:)您对如何处理来宾内部的符号链接问题有何想法?您的配置似乎不寻常,因为您遇到了“只读文件系统”错误。在使用这种方法(OS X主机、Linux虚拟机)之前,我已经在VirtualBox上设置了共享文件夹,并且共享文件夹在主机和虚拟机中都是读/写的。如果共享在Dropbox上,我会尝试为VM中的源代码文件夹设置Dropbox守护程序,而不是使用VirtualBox共享文件夹。您也可以反转方法:通过Samba将目录从VM共享到主机。我非常确定“只读文件系统”只是Ubuntu被弄糊涂了,因为无法创建符号链接。我在文件夹中有完整的rw功能,只是当我尝试
ln-s
ubuntu返回“只读文件系统”错误时。我可以通过Samba分享,但这意味着我必须放弃我非常喜欢的Dropbox设置。我开始意识到VirtualBox的技巧并不能很好地解决这个问题。我懒洋洋地说:)不是很花哨,但如果其他选项失败,它也会起作用:)你试过了吗?@bredikhin,我已经玩过一点了,但因为我已经准备好了Ubuntu虚拟机来做其他事情,所以我就这么做了。你知道有没有任何一个Vagrant虚拟机对我错过的虚拟机做了一些好事吗?好吧,Vagrant基本上完成了你想要实现的一切:代码共享文件夹、端口映射等等。你唯一要做的就是设置资源调配(使用Chef或Puppet),以便在虚拟机内安装必要的软件。这种方法的美妙之处在于,您不必传输整个虚拟机,只需将
Vagrantfile
和一些烹饪书/食谱置于版本控制之下即可。在这之后,您将能够在任何新机器上仅使用一个命令,
vagrant up
重新创建您的环境。我阅读了您的帖子,想知道是否有解决方案可以在使用外部mongoDb之后删除EROFS错误!?