1 votes

Apache mémoire partagée pour mod_digest sur un conteneur Docker en lecture seule

Je lance un conteneur docker en utilisant les arguments suivants ;

docker run -d \
    -v "$(pwd)/data/logs:/logs" \
    -v "$(pwd)/data/auth:/auth" \
    -v "/mnt/data:/data" \
    -v "$(pwd)/data/dav.config:/usr/local/apache2/conf/dav.conf" \
        --memory="2g" \
        --cpu-shares=1024 \
        --read-only="true" \
        --tmpfs /tmp --tmpfs /run \
    --restart="always" \
    --name dav \
    dav

Cependant, lors du démarrage de httpd, j'obtiens ;

[Wed May 11 10:26:32.938887 2016] [auth_digest:notice] [pid 1:tid 139835054438272] AH01757: génération du secret pour l'authentification digest…
[Wed May 11 10:26:32.939164 2016] [auth_digest:error] [pid 1:tid 139835054438272] (30)Système de fichiers en lecture seule : AH01762: Échec de la création du segment de mémoire partagée sur le fichier /usr/local/apache2/logs/authdigest_shm.1
[Wed May 11 10:26:32.939194 2016] [auth_digest:error] [pid 1:tid 139835054438272] (30)Système de fichiers en lecture seule : AH01760: échec de l'initialisation du shm - tous les contrôles de compteur de nonce, les nonces à usage unique et l'algorithme MD5-sess désactivés
[Wed May 11 10:26:32.939210 2016] [:emerg] [pid 1:tid 139835054438272] AH00020: Configuration échouée, sortie

Je ne connais aucune directive pour spécifier l'emplacement de /usr/local/apache2/logs/authdigest_shm.1. /run et /tmp sont des tmpfs, le reste est en lecture seule. Des idées ?

0 votes

L'erreur "Système de fichiers en lecture seule : AH01762". Il s'agit d'un problème de permission, Vérifiez si Docker est en mesure d'écrire dans le système de fichiers ou non

0 votes

@serverliving.com ; comme je l'ai mentionné dans mon message, il est délibérément configuré que le système de fichiers racine est en lecture seule. (Meilleure pratique Docker)

0 votes

L'erreur indique qu'il est impossible de créer le fichier /usr/local/apache2/logs/authdigest_shm.1. Vous devez fournir les autorisations appropriées ici, afin que le fichier puisse être créé sous /usr/local/apache2/logs.

1voto

amro Points 323

Essayez de changer la valeur de la directive DefaultRuntimeDir

La directive DefaultRuntimeDir définit le répertoire dans lequel le serveur créera divers fichiers d'exécution (mémoire partagée, verrous, etc.). Si elle est définie en tant que chemin relatif, le chemin complet sera relatif à ServerRoot.

Voir : https://httpd.apache.org/docs/2.4/mod/core.html#defaultruntimedir

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X