У меня установлен Vagrant и работает CentOS 6.5 x64, и он отлично работает. Нет проблем с запуском нескольких сайтов на одной виртуальной машине. Все сайты запускаются из папки /var/www/public, за исключением PhpMyAdmin, который запускается из папки /var/www/html. Я пытаюсь использовать vagrant share, чтобы получить доступ к любому из запущенных сайтов vhost. Проблема в том, что vagrant share отображает только содержимое папки /var/www/html.
Есть ли что-то еще, что мне нужно сделать, чтобы получить доступ к моей недавно созданной папке /var/www/public? Я попытался отредактировать файл hosts на другом компьютере, чтобы узнать, могу ли я перенаправить любой из URL-адресов, которые я назначил этим сайтам, на текущий адрес «бродячего общего ресурса», но это не работает. Я просто лично в недоумении, что мне делать дальше.
Это моя базовая установка. Vagrant версии 1.5.4, VirtualBox версии 4.3.8, Windows 7 x64, файл конфигурации от PuPHPet, но сильно настроенный после загрузки для добавления файлов vhosts, ssh config, mysql и bash.
Надеюсь, кто-то еще, возможно, столкнулся с этой проблемой. У кого-нибудь есть хорошее направление, в котором я могу повернуть?
Спасибо всем,
c0p
САМООБНОВЛЕНИЕ
У меня есть значительный прогресс в моем собственном вопросе. Смысл того, что я делаю, - разрешить доступ к чужому сайту с моей машины Vagrant. Мне не нужно, чтобы они постоянно имели полный доступ, а просто просматривают вещи как есть и сообщают мне о любых изменениях, которые им могут понадобиться. Вы знаете, стандартные вещи разработчиков. Итак, вот что я придумал.
Изучая Интернет в целом, я наткнулся на эту ссылку: https://groups.google.com/forum/#!topic/vagrant-up/IcEl9-V9wsU
Этот парень использует Nginx и, похоже, задает тот же вопрос, что и я, но использует другой веб-сервер. Пожалуйста, взгляните на эту страницу, если вы столкнулись с чем-то подобным с Nginx. Там у него есть ответ. Я ничего не знаю о Nginx, но все же смог кое-что экстраполировать из того, что мне было нужно.
Итак, что я узнал с этой страницы, так это то, что как только он получил необычную ссылку с сайта Vagrant, он быстро отредактировал свои файлы конфигурации для Nginx и перезапустил веб-сервер. Теперь сумасшедший URL-адрес указывал на расположение файла виртуальных хостов и заставлял страницу, которую он хотел отобразить, действительно появляться, а не просто отображать страницу «Добро пожаловать» по умолчанию.
Я подумал об этом некоторое время и решил отредактировать свой собственный конфиг и посмотреть, что произойдет.
Я использую CentOS, поэтому я отредактировал файл /etc/httpd/conf/httpd.conf.
Примерно в середине этого файла есть строка с комментариями #Listen 80. Сразу после этой строки (или, если хотите, через пробел) я добавил следующее:
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot /var/www/public/sitename
ServerName hungry-lovebird-7142.vagrantshare.com
ServerAlias hungry-lovebird-7142
ErrorLog /var/www/www.sitename.dev-error_log
CustomLog /var/www/www.sitename.dev-access_log common
</VirtualHost>
Я указал DocumentRoot на папку сайта, к которому я хочу получить доступ, и установил для ServerName и ServerAlias ссылку vagrant share. Затем я сохранил файл и перезапустил Apache с помощью sudo service httpd restart.
Затем я вернулся к Firefox (Windows 7) и обновил странную страницу vagrantshare.com, на которую я уже заходил до редактирования этого файла. На самом деле он извлек содержимое папки sitename, которую я указал в файле httpd.conf. Так это работает! Блин круто!
Единственная проблема, с которой я столкнулся, заключается в том, что я получал это предупреждение при перезапуске Apache:
Stopping httpd: [ OK ]
Starting httpd: [Wed May 21 00:11:37 2014] [warn] NameVirtualHost *:80 has no Vi
rtualHosts
Apache запускался нормально, но я не знал, что делать с этим предупреждением. Позже я просто удалил часть NameVirtualHost *:80 из того, что добавил, и перезапустил Apache. На этот раз вообще без предупреждений.
Поймите, что это позволяет мне показывать клиенту обновления только для отдельного сайта. Это работало как для статических сайтов, так и для сайтов WordPress. Я просто изменил, где ссылка vagrantshare.com искала файлы. Я смог перейти на несколько сайтов, отредактировав файл httpd.conf и перезапустив Apache в рамках одного и того же сеанса vagrant share (время ожидания истекло). Я использую Windows, поэтому у меня одновременно были запущены две копии git-bash(msysgit). Один хостит сеанс vagrant share, а другой принимает изменения в httpd.conf после vagrant ssh входа в виртуальную машину.
Если вы собираетесь использовать это для какого-либо сайта WordPress, вам также потребуется отредактировать таблицу wp_options для этого сайта. Измените значения siteurl и home в столбце option_value на полный URL-адрес ссылки, предоставленной вам vagrant share. Вы также можете просто отредактировать эти значения в панели администратора, но я намного быстрее с MySql, поэтому я выбрал этот маршрут.
Ура! Ок, отлично. Я добился почти того, с чего хотел начать. Надеюсь, кто-нибудь сможет пролить свет на то, почему то, что я сделал, действительно работает. Я только что сделал перенаправление для этого адреса?
Кстати, когда вы закончите работу с vagrant share, не забудьте закомментировать эти строки (оставьте их, так как они вам, возможно, понадобятся позже) и перезапустите Apache. Теперь возвращайтесь к работе с тем, что клиент хочет изменить!
В любом случае, я надеюсь, что кто-то сможет ответить на вопрос «почему это сработало», который остается, и я действительно надеюсь, что это поможет кому-то на этом пути.
Спасибо,
c0p