Je suis récemment passé à Ubuntu. Un des outils que j'ai fréquemment utilisé était XAMPP. Lorsque j'ai installé la pile LAMP sur Ubuntu, j'ai constaté une augmentation importante des performances et j'ai été assez satisfait. Cependant, après avoir littéralement passé des jours et lu des douzaines d'articles pratiques, je ne pouvais toujours pas le configurer correctement.
J'ai fini par installer Apache2 + php5-fpm car il peut exécuter les fichiers avec les permissions de l'utilisateur.
Cependant, cela n'a pas encore fonctionné pour moi. Par exemple, j'ai téléchargé une archive d'un CMS populaire et je l'ai extraite dans le répertoire hpml d'Apache. Les autorisations résultantes sur ces fichiers sont 0664
et 0700
sur des dossiers.
Règles de répertoire Apache:
<Directory "/home/myuser/www/">
AllowOverride All
Require all granted
Allow from all
</Directory>
Quand AllowOverride All
:
[Fri Dec 12 21:16:01.037580 2014] [core:crit] [pid 23745:tid 140466931369728]
(13)Permission denied: [client 127.0.0.1:54670] AH00529:
/home/myuser/www/mycms/install/.htaccess pcfg_openfile: unable to check htaccess
file, ensure it is readable and that '/home/myuser/www/mycms/install/' is executable
Lorsque AllowOverride None
, Apache2 exécute index.php
qui se trouve dans le répertoire racine, mais n'exécute pas /config/index.php
.
[Fri Dec 12 21:02:41.552369 2014] [core:error] [pid 22530:tid 140517706823424]
(13)Permission denied: [client 127.0.0.1:54465] AH00035: access to
/install/index.php denied (filesystem path
'/home/myuser/www/mycms/install/index.php') because search
permissions are missing on a component of the path
Je ne connais pas encore très bien les règles de répertoire Apache, il y a peut-être une erreur. Le fichier index.php
doit-il être lisible? Le service php5-fpm
s'exécute en tant qu'utilisateur:
/etc/php5/fpm/pool.d
Line 22: user = myuser
Line 23: group = myuser
Les fichiers sont exécutés lorsque je définis chmod -R 0755 www/
. Cependant, je ne peux pas continuer à exécuter cette commande à chaque fois que j'ajoute des fichiers ou qu'ils sont créés par php. N'y a-t-il pas moyen de travailler sans modifier constamment les autorisations? J'ai demandé à un collègue et il vient de dire: "Configurez l'utilisateur root
pour le service php5-fpm
". Cependant, il s’agit plus d’une solution d’échappatoire improvisée. J'ai également peur de pouvoir exécuter certaines fonctions glob/*
et supprimer des fichiers que je ne voulais pas supprimer (cela m'est déjà arrivé par le passé).
Comment puis-je configurer ma pile LAMP pour pouvoir automatiquement exécuter tous mes fichiers?
S'il y a un bon guide sur la façon de le configurer avec suphp ou un autre mod, je le regarderais sans arrêt. Mais cela doit fonctionner jusqu'au bout.
Éditer
ps aux | egrep '(Apache|httpd)'
root 18763 0.0 0.1 84256 4720 ? Ss 21:35 0:00 /usr/sbin/Apache2 -k start
www-data 18767 0.0 0.1 373432 6256 ? Sl 21:35 0:00 /usr/sbin/Apache2 -k start
www-data 18768 0.0 0.1 373432 6256 ? Sl 21:35 0:00 /usr/sbin/Apache2 -k start
gskema 20515 0.0 0.0 14884 2364 pts/6 S+ 21:37 0:00 grep -E --color=auto (Apache|httpd)
ps aux | egrep '(php)'
gskema 8312 0.0 0.0 4448 492 ? S 16:32 0:00 /bin/sh /opt/phpstorm/bin/phpstorm.sh
gskema 8361 8.7 31.0 4630304 1245684 ? Sl 16:32 26:52 /usr/lib/jvm/Java-8-Oracle/bin/Java -Xms128m -Xmx750m -XX:MaxPermSize=350m -XX:ReservedCodeCacheSize=225m -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -Djsse.enableSNIExtension=false -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -Dawt.useSystemAAFontSettings=lcd -Djb.vmOptionsFile=/opt/phpstorm/bin/phpstorm64.vmoptions -XX:ErrorFile=/home/gskema/Java_error_in_WEBIDE_%p.log -Xbootclasspath/a:/opt/phpstorm/bin/../lib/boot.jar -Didea.paths.selector=WebIde80 -Didea.platform.prefix=PhpStorm -Didea.no.jre.check=true -Djb.restart.code=88 com.intellij.idea.Main
gskema 8396 0.0 0.0 4936 904 ? S 16:32 0:00 /opt/phpstorm/bin/fsnotifier64
root 18950 0.0 0.6 348744 24312 ? Ss 21:35 0:00 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
www-data 18953 0.0 0.1 348744 7836 ? S 21:35 0:00 php-fpm: pool www
www-data 18954 0.0 0.1 348744 7836 ? S 21:35 0:00 php-fpm: pool www
gskema 20649 0.0 0.0 14888 2364 pts/6 R+ 21:40 0:00 grep -E --color=auto (php)
J'ai lancé une commande et je vois qu'il y en a plusieurs? processus en cours d'exécution. Quelqu'un peut-il commenter ces?
Il y a beaucoup de guides là-bas pour la configuration d'Apache2 + php-fpm sur Ubuntu. Mais oui, ils ne parlent pas de permission de répertoire et j'ai vu des personnes de mon organisation se débattre de temps en temps. Voici la configuration générale que vous devriez regarder:
Apache devrait fonctionner en tant qu'utilisateur www-data
Le php-fpm devrait être exécuté en tant qu'utilisateur www-data.
www-data 1591 0.0 0.4 417116 34008 ? S Dec19 0:00 php-fpm: pool
Le répertoire racine Apache doit avoir votre utilisateur en tant que propriétaire et www-data en tant que groupe.
drwxr-xr-x 44 anirudh www-data 4096 Dec 20 10:27 www
Ajoutez ensuite le groupe www-data à votre utilisateur.
Sudo usermod -a -G www-data <your-user>
Cela dit, si vous voulez toujours utiliser php-fpm en tant qu'utilisateur, assurez-vous que même Apache est également exécuté en tant que même utilisateur, ce qui devrait fonctionner normalement.