Modification de Apache : Suexec pour un vhost spécifique
La modification peut être annulée. Veuillez vérifier les différences ci-dessous pour voir si c’est bien ce que vous voulez faire, puis publier ces changements pour finaliser l’annulation de cette modification.
Version actuelle | Votre texte | ||
Ligne 1 : | Ligne 1 : | ||
== Introduction == | |||
Il existe de multiples cas où on a besoin que le serveur Apache puisse écrire sur des fichiers, dans ce cas on donne généralement le droit à l'utilisateur Apache sur ce fichier et c'est tout.<br /> | Il existe de multiples cas où on a besoin que le serveur Apache puisse écrire sur des fichiers, dans ce cas on donne généralement le droit à l'utilisateur Apache sur ce fichier et c'est tout.<br /> | ||
Ligne 9 : | Ligne 6 : | ||
C'est justement dans ce dernier cas qu'il devient utile que ces scripts soient lancés avec les droits de l'utilisateur qui sert au webmaster au lieu de l'utilisateur Apache. | C'est justement dans ce dernier cas qu'il devient utile que ces scripts soient lancés avec les droits de l'utilisateur qui sert au webmaster au lieu de l'utilisateur Apache. | ||
== Présentation == | == Présentation == | ||
Ligne 25 : | Ligne 22 : | ||
Sous CentOS l'installation se fait très simplement, mod_fcgid est disponible directement sur les repository de la distribution et mod_suphp est disponible sur rpmforge. | Sous CentOS l'installation se fait très simplement, mod_fcgid est disponible directement sur les repository de la distribution et mod_suphp est disponible sur rpmforge. | ||
yum install mod_fcgid | |||
yum install mod_suphp | yum install mod_suphp | ||
=== Configuration d'Apache === | === Configuration d'Apache === | ||
Ligne 35 : | Ligne 32 : | ||
Ensuite il faut configurer les vhosts, pour ça j'ai fait un template afin de simplifier la création de nouveau vhosts. | Ensuite il faut configurer les vhosts, pour ça j'ai fait un template afin de simplifier la création de nouveau vhosts. | ||
<VirtualHost *:80> | |||
<VirtualHost *:80> | |||
ServerName {DOM} | |||
ServerName {DOM} | ServerAlias *.{DOM} | ||
ServerAlias *.{DOM} | |||
DocumentRoot /web/{FOLD} | |||
DocumentRoot /web/{FOLD} | |||
CustomLog logs/{DOM}.log combined | |||
CustomLog logs/{DOM}.log combined | |||
Options FollowSymlinks | |||
Options FollowSymlinks | |||
<IfModule mod_fcgid.c> | |||
<IfModule mod_fcgid.c> | Alias /fcgi-bin/ /var/www/cgi-bin/ | ||
<Location /fcgi-bin/> | |||
SetHandler fcgid-script | |||
Options +ExecCGI | |||
</Location> | |||
SuexecUserGroup {UID} {GID} | |||
<Directory /web/{FOLD}> | |||
Options +ExecCGI -Indexes IncludesNOEXEC FollowSymlinks | |||
AddHandler php-fcgi .php | |||
Action php-fcgi /fcgi-bin/{UID}/php-{UID} | |||
FCGIWrapper /var/www/cgi-bin/{UID}/php-{UID} .php | |||
Allow from all | |||
AllowOverride All | |||
</Directory> | |||
</IfModule> | |||
</IfModule> | |||
</VirtualHost | </VirtualHost> | ||
{DOM} = Le nom de domaine associé au vhosts. | {DOM} = Le nom de domaine associé au vhosts. | ||
Ligne 71 : | Ligne 67 : | ||
{GID} = Le groupe qui servira pour l'exécution des scripts. | {GID} = Le groupe qui servira pour l'exécution des scripts. | ||
{{Info|Dans le cas où le vhost ne serait disponible que pour un nom d'hôte particulier, il faudrait enlever la ligne '''ServerAlias''' et adapter le '''ServerName'''}} | {{Info|tip=Dans le cas où le vhost ne serait disponible que pour un nom d'hôte particulier, il faudrait enlever la ligne '''ServerAlias''' et adapter le '''ServerName'''}} | ||
== Les Wrapper == | == Les Wrapper == | ||
Ligne 78 : | Ligne 74 : | ||
Il doit absolument se situer dans un dossier dont les uid et gid sont identiques à ceux entrés dans la configuration d'Apache et aux siens.<br /> | Il doit absolument se situer dans un dossier dont les uid et gid sont identiques à ceux entrés dans la configuration d'Apache et aux siens.<br /> | ||
Il contiendra la définition de plusieurs variables pour PHP et la ligne de commande pour l'exécution. | Il contiendra la définition de plusieurs variables pour PHP et la ligne de commande pour l'exécution. | ||
#!/bin/sh | #!/bin/sh | ||
export PHPRC=/web/config/{UID} | export PHPRC=/web/config/{UID} | ||
export PHP_FCGI_MAX_REQUESTS=5000 | export PHP_FCGI_MAX_REQUESTS=5000 | ||
export PHP_FCGI_CHILDREN=1 | export PHP_FCGI_CHILDREN=1 | ||
exec /usr/bin/php-cgi | exec /usr/bin/php-cgi | ||
On oubliera pas de spécifier un chemin vers un fichier php.ini particulier afin de pouvoir redéfinir certaines options comme on le souhaite et éviter ainsi des problèmes. | On oubliera pas de spécifier un chemin vers un fichier php.ini particulier afin de pouvoir redéfinir certaines options comme on le souhaite et éviter ainsi des problèmes. | ||
Ligne 99 : | Ligne 94 : | ||
[[Category:SysAdmin]] | [[Category:SysAdmin]] | ||