Servidor Perfeito · 9 min read · Nov 11, 2025

O Servidor Perfeito - CentOS 6.1 x86_64 Com nginx [ISPConfig 3] - Página 5

15 Instalar Nginx, PHP5 (PHP-FPM) e Fcgiwrap

Nginx está disponível como um pacote para CentOS 6.1 (do EPEL) que podemos instalar da seguinte forma:

yum install nginx

Se o Apache2 já estiver instalado no sistema, pare-o agora…

/etc/init.d/httpd stop

… e remova os links de inicialização do sistema do Apache:

chkconfig --del httpd

Então, criamos os links de inicialização do sistema para o nginx e o iniciamos:

chkconfig –levels 235 nginx on
/etc/init.d/nginx start

(Se tanto o Apache2 quanto o nginx estiverem instalados, o instalador do ISPConfig 3 perguntará qual você deseja usar - responda nginx neste caso. Se apenas um desses dois estiver instalado, o ISPConfig fará a configuração necessária automaticamente.)

Podemos fazer o PHP5 funcionar no nginx através do PHP-FPM (PHP-FPM (FastCGI Process Manager) é uma implementação alternativa do PHP FastCGI com alguns recursos adicionais úteis para sites de qualquer tamanho, especialmente sites mais movimentados). Podemos instalar o php-fpm junto com o php-cli e alguns módulos do PHP5 como php-mysql que você precisa se quiser usar o MySQL a partir de seus scripts PHP da seguinte forma:

yum install php-fpm php-cli php-mysql php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-eaccelerator php-magickwand php-mbstring php-mcrypt php-mssql php-shout php-snmp php-soap php-tidy

Em seguida, abrimos /etc/php.ini…

vi /etc/php.ini

… e mudamos a configuração de relatórios de erro (para que os avisos não sejam mais exibidos) e descomentamos cgi.fix_pathinfo=1:

| [...] ;error_reporting = E_ALL & ~E_DEPRECATED error_reporting = E_ALL & ~E_NOTICE [...] |

Também defina cgi.fix_pathinfo=0:

vi /etc/php.ini

| [...] ; cgi.fix_pathinfo fornece suporte *real* para PATH_INFO/PATH_TRANSLATED para CGI. O comportamento anterior do PHP era definir PATH_TRANSLATED como SCRIPT_FILENAME, e não entender o que é PATH_INFO. Para mais informações sobre PATH_INFO, consulte as especificações do cgi. Definir isso como 1 fará com que o PHP CGI corrija seus caminhos para se conformar à especificação. Um valor de zero faz com que o PHP se comporte como antes. O padrão é 1. Você deve corrigir seus scripts para usar SCRIPT_FILENAME em vez de PATH_TRANSLATED. ; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |

