Tengo un archivo de configuración para los hosts virtuales apache2. Para cada virtuahost tengo un archivo conf que se ve así:
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>
¿Cómo puedo especificar miDominio en un solo lugar y reutilizar esta cadena? es decir
mydomain = "www.SomeDomainIHave.com"
La idea es que especifique el dominio en la parte superior del archivo para evitar errores más abajo.
Espero que esto tenga sentido.
Gracias.
Respuesta1
Alternativamente, si la mayoría de sus vhosts siguen plantillas similares, puede usar mod_macro. Recientemente configuré esto para una instalación de Apache con más de 200 vhosts similares y está funcionando de maravilla.
Su ejemplo se reescribiría 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 la macro: ( /etc/apache2/sites-available/drupal.sites.conf )
Include /etc/apache2/macro.d/drupal.vhost.conf
Use drupal0 mydomain.co.uk
Respuesta2
Directamente no puedes. Sin embargo, si tiene muchos de esos parámetros que desea establecer, entonces un enfoque basado en plantillas puede ser suficiente. Utilice m4/sed/ruby/python para sustituir variables en sus archivos. La desventaja es que debes tener un proceso para regenerar los archivos cuando cambias algo, pero eso puede automatizarse.
Respuesta3
Eche un vistazo a las herramientas de gestión de configuración comoMarionetaoCocinero. Estos le permitirán definir plantillas de archivos de configuración y reconstruirlas cuando realice cambios en la configuración. Luego puede definir configuraciones genéricas, como el nombre de dominio, y reutilizarlas en sus plantillas. Luego, estas herramientas implementarían una nueva configuración y reiniciarían sus servicios web. Simplemente no reinventes la rueda nuevamente escribiendo tu propia herramienta de administración de configuración (¿quién no lo ha hecho todavía, por cierto? :))
Respuesta4
No es posible utilizar variables como ya dijo Keltia, pero quizásmod_vhost_aliaspuede ayudarte con tu 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
en este ejemplo se sustituirá por www.commercial.isp.com
.
aquíson algunos ejemplos más.