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

标签 php apache centos vagrant virtual-machine

我目前有一个 CentOS 7 的 vagrant box。在我的 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 的文件夹的内容。这些可以通过虚拟机内的 /vagrant 文件夹访问。

我想要访问的代码位于与 Vagrantfile 相同的文件夹的同一文件夹内。我可以在虚拟机内通过 /vagrant/api/ 访问它。

我的目标是能够访问我机器内的 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 文件(在我的计算机和虚拟机上)。

但是,当我尝试在浏览器上访问 vagrant.api.local:8081 时,我收到无法访问此网站。 vagrant.api.local 拒绝连接。

我可以 ping 这个 url 并得到积极的结果,0% 丢包率。

知道如何在此网址上加载 /vagrant/api/public/index.php 文件吗?我做错了什么?

最佳答案

我会回答这个问题

My goal is to be able to reach the index of the api inside my machine

所以默认情况下你是正确的,vagrant 共享包含 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 文件夹类型并使用默认的 virtualbox 同步文件夹机制,该机制将提供(接近)实时的双向同步。

关于php - Vagrant 虚拟主机/共享文件夹无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55517790/

相关文章:

java - android中获取POST后返回的url

apache - XAMPP 服务器上的 Perl 给出错误 500

php - 使用 MySQL 偏移时间

php - 将 Wordpress sql 值转换为纯文本

java - Apache 公地|池或池 2

linux - 如何在没有网络的情况下在CentOS 6.3上升级开发者工具?

c# - CentOS 服务器上的 ASP .NET 核心控制台应用程序丢弃请求

hadoop - 虚拟机上的centOS "Couldn' t解析代理

php - 警告 : Missing Argument 1

php - 在 Linux 上为 SYMFONY 2 将 Doctrine 2 连接到 MSSQL