nginx + php-fpm: File not found.

Uma pesquisa pelos termos “nginx + php-fp File not found.” oferece um vasto leque de literatura e receitas para, expectavelmente, resolver o problema.
Se por acaso “aterrou” nesta página já em último reduto, talvez a origem do problema não esteja no ficheiro de configuração do nginx.

No error_log pode ler-se ainda: FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, reforçando a possibilidade de tratar-se dum problema de permissões.

Se já confirmou que o utilizador/grupo nginx (ou outro com o qual o nginx esteja a ser executado) tem permissões para executar os scripts, então confirme que o php-fpm está a correr com esse utilizador.

  1. Abrir o ficheiro ficheiro de configuração da pool (/etc/php-fpm.d/www.conf)
  2. Procurar por “user”
  3. Modificar, se necessário, os valores de “user” e “group”
  4. Reiniciar o php-fpm (/etc/init.d/php-fpm restart)

No meu caso a pool por omissão estava configurada para o utilizador e grupo “apache”.

Ruby e RubyGems em CentOS

Sem segredos:

# yum install -y ruby
# yum install -y ruby-devel ruby-docs ruby-ri ruby-irb ruby-rdoc

Prevendo que pode mesmo acontecer:

# sudo yum install httpd-devel\
  openssl-devel\
  zlib-devel\
  gcc\
  gcc-c++\
  curl-devel\

e depois sim

# passenger-install-apache2-module

The Apache 2 module was successfully installed.
Yupi!

PCRE Unicode Support

Não serão os únicos a encontrar este pequeno contratempo quando estão num ambiente CentOS5 e PHP a usar expressões regulares que contemplem caracteres unicode.

PHP Warning: preg_match(): Compilation failed: support for \P, \p, and \X has not been compiled at offset 2 in wp-content/plugins/dnsyogi/testunicode.php on line 4

Só para despiste, na vossa shell, executem a seguinte instrução

$ pcretest -C
PCRE version 6.6 06-Feb-2006
Compiled with
UTF-8 support
No Unicode properties support
Newline character is LF
Internal link size = 2
POSIX malloc threshold = 10
Default match limit = 10000000
Default recursion depth limit = 10000000
Match recursion uses stack

Ainda não é possível resolver esta questão com o recurso ao yum pelo que é necessário criar um rpm a partir do source (ou usar algum dos que estão referenciados no tutorial).
Continue reading

Nem todo o servidor é um servidor web

Há máximas que devemos ter sempre presentes:

“Nem todo o servidor é um servidor web.”

Finalmente ganhei coragem para configurar um verdadeiro ambiente de desenvolvimento completamente virtualizado, onde as VMs têm como sistema operativo CentOS 5 instalado a partir da netinstall e criei uma bridge do host para o guest.

Como padrão o webserver corre Apache na porta 80 e o servidor de dados irá correr MySQL na 3306.

O problema é que embora tivesse o Apache a correr e conseguisse pingar a máquina pelo seu endereço IP e hostname não estava a chegar ao Apache.
Lá se fez luz e fui direitinho à iptables adicionar a regra para a porta 80 que por omissão está fechada.
Continue reading