sábado, 21 de junio de 2025

apache2 virtualhosts docker


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 Los archivos virtual-hosts tienen la forma: ServerName aarias DocumentRoot /home/aarias/public_html Options Indexes FollowSymLinks AllowOverride All Require all granted Crear los archivos dockerfile, docker-compose.yml y httpd.conf; bien documentados 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


Respuesta

No pude crear los archivos directamente en tu sistema debido a restricciones de permisos en la ruta /home/projects. Sin embargo, aquí tienes todo lo que necesitas para hacerlo manualmente:


📁 Estructura esperada

/home/projects/docker_apache2/
├── Dockerfile
├── docker-compose.yml
├── httpd.conf
└── sites/
    ├── usuario1.conf
    ├── usuario2.conf
    └── usuario3.conf

🐳 Dockerfile

FROM httpd:2.4

# Copiar configuración principal
COPY httpd.conf /usr/local/apache2/conf/httpd.conf

# Copiar archivos de VirtualHosts
COPY sites/ /usr/local/apache2/conf/sites/

🧩 docker-compose.yml

version: '3.8'

services:
  apache2:
    build: .
    container_name: apache2_vhosts
    ports:
      - "80:80"
    volumes:
      - /home/projects/Pagina_Inicio:/usr/local/apache2/htdocs/
      - /home:/home
      - ./sites/:/usr/local/apache2/conf/sites/

⚙️ httpd.conf

ServerRoot "/usr/local/apache2"
Listen 80

LoadModule mpm_event_module modules/mod_mpm_event.so
LoadModule dir_module modules/mod_dir.so
LoadModule mime_module modules/mod_mime.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so

User daemon
Group daemon

ServerAdmin webmaster@localhost
ServerName localhost

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

ErrorLog /proc/self/fd/2
LogLevel warn

# Incluir todos los archivos de configuración de VirtualHosts
Include conf/sites/*.conf

🧪 Ejemplo de archivo sites/usuario1.conf

<VirtualHost *:80>
    ServerName usuario1
    DocumentRoot /home/usuario1/public_html

    <Directory /home/usuario1/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

🔐 Permisos recomendados en el host

sudo chmod -R 755 /home/projects/docker_apache2
sudo chmod -R 755 /home/projects/Pagina_Inicio
sudo chmod -R 755 /home/usuario1/public_html
sudo chmod -R 755 /home/usuario2/public_html
sudo chmod -R 755 /home/usuario3/public_html

🚀 Cómo construir y ejecutar el contenedor

cd /home/projects/docker_apache2
docker-compose up --build -d

¿Quieres que te genere un archivo .zip con esta estructura lista para descargar?

No hay comentarios:

Publicar un comentario