我的设置
我想设置一个 Ubuntu VM 作为开发的 Web 服务器。
原因
我希望拥有一个尽可能接近实际生产环境的开发环境。
问题
上述设置失败。当我导航到http://project1.localhost:8888
我尝试过
我确实使用以下方式添加www-data
到组中vboxsf
sudo adduser www-data vboxsf
在尝试以下任何操作之前。
- 如上所述,我尝试了上述设置。网页上出现文件未找到错误。
- 我尝试了上述设置,但从
/var/virtual/project1
到 的符号链接/media/sf_WebApps/project1
在网页上出现未找到文件的错误。 - 我尝试将
/media/sf_WebApps
from改为root:vboxsf
towww-data:vboxsf
。但不行。 - 我尝试将其 chmod
/media/sf_WebApps
为 755。不可能。 - 我复制了一份
/media/sf_WebApps/project1
并将副本放在里面/var/virtual
。这有效,但这不是我想要的。 为什么不?因为我想轻松使用我的主机程序(如 github mac app 和 sublime text editor)来更改代码库并在浏览器访问时看到它反映出来。
答案1
答案已经找到来自 serverfault。
基本上,您需要以另一个用户身份挂载(已挂载的)共享文件夹。
类型
mount -t vboxsf SHARE_NAME -o rw,dmode=777,gid=GROUP_ID,uid=USER_ID /path/on/guest
在这种情况下,
mount -t vboxsf WebApps -o rw,dmode=777,gid=GROUP_ID,uid=USER_ID /var/virtual/some_folder_name
如果您希望每次打开客户操作系统时都执行此挂载,请在 /etc/init/SOMETHING.conf 上创建一个文件,内容如下:
description "SOME DESCRIPTION"
start on starting
task
exec mount -t vboxsf WebApps -o rw,dmode=777,gid=GROUP_ID,uid=USER_ID /var/virtual/some_folder_name
找出你的 uid 或 gid
id -u username
id -g username
故障排除:
永远记住首先创建挂载点。
请务必先安装 GuestAdditions。您可以参考http://docs-v1.vagrantup.com/v1/docs/base_boxes.html在“安装 Guest Additions”下。
sudo apt-get install linux-headers-$(uname -r) build-essential
sudo apt-get install dkms -y
sudo mount /dev/cdrom /media/cdrom
sudo sh /media/cdrom/VBoxLinuxAdditions.run
答案2
- 编辑 /etc/group
- 查找包含“vboxsf”的行
- 在冒号后添加账户(如www-data),如果需要添加多个账户,可以用逗号分隔
- 重新登录或重启
答案3
我做了类似于 @KimStacks 解决方案的事情,但无法/etc/init/SOMETHING.conf
在 Ubuntu 18.04 LTS 上工作,即使我改变了start on starting
喜欢start on startup
Stack Overflow 示例。
我发现这些步骤容易得多:
创建永久挂载点(使用此位置而不是
/media
曾经挂载过的位置):sudo mkdir /some/location
获取 uid 和 gid的
www-data
:id www-data
编辑 crontab 文件:
sudo crontab -e
添加
@reboot
一行使其在启动时运行(将USER_ID
和替换GROUP_ID
为前面步骤中的 uid 和 gid):@reboot mount -t vboxsf VirtualBoxFolderShareName /some/location -o uid=USER_ID,gid=GROUP_ID