sábado, 21 de junio de 2025

 


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:

<VirtualHost *:80>

    ServerName usuario1

    DocumentRoot /home/usuario1/public_html


    <Directory /home/usuario1/public_html>

        Options Indexes FollowSymLinks

        AllowOverride All

        Require all granted

    </Directory>

</VirtualHost>



<VirtualHost *:80>

    ServerName usuario2

    DocumentRoot /home/usuario2/public_html


    <Directory /home/usuario2/public_html>

        Options Indexes FollowSymLinks

        AllowOverride All

        Require all granted

    </Directory>

</VirtualHost>


<VirtualHost *:80>

    ServerName usuario3

    DocumentRoot /home/usuario3/public_html


    <Directory /home/usuario3/public_html>

        Options Indexes FollowSymLinks

        AllowOverride All

        Require all granted

    </Directory>

</VirtualHost>


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




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 usuario1 DocumentRoot /home/usuario1/public_html Options Indexes FollowSymLinks AllowOverride All Require all granted ServerName usuario2 DocumentRoot /home/usuario2/public_html Options Indexes FollowSymLinks AllowOverride All Require all granted ServerName usuario3 DocumentRoot /home/usuario3/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

Aquí tienes todo lo necesario para configurar tu contenedor Apache2 con VirtualHosts, de forma manual, ya que no tengo permisos para escribir directamente en /home/projects.


📁 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>

Repite lo mismo para usuario2.conf y usuario3.conf, cambiando el nombre y la ruta.


🔐 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 y descomprimir en tu servidor?

No hay comentarios:

Publicar un comentario