Я придерживаюсь несколько иного подхода к тому, что, по моему мнению, является по сути той же проблемой. У меня есть только один файл настроек виртуального хоста, и я задаю там все свои настройки. Затем я использую разные имена хостов для доступа к различным проектам / средам. Например,
<VirtualHost *:80>
DocumentRoot "/var/www/html/project1/develop"
ServerName project1-develop
ErrorLog "logs/project1-develop-error.log"
CustomLog "logs/project1-develop-access.log" common
# other configuration settings...
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/www/html/project1/staging"
ServerName project1-staging
ErrorLog "logs/project1-staging-error.log"
CustomLog "logs/project1-staging-access.log" common
# other configuration settings...
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/www/html/project1/production"
ServerName project1-production
ErrorLog "logs/project1-production-error.log"
CustomLog "logs/project1-production-access.log" common
# other configuration settings...
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/www/html/project2/develop"
ServerName project2-develop
ErrorLog "logs/project2-develop-error.log"
CustomLog "logs/project2-develop-access.log" common
# other configuration settings...
</VirtualHost>
# repeat for as many hosts as necessary...
Затем в /etc/hosts
я определяю записи DNS для тех имен хостов, которые указывают на localhost (где я использую apache, вы просто используете любой сервер, который используете):
127.0.0.1 project1-develop
127.0.0.1 project1-staging
127.0.0.1 project1-production
127.0.0.1 project2-develop
# repeat as necessary
И теперь я могу получить доступ к каждой из моих сред, например, http://project1-develop
, http://project1-staging
и т. Д.
Я понимаю, что это не ответ на ваш точный вопрос об использовании переменных среды, но я надеюсь, что это все равно полезно.