sábado, 21 de junio de 2025

Docker apache2 Linux, varios usuarios - todos los public tienen los mismos permisos

 


Crear los archivos dockerfile, docker-compose.yml y httpd.conf, mostrarme que permisos debo dar en bash en el host, y como ejecutar los archivos de docker, el contenedor se ejecuta desde /home/projects/docker_apache2. Donde La pagina_Inicio de un servidor http://xx.xx.xx.xx es vista desde un navegador, a traves de un servidor apache desde la carpeta en el host: /home/projects/Pagina_Inicio/. Cada usuario tiene una carpeta public_html donde puede ser visible desde la web, donde los enlaces web que se ven des los navegadores con http://xx.xx.xx.xx/usuario1/ http://xx.xx.xx.xx/usuario2/ http://xx.xx.xx.xx/usuario3/ estan en las carpetas del host: /home/usuario1/public_html/, /home/usuario2/public_html/, /home/usuario3/public_html/


 /home/

├── usuario1/public_html/index.html

├── usuario2/public_html/index.html

├── usuario3/public_html/index.html

├── projects/Pagina_Inicio/index.html

└── projects/docker_apache2/sites/

├── usuario1.conf

├── usuario2.conf

└── usuario3.conf




Crear los archivos dockerfile, docker-compose.yml y httpd.conf, mostrarme que permisos debo dar en bash en el host, y como ejecutar los archivos de docker, el contenedor se ejecuta desde /home/projects/docker_apache2. Donde La pagina_Inicio de un servidor http://xx.xx.xx.xx es vista desde un navegador, a traves de un servidor apache desde la carpeta en el host: /home/projects/Pagina_Inicio/. Cada usuario tiene una carpeta public_html donde puede ser visible desde la web, donde los enlaces web que se ven des los navegadores con http://xx.xx.xx.xx/usuario1/ http://xx.xx.xx.xx/usuario2/ http://xx.xx.xx.xx/usuario3/ estan en las carpetas del host: /home/usuario1/public_html/, /home/usuario2/public_html/, /home/usuario3/public_html/


Respuesta

Intenté crear los archivos directamente en /home/projects/docker_apache2, pero se produjo un error de permiso denegado al intentar escribir en esa ruta. Esto es común si no se tienen privilegios de superusuario o si el entorno no permite escribir en directorios del sistema.


✅ Aquí tienes lo que necesitas hacer manualmente:

1. Estructura de archivos

Crea un directorio para tu proyecto:

mkdir -p /home/projects/docker_apache2
cd /home/projects/docker_apache2

2. Archivo Dockerfile

FROM httpd:2.4
COPY ./httpd.conf /usr/local/apache2/conf/httpd.conf

3. Archivo httpd.conf

ServerRoot "/usr/local/apache2"
Listen 80

LoadModule dir_module modules/mod_dir.so
LoadModule userdir_module modules/mod_userdir.so

User daemon
Group daemon

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

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

UserDir public_html

<IfModule mod_userdir.c>
    UserDir enabled usuario1 usuario2 usuario3
</IfModule>

<Directory "/home/*/public_html">
    AllowOverride None
    Options Indexes FollowSymLinks
    Require all granted
</Directory>

DirectoryIndex index.html

4. Archivo docker-compose.yml

version: '3'
services:
  apache:
    container_name: Docker_apache2
    build: .
    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/

🔐 Permisos necesarios en el host

Ejecuta estos comandos para asegurarte de que Apache pueda acceder a los directorios:

chmod o+rx /home/projects/Pagina_Inicio/
chmod -R o+r /home/projects/Pagina_Inicio/*

chmod o+rx /home/usuario1/public_html/
chmod -R o+r /home/usuario1/public_html/*

chmod o+rx /home/usuario2/public_html/
chmod -R o+r /home/usuario2/public_html/*

chmod o+rx /home/usuario3/public_html/
chmod -R o+r /home/usuario3/public_html/*

🚀 Cómo ejecutar

Desde /home/projects/docker_apache2/:

docker-compose up --build -d

Luego abre tu navegador y visita:

  • http://xx.xx.xx.xx/ → Página principal
  • http://xx.xx.xx.xx/usuario1/ → Carpeta pública de usuario1
  • http://xx.xx.xx.xx/usuario2/ → Carpeta pública de usuario2
  • http://xx.xx.xx.xx/usuario3/ → Carpeta pública de usuario3

¿Quieres que te genere un archivo .zip con todos estos archivos listos para descargar?

No hay comentarios:

Publicar un comentario