(Por favor, leia http://wiki.nginx.org/Pitfalls para descobrir por que você deve fazer isso.)

Além disso, para evitar erros como

[08-Aug-2011 18:07:08] PHP Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Berlin' for 'CEST/2.0/DST' instead in /usr/share/nginx/html/info.php on line 2

… em /var/log/php-fpm/www-error.log quando você chama um script PHP em seu navegador, você deve definir date.timezone em /etc/php.ini:

| [...] [Date] ; Define o fuso horário padrão usado pelas funções de data ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone date.timezone = "Europe/Berlin" [...] |

Você pode descobrir o fuso horário correto para seu sistema executando:

cat /etc/sysconfig/clock

[root@server1 tmp]# cat /etc/sysconfig/clock
ZONE=”Europe/Berlin”
[root@server1 tmp]#

Em seguida, crie os links de inicialização do sistema para o php-fpm e inicie-o:

chkconfig –levels 235 php-fpm on
/etc/init.d/php-fpm start

PHP-FPM é um processo daemon (com o script de inicialização /etc/init.d/php-fpm) que executa um servidor FastCGI na porta 9000.

Para obter suporte CGI no nginx, instalamos o Fcgiwrap.

Fcgiwrap é um wrapper CGI que deve funcionar também para scripts CGI complexos e pode ser usado para ambientes de hospedagem compartilhada porque permite que cada vhost use seu próprio diretório cgi-bin.

Como não há pacote fcgiwrap para CentOS 6.1, devemos construí-lo nós mesmos. Primeiro, instalamos algumas dependências:

yum install fcgi-devel

Agora podemos construir o fcgiwrap da seguinte forma:

cd /usr/local/src/
git clone git://github.com/gnosek/fcgiwrap.git
cd fcgiwrap
autoreconf -i
./configure
make
make install

Isso instala o fcgiwrap em /usr/local/sbin/fcgiwrap.

Em seguida, instalamos o pacote spawn-fcgi que nos permite executar o fcgiwrap como um daemon:

yum install spawn-fcgi

Abra /etc/sysconfig/spawn-fcgi…

vi /etc/sysconfig/spawn-fcgi

… e modifique o arquivo da seguinte forma:

| # Você deve definir algumas opções de trabalho antes que o serviço "spawn-fcgi" funcione. # Se SOCKET aponta para um arquivo, então este arquivo é limpo pelo script de inicialização. # # Veja spawn-fcgi(1) para todas as opções possíveis. # # Exemplo : #SOCKET=/var/run/php-fcgi.sock #OPTIONS="-u apache -g apache -s $SOCKET -S -M 0600 -C 32 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/bin/php-cgi" FCGI_SOCKET=/var/run/fcgiwrap.socket FCGI_PROGRAM=/usr/local/sbin/fcgiwrap FCGI_USER=apache FCGI_GROUP=apache FCGI_EXTRA_OPTIONS="-M 0770" OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM" |

Agora adicione o usuário nginx ao grupo apache:

usermod -a -G apache nginx

Crie os links de inicialização do sistema para spawn-fcgi…

chkconfig --levels 235 spawn-fcgi on

… e inicie-o da seguinte forma:

/etc/init.d/spawn-fcgi start

Você deve agora encontrar o socket fcgiwrap em /var/run/fcgiwrap.socket, pertencente ao usuário e grupo apache (alguns scripts, por exemplo, Mailman, esperam ser executados pelo usuário/grupo apache, é por isso que não executamos spawn-fcgi como usuário/grupo nginx, mas em vez disso adicionamos nginx ao grupo apache).

16 Instalar phpMyAdmin

Em seguida, instalamos o phpMyAdmin:

yum install phpmyadmin

Em seguida, mudamos a autenticação no phpMyAdmin de cookie para http:

vi /usr/share/phpmyadmin/config.inc.php

| [...] /* Tipo de autenticação */ $cfg['Servers'][$i]['auth_type'] = 'http'; [...] |

Agora você pode encontrar o phpMyAdmin no diretório /usr/share/phpmyadmin/.

Depois de instalar o ISPConfig 3, você pode acessar o phpMyAdmin da seguinte forma:

O vhost de aplicativos ISPConfig na porta 8081 para nginx vem com uma configuração do phpMyAdmin, então você pode usar http://server1.example.com:8081/phpmyadmin ou http://server1.example.com:8081/phpMyAdmin para acessar o phpMyAdmin.

Se você quiser usar um alias /phpmyadmin ou /phpMyAdmin que você pode usar a partir de seus sites, isso é um pouco mais complicado do que para o Apache porque o nginx não tem aliases globais (ou seja, aliases que podem ser definidos para todos os vhosts). Portanto, você deve definir esses aliases para cada vhost do qual deseja acessar o phpMyAdmin.

Para fazer isso, cole o seguinte no campo Diretrizes do nginx na aba Opções do site no ISPConfig:

| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |

Se você usar http s em vez de http para seu vhost, deve adicionar a linha fastcgi_param HTTPS on; à sua configuração do phpMyAdmin assim:

| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS on; # <-- adicione esta linha fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |

Se você usar tanto http quanto https para seu vhost, precisa adicionar a seguinte seção à seção http {} em /etc/nginx/nginx.conf (antes de qualquer linha de inclusão) que determina se o visitante usa http ou https e define a variável $fastcgi_https (que usaremos em nossa configuração do phpMyAdmin) de acordo:

vi /etc/nginx/nginx.conf

| [...] http { [...] ## Detectar quando HTTPS é usado map $scheme $fastcgi_https { default off; https on; } [...] } [...] |

Não se esqueça de recarregar o nginx depois:

/etc/init.d/nginx reload 

Então vá novamente para o campo Diretrizes do nginx, e em vez de fastcgi_param HTTPS on; você adiciona a linha fastcgi_param HTTPS $fastcgi_https; para que você possa usar o phpMyAdmin para solicitações http e https:

| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS $fastcgi_https; # <-- adicione esta linha fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |

17 Instalar Mailman

Desde a versão 3.0.4, o ISPConfig também permite que você gerencie (crie/modifique/exclua) listas de discussão do Mailman. Se você quiser usar esse recurso, instale o Mailman da seguinte forma:

yum install mailman

Antes de podermos iniciar o Mailman, uma primeira lista de discussão chamada mailman deve ser criada:

/usr/lib/mailman/bin/newlist mailman

[root@server1 tmp]# /usr/lib/mailman/bin/newlist mailman
Digite o email da pessoa que está executando a lista: <– endereço de email do administrador, por exemplo, [email protected]
Senha inicial do mailman: <– senha do administrador para a lista do mailman
Para terminar de criar sua lista de discussão, você deve editar seu arquivo /etc/aliases (ou equivalente) adicionando as seguintes linhas, e possivelmente executando o programa newaliases:

lista de discussão mailman

mailman: “|/usr/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/usr/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/usr/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/usr/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/usr/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/usr/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/usr/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/usr/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/usr/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/usr/lib/mailman/mail/mailman unsubscribe mailman”

Pressione enter para notificar o proprietário do mailman… <– ENTER

[root@server1 tmp]#

Abra /etc/aliases depois…

vi /etc/aliases

… e adicione as seguintes linhas:

| [...] mailman: "|/usr/lib/mailman/mail/mailman post mailman" mailman-admin: "|/usr/lib/mailman/mail/mailman admin mailman" mailman-bounces: "|/usr/lib/mailman/mail/mailman bounces mailman" mailman-confirm: "|/usr/lib/mailman/mail/mailman confirm mailman" mailman-join: "|/usr/lib/mailman/mail/mailman join mailman" mailman-leave: "|/usr/lib/mailman/mail/mailman leave mailman" mailman-owner: "|/usr/lib/mailman/mail/mailman owner mailman" mailman-request: "|/usr/lib/mailman/mail/mailman request mailman" mailman-subscribe: "|/usr/lib/mailman/mail/mailman subscribe mailman" mailman-unsubscribe: "|/usr/lib/mailman/mail/mailman unsubscribe mailman" |

Execute

newaliases

depois e reinicie o Postfix:

/etc/init.d/postfix restart

Crie os links de inicialização do sistema para o Mailman e inicie-o:

chkconfig –levels 235 mailman on
/etc/init.d/mailman start

Agora precisamos criar este link simbólico para fazer o Mailman funcionar com o ISPConfig:

cd /usr/lib/mailman/cgi-bin/
ln -s ./ mailman

Se você quiser usar o Mailman a partir de seus sites criados através do ISPConfig, isso é um pouco mais complicado do que para o Apache porque o nginx não tem aliases globais (ou seja, aliases que podem ser definidos para todos os vhosts). Portanto, você deve definir esses aliases para cada vhost do qual deseja acessar o Mailman.

Para fazer isso, cole o seguinte no campo Diretrizes do nginx na aba Opções do site no ISPConfig:

| location /cgi-bin/mailman { alias /usr/lib/mailman/cgi-bin; fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME /usr/lib/mailman$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED /usr/lib/mailman$fastcgi_path_info; fastcgi_intercept_errors on; fastcgi_pass unix:/var/run/fcgiwrap.socket; } location /images/mailman { alias /usr/lib/mailman/icons; } location /pipermail { alias /var/lib/mailman/archives/public; autoindex on; } |

Isso define o alias /cgi-bin/mailman/ para seu vhost, o que significa que você pode acessar a interface de administração do Mailman para uma lista em http:///cgi-bin/mailman/admin/, e a página da web para usuários de uma lista de discussão pode ser encontrada em http:///cgi-bin/mailman/listinfo/.

Em http:///pipermail você pode encontrar os arquivos da lista de discussão.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.