Eu recentemente mudei para o Ubuntu. Uma das ferramentas que mais utilizei foi o XAMPP. Quando eu instalei o LAMP stack no Ubuntu notei um grande aumento no desempenho e fiquei muito satisfeito com isso. No entanto, depois de literalmente passar dias e ler dezenas de artigos de instruções, ainda não consegui configurá-lo corretamente.
Acabei de instalar o apache2 + php5-fpm porque ele pode executar os arquivos com as permissões do usuário.
No entanto, isso ainda não funcionou bem para mim. Por exemplo, baixei um arquivo de um CMS popular e o extraí para o diretório html do apache. As permissões resultantes nesses arquivos são 0664
e 0700
nas pastas.
Regras do diretório do Apache:
<Directory "/home/myuser/www/">
AllowOverride All
Require all granted
Allow from all
</Directory>
Quando 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
Quando AllowOverride None
, o apache2 executa index.php
, que está no diretório-raiz, mas não executará /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
Ainda não sou muito versado em regras de diretórios do apache, talvez haja algum erro. O arquivo index.php
deve ser legível? O serviço php5-fpm
é executado como meu usuário:
/etc/php5/fpm/pool.d
Line 22: user = myuser
Line 23: group = myuser
Os arquivos são executados quando eu defino chmod -R 0755 www/
. No entanto, eu não posso continuar executando este comando toda vez que eu adiciono alguns arquivos ou quando eles são criados pelo php. Não há uma maneira de trabalhar sem mexer constantemente nas permissões? Eu perguntei a um colega e ele disse: "Defina o root
user para php5-fpm
service". No entanto, esta é mais uma solução de escape improvisada. Também tenho medo de executar algumas funções de glob/*
e excluir arquivos que eu não pretendia excluir (aconteceu comigo no passado).
Como posso configurar minha pilha LAMP para executar automaticamente todos os meus arquivos?
Se houver um bom guia sobre como configurá-lo com o suphp ou algum outro mod, eu provavelmente o veria. Mas tem que funcionar todo o caminho.
Editar
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)
Eu corri um comando e vejo que existem vários? processos em execução. Alguém pode comentar sobre isso?