首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >流浪汉,NFS,端口80和sudo

问流浪汉,NFS,端口80和sudo
EN

Stack Overflow用户
提问于 2013-03-22 12:19:16
回答 1查看 1.1K关注 0票数 2

我有一个Vagrant环境,我非常想使用NFS在端口80上启动它。前者是因为它是Drupal和非标准端口导致了一些心痛,后者纯粹是为了性能。要做到这一点,据我所知,我需要使用sudo。没问题,sudo vagrant up是的。

我遇到的问题是,应用程序生成文件,大概是因为VM是在sudo下运行的,这些文件是由主机系统(OS )上的root拥有的,所以当应用程序试图将文件写入服务器时,权限被拒绝。

我修改了Vagrant文件,将整个项目目录设置为777。为了便于披露,下面是来自我的Vagrantfile的相关(和非标准的)片段。

代码语言:javascript
复制
config.vm.network :hostonly, "192.168.33.10"
config.vm.forward_port 80, 80
# config.vm.share_folder( "v-root", "/vagrant", ".", :nfs => (RUBY_PLATFORM =~ /mingw32/).nil?, :extra => 'dmode=777,fmode=777' )
config.vm.share_folder( "v-root", "/vagrant", ".", :extra => 'dmode=777,fmode=777' )
config.vm.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/v-root", "1"]
Vagrant::Config.run do |config|
  config.vm.provision :shell, :path => "provision.vm.sh"
end

我看到的是这样的情况:

  • 当我从存储库的一个干净的克隆中启动时,没有问题。耶。
    • 但是,我确实注意到,当从VM本身查看/vagrant的内容时,并没有给出完整的perms (777)。这些变化之前的情况就是如此。

​

  • 当我停下来后启动.
    • 无法写入生成的文件。
    • /vagrant中的文件(同样,在VM中查看时)是由dialout用户拥有的。这似乎是一个NFS的事情,所以没有问题,只要我能让第一项工作。

​

更新

看起来问题可能是我对NFS工作原理的理解。我需要尝试纠正这一点,但是如果我只是删除NFS组件(现在是注释&在上面的片段中被替换),事情似乎更有用了。仍然很想知道其他人是否已经/如何处理了这个问题。

EN

回答 1

Stack Overflow用户

发布于 2014-06-20 10:19:07

我没有执行sudo vagrant up (这并不理想),而是执行以下操作:

代码语言:javascript
复制
if Vagrant::Util::Platform.windows?
    config.vm.network :forwarded_port, host: 80, guest: 8080
elsif Vagrant::Util::Platform.darwin?
    config.vm.network :forwarded_port, host: 8080, guest: 80
    config.vm.network :forwarded_port, host: 8443, guest: 443
    config.trigger.after [:provision, :up, :reload] do
      puts " ==> Sudo Password (to forward ports) "
      system('echo "
    rdr pass on lo0 inet proto tcp from any to 127.0.0.1 port 80 -> 127.0.0.1 port 8080  
    rdr pass on lo0 inet proto tcp from any to 127.0.0.1 port 443 -> 127.0.0.1 port 8443  
    " | sudo pfctl -f - > /dev/null 2>&1; echo "==> Fowarding Ports: 80 -> 8080, 443 -> 8443"')  
    end
else
    config.vm.network :forwarded_port, host: 8080, guest: 80
    config.vm.network :forwarded_port, host: 8443, guest: 443
    puts " ==> Sudo Password (to forward ports) "
    system("sudo ipfw add 100 fwd 127.0.0.1,8080 tcp from any to me 80;
    sudo ipfw add 101 fwd 127.0.0.1,8443 tcp from any to me 443")
end

if Vagrant::Util::Platform.darwin?
    config.trigger.after [:halt, :destroy] do
        system("sudo pfctl -f /etc/pf.conf > /dev/null 2>&1; echo '==> Removing Port Forwarding'")
    end
end

(该节的linux部分不像OS (“达尔文”)节那样整洁,该节删除了在vagrant halt上转发的端口)

所做的工作是在主机上设置端口8080 (和8443),以便在客人上转发到80,然后使用sudo将主机上的端口80转发到主机上的端口8080。

这意味着只有端口80转发是作为根进行的,而不是整个漂泊过程,并且通常会使我更快乐。

注意:如果skype将自己绑定到端口80和443 (默认情况下),这仍然会在桌面计算机上失败。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15570148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档