Servidores virtuais en Apache
Crear un servidor virtual
A maneira de crear virtual hosts en Apache Server é creando ficheiros de configuración dentro do seguinte directorio:
/etc/apache2/sites-available/
Os ficheiros de configuración deben ter a extensión .conf.
A creación dun host virtual lévase a cabo coa directiva <VirtualHost> da seguinte maneira:
<VirtualHost *:80>
</VirtualHost>
Todo ficheiro de configuración dun host virtual comeza coas liñas anteriores, pero dependendo do método de virtualización, o resto de directivas van variar. Recordemos que existen tres métodos de virtualización:
Aínda que se poden definir múltiples hosts virtuais nun único ficheiro de configuración utilizando múltiples etiquetas <VirtualHost> nun mesmo ficheiro de configuración, é aconsenllable crear un ficheiro de configuración por cada host virtual que se queira crear.
É dicir, debemos evitar ter un ficheiro como o seguinte:
<VirtualHost *:80>
DocumentRoot /var/www/html
</VirtualHost>
# Este segundo host virtual debería ir nun ficheiro aparte
<VirtualHost *:9000>
DocumentRoot /var/www/html
</VirtualHost>
Hosts virtuais predeterminados
Despois dunha instalación limpa de Apache Server temos dous ficheiros dentro do directorio:
/etc/apache2/sites-available/
├── 000-default.conf
└── default-ssl.conf
Móstranse dous ficheiro .conf, os cales corresponden con dous servidores virtuais.
Para ver o contido de 000-default.conf temos que executar o seguinte comando:
$ cat /etc/apache2/sites-available/000-default.conf
O comando mostra o seguinte:
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Neste ficheiro podemos ver que:
- O servidor virtual está escoitando no porto 80.
- Os ficheiros do sitio web están na ruta
/var/www/html/.
Cando se instala Apache, só trae activado 000-default.conf, o cal está configurado para aceptar petición HTTP e mostrar o que hai no directorio /var/www/html/.
O servidor virtual default-ssl.conf ten a mesma finalidade que 000-default.conf, pero para o protocolo HTTPS. Este host virtual vén desactivado por defecto.
Activar un host virtual
En Apache Server, cando creamos un novo host virtual, temos que crear un novo ficheiro de configuración dentro do directorio /etc/apache2/sites-available/. Crear o ficheiro non é suficiente para ter o servidor virtual dispoñible. Para isto, é necesario habilitalo co seguinte comando:
$ sudo a2ensite example.conf
O comando anterior activa o host virtual do ficheiro de configuración /etc/apache2/sites-available/example.conf.
O comando tamén é válido se se omite a extensión do ficheiro (.conf):
$ sudo a2ensite example
Desactivar un host virtual
Para deshabilitar un host virtual, hai que executar o seguinte comando:
$ sudo a2dissite example.conf
O comando anterior desactiva o host virtual do ficheiro de configuración /etc/apache2/sites-available/example.conf.ç
O comando tamén é válido se se omite a extensión do ficheiro (.conf):
$ sudo a2dissite example
Consultar os hosts virtuais dispoñibles
Para consultar os hosts virtuais dispoñibles débese executar o seguinte comando:
$ ls /etc/apache2/sites-available
O directorio /etc/apache2/sites-available recoñe todos os ficheiros de configuración de servidores virtuais que están dispoñibles para activar ou desactivar. Neste directorio móstranse tanto aqueles que están activados como os que non.
Este comando é útil para ver que hosts virtuais teño dispoñibles para activar antes de habilitar un.
Consultar os hosts virtuais activados
Para consultar os hosts virtuais activados débese executar o seguinte comando:
$ apache2 -S
Exemplo de saída do comando
$ apache2 -S
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
VirtualHost configuration:
*:80 is a NameVirtualHost
default server 127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost 127.0.1.1 (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost example.local (/etc/apache2/sites-enabled/sitio-web.conf:1)
ServerRoot: "/etc/apache2"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/var/log/apache2/error.log"
Mutex default: dir="/var/run/apache2/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex watchdog-callback: using_defaults
PidFile: "/var/run/apache2/apache2.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="www-data" id=33 not_used
Group: name="www-data" id=33 not_used
Se o comando apache2 -S non che mostra información, executa o seguinte:
$ source /etc/apache2/envvars
Outra forma de ver os hosts virtuais activados é a seguinte:
$ ls /etc/apache2/sites-enabled
Saída do comando
$ ls /etc/apache2/sites-enabled
000-default.conf sitio-web.conf
Se o comando anterior non mostra ningunha saída é que non hai ningún servidor virtual activado.
Non confundir o directorio /etc/apache2/sites-available co directorio /etc/apache2/sites-enabled. O primeiro directorio contén os servidores virtuais dispoñibles (tanto activados como non), mentres que o segundo só contén os servidores activados.