Crear o teu primer virtual host en Apache HTTP nun Fedora 21

Logo coa pluma do proxecto Apache HTTP

aviso antes de comezar:

Esto é para un servidor de probas locais, se omiten os temas de seguridade e permisos para facelo post o máis breve posible e obter un resultado rápido. SElinux, ACLs, usuarios root apache, permisos de escritura e lectura, son temas de seguridade a ter en conta, mais neste post os omitirei.

No meu caso, quero servir varias webs en desenrolo dende a miña Banana PI que sexan accesibles dende a miña rede local, se isto fora Debian Wheezy a tarefa sería relativamente sinxela, mais en Fedora 21 a cousa pódese complicar algo por motivos de seguridade.

Instalando o servidor Apache HTTP

Pra instalalo servidor Apache ( a partir de agora me referirei a él como “Apache” ) podemos facelo dende os repositorios.

instalando o paquete httpd:
sudo dnf install httpd

Creando un host virtual

Polo que poiden averiguar das políticas de seguridade SElinux, estas interfiren no control dos permisos dos directorios aos que httpd pode ter acceso.

Deixándonos por defecto o directorio:
/var/www/html

Para poder traballar nel. Neste post non explicarei cómo configurar SElinux nen habilitar outras rutas, xa que queremos facer rápido un servidor web virtual para a nosa contorna de probas.

Entón o que faremos será crear un directorio dentro de /var/www/html para usalo como servidor virtual:
sudo mkdir /var/www/html/PROBAS

Se revisamolo arquivo de configuración do httpd en /etc/httpd/httpd.conf veremos que cargará os ficheiros de configuración extra do subdirectorio /etc/httpd/conf.d/

É onde crearemos o noso arquivo de configuración para o servidor virtual
# vi /etc/httpd/conf.d/servidor_probas.conf
En dito arquivo de configuración engadiremolas seguintes directivas apache:
<VirtualHost *:80>
  DocumentRoot "/var/www/html/PROBAS"
  ServerName <nome_servidor_virtual>
</VirtualHost>
Unha vez gardádolos cambios, procederemos a reinicialo servizo httpd:
sudo systemctl restart httpd.service

Se todo vai ben, non debería amosar ningunha saida.

Agora xa temos configurado o noso virtualhost.

Probando que funciona o noso servidor virtual

Primeiro poñemos un arquivo .html na raiz do mesmo:
sudo vi /var/www/html/PROBAS/index.html
Cuxo contido pode ser este:
<html>
<head>
  <h1>Ola mundo! dende o servidor virtual de probas.</h1>
</head>
<body>
  <h1>Ola mundo!</h1>
  <p>Saudos dende o servidor de probas</p>
  <p>Visitade <a href='http://deliodc.com'>deliodc.com ;)</a>
</body>
</html>

Engadir o servidor virtual a /etc/hosts

Para unha proba local rápida asociaremos o noso nome de host virtual coa nosa IP local.

Nas máquinas que vaian ter acceso a él:
sudo vi /etc/hosts
#... outras ip
127.0.0.1 <nome_host_virtual>

Tamén o podemos engadir ao final da primeira liña, onde “localhost” se estamos na máquina que contén o servidor http.

Probando a acceder a nosa nova web

Agora que o temos, se estamos dende unha terminal e conectados por SSH a forma máis rápida para probalo pode ser usando curl, e así simular unha navegación web.

É opcional, mais se queres probalo podes instalar curl con:
sudo dnf install curl
Descargando a web do servidor virtual:
curl <nome_servidor_virtual>

Con isto obteríamolo código da web por terminal, demonstrándonos que o servidor virtual funciona.

Permitirla conexión remota a nosa web dende a nosa LAN

Salvo que teñades aberto o porto 80 no voso router hacia a IP local do voso servidor de probas, esto só debería funcionar na rede local, cómo en calquer outra contorna de probas.

O que precisamos é habilitar unha norma no firewall que permita o paso das conexión a través do porto 80, deixando a norma cómo permanente para que sexa accesible ainda habendo reiniciado o equipo servidor.

En Fedora 21:
# firewall-cmd --add-service=http --permanent
# firewall-cmd --reload
Para comprobar que a norma se definiu correctamente:
# iptables -L | grep http
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http ctstate NEW

Agora xa se aceptan conexións para http.

Configuralos clientes que se conectarán a nosa web de probas

Pra vela web nos equipos clientes, dende por exemplo o noso Firefox, precisamos editar o /etc/host en cada cliente ( a falta de usares un servidor DNS ).

Polo tanto, facémolo mesmo que no host servidor, só que engadindo a IP do servidor en cada equipo cliente que o precise:
# ... resto de ips
<ip_servidor_probas> <nome_servidor_probas>
E con esto, xa podemos facer curl ou directamente dende o navegador acceder a dirección:
http://<nome_servidor_probas>

E listo! agora xa telo básico para que funcione o teu servidor virtual de probas.