Eu tenho um arquivo de configuração para hosts virtuais do Apache2. Para cada virtuahost eu tenho um arquivo conf parecido com este:
NameVirtualHost mydomain.co.uk:80
<VirtualHost mydomain.co.uk:80>
DocumentRoot /home/d/r/drupal/web/public_html
ServerName mydomain.co.uk
ServerAlias www.mydomain.co.uk
ErrorLog /var/log/apache2/sites/mydomain.co.uk_error-log
CustomLog /var/log/apache2/sites/mydomain.co.uk_access-log "combined"
# Rewrite the www
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.mydomain.co.uk/?$ [NC]
RewriteRule ^(.*)$ http://mydomain.co.uk$1 [L,R=301]
# Read in the drupal configuration
Include conf.d/drupal6.conf
# Block access while developing
# Include conf.d/beta.conf
</VirtualHost>
Como posso especificar myDomain em um único local e reutilizar essa string. ou seja
mydomain = "www.SomeDomainIHave.com"
A ideia é que eu especifique o domínio no topo do arquivo para evitar erros mais abaixo.
Espero que isso faça sentido.
Obrigado.
Responder1
Alternativamente, se a maioria dos seus vhosts seguirem modelos semelhantes, você poderá usar mod_macro. Recentemente, configurei isso para uma instalação do Apache com mais de 200 vhosts semelhantes e está funcionando perfeitamente.
Seu exemplo seria reescrito como tal: ( /etc/apache2/macro.d/drupal.vhost.conf (
<Macro drupal0 $domain>
NameVirtualHost $domain:80
<VirtualHost $domain:80>
DocumentRoot /home/d/r/drupal/web/public_html
ServerName $domain
ServerAlias www.$domain
ErrorLog /var/log/apache2/sites/$domain_error-log
CustomLog /var/log/apache2/sites/$domain_access-log "combined"
# Rewrite the www
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.$domain/?$ [NC]
RewriteRule ^(.*)$ http://$domain$1 [L,R=301]
# Read in the drupal configuration
Include conf.d/drupal6.conf
# Block access while developing
# Include conf.d/beta.conf
</VirtualHost>
</Macro>
Usando a macro: ( /etc/apache2/sites-available/drupal.sites.conf )
Include /etc/apache2/macro.d/drupal.vhost.conf
Use drupal0 mydomain.co.uk
Responder2
Diretamente você não pode. No entanto, se você tiver muitos parâmetros que deseja definir, uma abordagem baseada em modelo poderá servir. Use m4/sed/ruby/python para substituir variáveis em seus arquivos. A desvantagem é que você deve ter um processo para regenerar os arquivos quando você altera alguma coisa, mas isso pode ser automatizado.
Responder3
dê uma olhada nas ferramentas de gerenciamento de configuração comoFantocheouChefe de cozinha. Isso permitirá que você defina modelos de arquivos de configuração e os reconstrua quando fizer alterações na configuração. Você pode então definir configurações genéricas, como nome de domínio, e reutilizá-las em seus modelos. Essas ferramentas implantariam uma nova configuração e reiniciariam seus serviços web. Só não reinvente a roda novamente escrevendo sua própria ferramenta de gerenciamento de configuração (quem ainda não fez isso, aliás? :))
Responder4
não é possível usar variáveis como Keltia já disse, mas talvezmod_vhost_aliaspode ajudá-lo com seu problema.
<VirtualHost 111.22.33.44>
ServerName www.commercial.isp.com
CustomLog logs/access_log.commercial vcommon
VirtualDocumentRoot /www/commercial/%0/docs
VirtualScriptAlias /www/commercial/%0/cgi-bin
</VirtualHost>
%0
neste exemplo substituirá por www.commercial.isp.com
.
aquisão mais alguns exemplos.