Servidor web · 4 min read · Jan 07, 2026

Crea tu propio servidor web con BIND y Apache en CentOS 5 (Simplificado) - Página 2

Saltando de nuevo :) Esta vez un poco más lejos, a la línea 1005, allí deberías ver:

NameVirtualHost *:80

La directiva NameVirtualHost le dice a Apache que queremos usar alojamiento virtual basado en nombres, o en términos más simples, un montón de sitios web que utilizan la misma dirección IP. Agrega un par de líneas en blanco debajo de ‘#NameVirtualHost *:80’ y en la línea justo debajo pon NameVirtualHost y tu nombre de host o dirección IP seguido de :80. El ‘:80’ significa que estamos utilizando alojamiento virtual basado en nombres para el protocolo HTTP.

Así que deberías producir algo como esto:

NameVirtualHost host.website.com:80

Ahora casi hemos terminado de configurar nuestro archivo httpd.conf. Lo único que queda por configurar es si alguien visita nuestro servidor usando la IP en lugar del nombre de dominio, estableceremos nuestro nombre de host predeterminado para que sea visible para esos usuarios. Podemos insertar esto al final del archivo de configuración


    ServerAdmin [email protected]
    DocumentRoot /www
    ServerName 77.77.197.69
    ErrorLog logs/error_log
    CustomLog logs/access_log common

Para mantener nuestro

httpd.conf

más fácil de gestionar, deberíamos agregar esta línea al final del archivo:

Include conf/vhosts/*.conf

Lo que significa que incluiremos todas las entradas .conf de /etc/httpd/conf/vhosts donde almacenaremos los hosts virtuales para nuestros sitios web a medida que los agreguemos. Será más fácil de entender a medida que avancemos. Ok, casi hemos terminado, guarda httpd.conf y sigue adelante.

Creando directorios de sitios web

Ahora deberíamos crear la estructura de directorios del sitio web para gestionar nuestros sitios web adecuadamente. Primero, creemos el directorio principal:

mkdir /www

Ahora estamos haciendo que root sea el propietario de /www:

chown root.root /www

Antes de continuar, necesitamos hacer un ajuste, debemos agregar una zona para host.website.com en nuestro named.conf porque lo usamos como nombre de host en httpd.conf y obtendremos un error si no lo hacemos. Así que deberíamos agregar esto a named.conf

zone "host.website.com" IN {
        type master;
        file "/var/named/host.website.com.db";
};

Y, por supuesto, a continuación está el contenido del archivo:

/var/named/chroot/var/named/host.website.com.db
$TTL 14400
@      86400    IN      SOA     ns1.website.com. [email protected]. (
                2008021501      ; serial, fecha de hoy+hoy
                86400           ; refresco, segundos
                7200            ; reintentar, segundos
                3600000         ; expirar, segundos
                86400 )         ; mínimo, segundos
host.website.com. 86400 IN NS ns1.website.com.
host.website.com. 86400 IN NS ns2.website.com.
host.website.com. IN A 77.77.197.69
localhost.host.website.com. IN A 127.0.0.1

Puedes agregar tantos registros como desees. Antes de reiniciar named, haz un enlace:

ln -s/var/named/chroot/var/named/host.website.com.db /var/named/host.website.com.db
service named restart

Ahora volvemos a la estructura de directorios. Así que hemos agregado una zona para nuestro

website.com

ahora necesitamos un directorio virtual para ello.

cd /www
mkdir website.com
cd website.com
mkdir html
mkdir html/cgi-bin
mkdir databases
mkdir logs

Dado que hemos creado un directorio para nuestro sitio web, todo lo que necesitamos es un usuario que pueda gestionar este nombre de dominio. Podemos hacer eso con:

useradd -d /www/your-domain/ domain_user

o si deseas restringir el acceso a la shell al usuario, usa esto:

useradd -d /www/your-domain/ -s /sbin/nologin domain_user

Después de que se haya agregado el usuario, podemos modificar su contraseña con:

passwd

Este usuario aún no tiene su lugar “hogar” :) que posee, ahora agregamos esto:

cd /www && chown domain_user:domain_user website.com

Si creas un directorio “databases”, entonces necesitarás cambiar el propietario al usuario mysql, de lo contrario MySQL no podrá escribir en los archivos de la base de datos. Todos los directorios, subdirectorios y archivos relacionados con bases de datos deben ser propiedad del usuario mysql y podemos hacer eso con este comando:

cd website.com && chown -R mysql:mysql databases

Con esto completamos la creación de la estructura de directorios del sitio web, ahora lo único que queda por hacer es decirle a Apache dónde está nuestro sitio web y hemos terminado.

Ahora volvamos un poco atrás cuando estábamos configurando httpd.conf, insertamos una línea allí:

Include conf/vhosts/*.conf

Ahora entenderás por qué hicimos eso si no lo sabías ya. Dado que la carpeta aún no existe, deberíamos crearla:

cd /etc/httpd/conf && mkdir vhosts

Ahora entramos en el directorio vhosts:

cd vhosts

y creamos un nuevo archivo para nuestro dominio:

nano website.com.80.conf

Deberíamos insertar lo siguiente en este archivo:


    ServerAdmin [email protected]
    ServerName website.com
    ServerAlias www.website.com
    DocumentRoot /www/website.com/html
    ScriptAlias /cgi-bin/ /www/website.com/html/cgi-bin/
    ErrorLog /www/website.com/logs/error_log
    CustomLog /www/website.com/logs/access_log combined

Finalmente llegamos al punto final ahora cuando le dijimos a apache dónde está el directorio de nuestro sitio web, ahora cada solicitud del navegador para www.website.com se leerá desde /www/website.com/html; allí deberías poner tus archivos, por ejemplo: index.html. Ahora podemos encender nuestro httpd, o reiniciarlo si ya estaba encendido.

service httpd start

o

service httpd restart

Si experimentas algún problema con este tutorial o con la configuración de Apache o BIND, no dudes en contactarme. Estoy seguro de que tuve esos problemas e incluso peores - estaré encantado de ayudar en mi tiempo libre.

Autor

: Emir Ibrahimbegovic

E:

[email protected]

W:

www.green.ba

Gracias a:

Tony Bhimani, Sébastien Wains, Nayyar Ahmad

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.