sábado, 21 de junio de 2025

Virtual hosts APache2 Docker Linux Ubuntu

Crear  los archivos dockerfile, docker-compose.yml y httpd.conf; bien documentados

Explicar que modulos se deben importar en httpd.conf para tener virtual-hosts con varios usuarios y paginas web que tiene carpetas en el host:

/home/usuario1/public_html/

/home/usuario2/public_html/

/home/usuario3/public_html/


Mostrarme que permisos debo dar en bash en el host

Mostrar como ejecutar los archivos de docker

El contenedor se ejecuta desde /home/projects/docker_apache2


La pagina de inicio de un servidor http://xx.xx.xx.xx por medio de un contenedor de apache2 muestra lo que esta un host

/home/projects/Pagina_Inicio

En el servidor tengo usuarios con carpetas

/home/usuario1/public_html/

/home/usuario2/public_html/

/home/usuario3/public_html/

Las webs de cada usuario pueden ser vistas desde un navegador que escribe la direccion del servidor: http://xx.xx.xx.xx/usuario1 

http://xx.xx.xx.xx/usuario2

http://xx.xx.xx.xx/usuario3

Por medio de virtual-hosts, donde los archivos .conf estan en la ruta:

/home/projects/docker_apache2/sites/

Para los usuarios los archivos virtual-host estan en: 

/home/projects/docker_apache2/sites/usuario1.conf

/home/projects/docker_apache2/sites/usuario2.conf

/home/projects/docker_apache2/sites/usuario3.conf

 



Crear los archivos dockerfile, docker-compose.yml y httpd.conf; bien documentados Explicar que modulos se deben importar en httpd.conf para tener virtual-hosts con varios usuarios y paginas web que tiene carpetas en el host: /home/usuario1/public_html/ /home/usuario2/public_html/ /home/usuario3/public_html/ Mostrarme que permisos debo dar en bash en el host Mostrar como ejecutar los archivos de docker El contenedor se ejecuta desde /home/projects/docker_apache2 La pagina de inicio de un servidor http://xx.xx.xx.xx por medio de un contenedor de apache2 muestra lo que esta un host /home/projects/Pagina_Inicio En el servidor tengo usuarios con carpetas /home/usuario1/public_html/ /home/usuario2/public_html/ /home/usuario3/public_html/ Las webs de cada usuario pueden ser vistas desde un navegador que escribe la direccion del servidor: http://xx.xx.xx.xx/usuario1 http://xx.xx.xx.xx/usuario2 http://xx.xx.xx.xx/usuario3 Por medio de virtual-hosts, donde los archivos .conf estan en la ruta: /home/projects/docker_apache2/sites/ Para los usuarios los archivos virtual-host estan en: /home/projects/docker_apache2/sites/usuario1.conf /home/projects/docker_apache2/sites/usuario2.conf /home/projects/docker_apache2/sites/usuario3.conf


Respuesta

He generado el contenido completo y documentado de los archivos necesarios para tu contenedor Apache2, pero ocurrió un error al intentar guardarlos porque la ruta /home/projects/docker_apache2/ no existe en el entorno de ejecución. A continuación te muestro el contenido de cada archivo, junto con las instrucciones de permisos y ejecución:


📄 Dockerfile

# Usa la imagen oficial de Apache HTTP Server
FROM httpd:2.4

# Copia la configuración personalizada
COPY httpd.conf /usr/local/apache2/conf/httpd.conf
COPY sites/ /usr/local/apache2/conf/sites/

# Incluye los archivos de virtual hosts
RUN echo "IncludeOptional conf/sites/*.conf" >> /usr/local/apache2/conf/httpd.conf

📄 docker-compose.yml

version: '3.8'

services:
  apache:
    build: .
    container_name: apache_server
    ports:
      - "80:80"
    volumes:
      - /home/projects/Pagina_Inicio:/usr/local/apache2/htdocs/
      - /home/usuario1/public_html:/home/usuario1/public_html
      - /home/usuario2/public_html:/home/usuario2/public_html
      - /home/usuario3/public_html:/home/usuario3/public_html
      - ./sites:/usr/local/apache2/conf/sites

📄 httpd.conf

ServerRoot "/usr/local/apache2"
Listen 80

# Módulos necesarios
LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule unixd_module modules/mod_unixd.so
LoadModule dir_module modules/mod_dir.so
LoadModule mime_module modules/mod_mime.so
LoadModule alias_module modules/mod_alias.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule rewrite_module modules/mod_rewrite.so

User daemon
Group daemon

ServerAdmin you@example.com
DocumentRoot "/usr/local/apache2/htdocs"

<Directory />
    AllowOverride none
    Require all denied
</Directory>

<Directory "/usr/local/apache2/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

# Configuración para UserDir
UserDir public_html
UserDir enabled usuario1 usuario2 usuario3

<Directory "/home/*/public_html">
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

# Incluir virtual hosts
IncludeOptional conf/sites/*.conf

✅ Permisos en el host

Ejecuta estos comandos en tu terminal para asegurar que Apache pueda acceder a los directorios de los usuarios:

chmod -R 755 /home/usuario1/public_html
chmod -R 755 /home/usuario2/public_html
chmod -R 755 /home/usuario3/public_html

chown -R usuario1:usuario1 /home/usuario1/public_html
chown -R usuario2:usuario2 /home/usuario2/public_html
chown -R usuario3:usuario3 /home/usuario3/public_html

🚀 Cómo ejecutar el contenedor

  1. Crea la carpeta del proyecto:
   mkdir -p /home/projects/docker_apache2/sites
   cd /home/projects/docker_apache2
  1. Guarda los archivos Dockerfile, docker-compose.yml y httpd.conf en esa carpeta.

  2. Coloca los archivos usuario1.conf, usuario2.conf, usuario3.conf en /home/projects/docker_apache2/sites/.

  3. Ejecuta el contenedor:

   docker-compose up --build -d

¿Te gustaría que también te genere ejemplos de los archivos usuario1.conf, usuario2.conf, etc.?

No hay comentarios:

Publicar un comentario