Бродячие виртуальные хосты / общие папки недоступны - PullRequest
3 голосов
/ 04 апреля 2019

У меня сейчас есть бродячая коробка с 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. С ними можно связаться в папке /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 в браузере, я получаю This site can’t be reached. vagrant.api.local refused to connect.

Я могу пропинговать этот URL и получить положительные результаты, потеря пакета 0%.

Есть идеи, как мне загрузить файл /vagrant/api/public/index.php по этому URL? Что я делаю не так?

1 Ответ

2 голосов
/ 05 апреля 2019

Я отвечу на это

Моя цель - достичь индекса api внутри моей машины

, поэтому вы правыпо умолчанию 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 и использование папки синхронизации виртуальной коробки по умолчаниюмеханизм, обеспечивающий (почти) двунаправленную синхронизацию в реальном времени.

...