无法访问Vagrant虚拟主机/共享文件夹

问题描述 投票:3回答:1

我目前有一个带有CentOS 7的流浪盒。在我的Vagrantfile中,我有以下配置:

config.vm.box = "centos/7"
config.vm.provision :shell, path: "provision.sh"
config.vm.network "private_network", ip: "192.168.50.4"
# config.vm.synced_folder ".", "/vagrant"

我知道默认情况下,vagrant共享包含Vagrantfile的文件夹的内容。可以在VM内的/vagrant文件夹中找到它们。

我想要访问的代码位于与Vagrantfile相同的文件夹中。我可以在/vagrant/api/上的VM内部到达它。

我的目标是能够达到我机器内的api索引。我正在尝试为此效果创建一个虚拟主机。

在我的配置文件中,我有以下内容:

if [ $(grep -c 'api' /etc/httpd/conf/httpd.conf) -eq 0 ]; then
cat >> /etc/httpd/conf/httpd.conf <<EOM
<VirtualHost *:8081>    
    DocumentRoot "/vagrant/api/public"
    <Directory "/vagrant/api/public">
        Options +Indexes +FollowSymLinks
        DirectoryIndex index.php
        Order allow,deny
        Allow from all
        AllowOverride All
        Require all granted

        Header set Access-Control-Allow-Origin "*"
        Header always set Access-Control-Allow-Headers "X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding"
        Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT, UPDATE"
        Header merge  Vary "Origin"
    </Directory> 

    ServerName vagrant.api.local:8081
    ServerAlias vagrant.api.local
    SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
</VirtualHost>
EOM
fi

service httpd restart;

我将192.168.50.4 vagrant.api.local添加到/etc/hosts文件中(在我的机器上和VM上)。

然而,当我尝试在浏览器上访问vagrant.api.local:8081时,我得到了This site can’t be reached. vagrant.api.local refused to connect.

我可以ping这个url并获得正面结果,0%丢包。

关于如何在这个网址上加载/vagrant/api/public/index.php文件的任何想法?我究竟做错了什么?

php apache centos vagrant virtual-machine
1个回答
2
投票

我会回答这个问题

我的目标是能够达到我机器内的api索引

因此默认情况下你是正确的,vagrant与VM的Vagrantfile文件夹共享包含/vagrant的本地文件夹的内容。

但有一件事是框覆盖Vagrantfile的配置,以及centos/7框的情况。

如果你查看你的$HOME/.vagrant.d/boxes/centos-VAGRANTSLASH-7/<box_version>/virtualbox,你会发现声明的Vagrantfile框

Vagrant.configure("2") do |config|
  config.vm.base_mac = "525400261060"
  config.vm.synced_folder ".", "/vagrant", type: "rsync"
end

由于文件夹的类型为rsync,因此它只能从运行到Vagrant启动的机器的一次性单向同步。

最简单的方法是删除rsync文件夹类型并使用默认的虚拟框同步文件夹机制,该机制将提供(接近)实时双向同步。

© www.soinside.com 2019 - 2024. All rights reserved.