Apache httpd.conf Utilisateur/Groupe
J'ai un httpd.fichier conf qui contient les éléments suivants:
<IfModule unixd_module>
<If "env('OS') == 'Darwin'">
User daemon
Group admin
</If>
<Else>
User www
Group scm
</Else>
</IfModule>
Ce que je suis en train de faire est de définir l'id utilisateur pour le httpd exemple, dans mon environnement de développement sur OSX pour un seul utilisateur, mais d'un autre utilisateur lorsqu'il est déployé à Ubuntu. Je reçois un message d'erreur de syntaxe:
AH00526: Syntax error on line 32 of /usr/local/apps/apache2/conf/httpd.conf:
User not allowed here
J'ai regardé la Si directive et il est permis ici. Si j'en commentaire, l'Utilisateur ou le Groupe que je n'ai pas l'erreur de syntaxe. Sans le if/Else, et en n'utilisant qu'un utilisateur, cela fonctionne. Si j'essaie d'utiliser la condition avec l'utilisateur/groupe, j'ai un message d'erreur. Est-ce possible dans le httpd.conf? Si oui, comment? Est-il une façon différente de faire la même chose? Les "OS" de la variable d'environnement est définie dans chaque environnement avec "l'exportation OS=uname
". C'est dans Apache httpd 2.4.4.
OriginalL'auteur jmq | 2013-06-13
Vous devez vous connecter pour publier un commentaire.
J'ai enfin trouvé un moment pour vérifier plus profondément, et c'est à cause de Remplacer le comportement. J'ai brièvement vérifié avec 2.4.4 source, et il me semble, que, fondamentalement, seulement des directives qui sont sur le "Remplacement" de la liste dans le Répertoire courant ou de l'Emplacement, les contextes sont substituables avec if/Else.
Comme "Utilisateur" et "Groupe" sont censés être définie qu'une seule fois pour l'ensemble de l'installation, et de ne pas être modifié par l' ".htaccess" ou selon le Répertoire/contexte de Localisation, par conséquent, ils ne sont pas sur certains défaut "AllowOverride" de la liste, et vous ne pouvez pas simplement mettre dans un tel contexte pour leur faire substituables. De sens que si, à force d'Utilisateur/Groupe d'options pour être valable que sur le dessus de apache interne "arbre de configuration".
Pour obtenir le comportement que vous avez besoin dans une manière raisonnable, comme je l'ai expliqué brièvement dans mon commentaire, vous devez utiliser "envvars", disponible par défaut dans Debian ( probablement Ubuntu ).
En bref, il y a dans /etc/apache2/envvars fichier contenant par exemple
Il est d'origine/héritées par /etc/init.d/apache2 script de démarrage, de sorte que dans httpd fichier de configuration principal (par exemple, apache2.conf) la section suivante peut être utilisée
Simple modification de /etc/apache2/envvars puis laisser vous obtenez ce dont vous avez besoin. Vous pouvez également modifier les valeur par défaut pour l'Utilisateur/le Groupe de la compilation des paramètres pour l'Utilisateur/Groupe utilisé sur votre OSX, et utiliser le script sur Ubuntu uniquement du côté de l'.
OriginalL'auteur Piotr Wadas