У меня две среды разработки: ПК на работе (env1), ноутбук дома (env2). Обе машины работают под управлением Ubuntu 15.10 с Apache 2.4.12. После завершения проект следует развернуть на общедоступном веб-сервере (env3). Я использую Git для контроля версий и Bitbucket для управления распределенным репозиторием.
Мой проект - это сайт на WordPress. Следовательно, я добавляю корневой каталог WordPress, несколько дополнительных исходных каталогов и последний SQL-файл дампа базы данных Mysql в репозиторий разработки, над которым я сейчас работаю. Если я извлекаю и проверяю последние обновления ветки в другой среде, я также запускаю файл дампа базы данных в локальной базе данных. Таким образом, среды разработки всегда остаются согласованными, включая весь контент и изменения настроек, внесенные в WordPress через бэкэнд администратора.
Однако имена серверов остаются разными. WP (и я предполагаю, что другие веб-приложения тоже) имеют параметры конфигурации, такие как имя хоста, которые хранятся в базе данных, но фактически различаются в разных средах. Env1 может работать с частным IP-адресом, например 192.168.xxx.yy, в то время как env2 может не быть подключен к локальной сети, и, таким образом, прослушивать только localhost / 127.0.0.1, а env3 потребуется официальное имя хоста, например mydomain.com.
Мой вопрос: как я могу настроить веб-серверы Apache на env1 и env2, чтобы они использовали какое-то искусственное имя хоста, скажем localdevname для соответствующих виртуальных хостов? Итак, я мог установить конфигурацию WP hostname = localdevname:91
и вызовите localdevname: 91 в env1, который преобразуется в 192.168.xxx.yy: 91, а localdevname: 91, вызванный в env2, преобразуется в localhost: 91?
Я нашел похожий вопрос Вот. Но единственный ответ не решает мою проблему. Кроме того, я безуспешно поиграл с директивами ServerName, ServerAlias, VirtualHostName.
Я бы рекомендовал создать другой /etc/apache2/conf-available/network.conf
файл для каждой среды (и a2enconf
Это). Эти файлы могут выглядеть так:
/etc/apache2/conf-available/network.conf
на хосте env1<VirtualHost 192.168.1.1:91>
ServerName localdevname
SetEnv environment env1
SetEnv dbserver 192.168.1.1
Include /etc/apache2/sites-available/wordpress-project.conf
</VirtualHost>
/etc/apache2/conf-available/network.conf
на хосте env2<VirtualHost 127.0.0.1:91>
ServerName localdevname
SetEnv environment env2
SetEnv dbserver 127.0.0.1
Include /etc/apache2/sites-available/wordpress-project.conf
</VirtualHost>
/etc/apache2/conf-available/network.conf
на производственном хосте<VirtualHost 11.22.33.44:80>
ServerName mydomain.com
SetEnv environment prod
SetEnv dbserver mysql-prod.mydomain.com
Include /etc/apache2/sites-available/wordpress-project.conf
</VirtualHost>
Ваш wordpress-project.conf
и файлы конфигурации WordPress могут быть идентичны на всех хостах. Они могут использовать переменные среды для изменения своего поведения.
Кроме того, вы можете найти mod_macro быть полезным.
Вам нужно будет настроить свой /etc/hosts
и / или локальную конфигурацию DNS, чтобы localdevname
разрешите так, как хотите.