Servidor Perfecto · 8 min read · Nov 11, 2025

El Servidor Perfecto - CentOS 6.1 x86_64 Con nginx [ISPConfig 3] - Página 5

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

Nginx está disponible como un paquete para CentOS 6.1 (desde EPEL) que podemos instalar de la siguiente manera:

yum install nginx

Si Apache2 ya está instalado en el sistema, deténgalo ahora…

/etc/init.d/httpd stop

… y elimine los enlaces de inicio del sistema de Apache:

chkconfig --del httpd

Luego creamos los enlaces de inicio del sistema para nginx y lo iniciamos:

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

(Si tanto Apache2 como nginx están instalados, el instalador de ISPConfig 3 le preguntará cuál desea usar; responda nginx en este caso. Si solo uno de estos dos está instalado, ISPConfig hará la configuración necesaria automáticamente.)

Podemos hacer que PHP5 funcione en nginx a través de PHP-FPM (PHP-FPM (FastCGI Process Manager) es una implementación alternativa de PHP FastCGI con algunas características adicionales útiles para sitios de cualquier tamaño, especialmente sitios más concurridos). Podemos instalar php-fpm junto con php-cli y algunos módulos de PHP5 como php-mysql que necesita si desea usar MySQL desde sus scripts PHP de la siguiente manera:

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

A continuación, abrimos /etc/php.ini…

vi /etc/php.ini

… y cambiamos la configuración de informes de errores (para que no se muestren más avisos) y descomentamos cgi.fix_pathinfo=1:

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

También establezca cgi.fix_pathinfo=0:

vi /etc/php.ini

| [...] ; cgi.fix_pathinfo proporciona soporte *real* para PATH_INFO/PATH_TRANSLATED para CGI. El comportamiento anterior de PHP era establecer PATH_TRANSLATED en SCRIPT_FILENAME, y no entender qué es PATH_INFO. Para más información sobre PATH_INFO, consulte las especificaciones de cgi. Establecer esto en 1 hará que PHP CGI corrija sus rutas para cumplir con la especificación. Un valor de cero hace que PHP se comporte como antes. El valor predeterminado es 1. Debe corregir sus scripts para usar SCRIPT_FILENAME en lugar de PATH_TRANSLATED. ; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo cgi.fix_pathinfo=0 [...] |

(Por favor, lea http://wiki.nginx.org/Pitfalls para averiguar por qué debería hacer esto.)

Además de eso, para evitar errores 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

… en /var/log/php-fpm/www-error.log cuando llama a un script PHP en su navegador, debe establecer date.timezone en /etc/php.ini:

| [...] [Date] ; Define la zona horaria predeterminada utilizada por las funciones de fecha ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone date.timezone = "Europe/Berlin" [...] |

Puede averiguar la zona horaria correcta para su sistema ejecutando:

cat /etc/sysconfig/clock

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

A continuación, cree los enlaces de inicio del sistema para php-fpm y inícielo:

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

PHP-FPM es un proceso demonio (con el script de inicio /etc/init.d/php-fpm) que ejecuta un servidor FastCGI en el puerto 9000.

Para obtener soporte CGI en nginx, instalamos Fcgiwrap.

Fcgiwrap es un envoltorio CGI que también debería funcionar para scripts CGI complejos y puede ser utilizado para entornos de alojamiento compartido porque permite que cada vhost use su propio directorio cgi-bin.

Como no hay un paquete fcgiwrap para CentOS 6.1, debemos construirlo nosotros mismos. Primero instalamos algunos requisitos previos:

yum install fcgi-devel

Ahora podemos construir fcgiwrap de la siguiente manera:

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

Esto instala fcgiwrap en /usr/local/sbin/fcgiwrap.

A continuación, instalamos el paquete spawn-fcgi que nos permite ejecutar fcgiwrap como un demonio:

yum install spawn-fcgi

Abra /etc/sysconfig/spawn-fcgi…

vi /etc/sysconfig/spawn-fcgi

… y modifique el archivo de la siguiente manera:

| # Debe establecer algunas opciones de trabajo antes de que el servicio "spawn-fcgi" funcione. # Si SOCKET apunta a un archivo, entonces este archivo es limpiado por el script de inicio. # # Vea spawn-fcgi(1) para todas las opciones posibles. # # Ejemplo : #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" |

Ahora agregue el usuario nginx al grupo apache:

usermod -a -G apache nginx

Cree los enlaces de inicio del sistema para spawn-fcgi…

chkconfig --levels 235 spawn-fcgi on

… y inícielo de la siguiente manera:

/etc/init.d/spawn-fcgi start

Ahora debería encontrar el socket de fcgiwrap en /var/run/fcgiwrap.socket, propiedad del usuario y grupo apache (algunos scripts, por ejemplo, Mailman, esperan ser ejecutados por el usuario/grupo apache, por eso no ejecutamos spawn-fcgi como usuario/grupo nginx, sino que agregamos nginx al grupo apache).

16 Instalar phpMyAdmin

A continuación, instalamos phpMyAdmin:

yum install phpmyadmin

A continuación, cambiamos la autenticación en phpMyAdmin de cookie a http:

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

| [...] /* Tipo de autenticación */ $cfg['Servers'][$i]['auth_type'] = 'http'; [...] |

Ahora puede encontrar phpMyAdmin en el directorio /usr/share/phpmyadmin/.

Después de haber instalado ISPConfig 3, puede acceder a phpMyAdmin de la siguiente manera:

La aplicación vhost de ISPConfig en el puerto 8081 para nginx viene con una configuración de phpMyAdmin, por lo que puede usar http://server1.example.com:8081/phpmyadmin o http://server1.example.com:8081/phpMyAdmin para acceder a phpMyAdmin.

Si desea usar un alias /phpmyadmin o /phpMyAdmin que pueda usar desde sus sitios web, esto es un poco más complicado que para Apache porque nginx no tiene alias globales (es decir, alias que se pueden definir para todos los vhosts). Por lo tanto, debe definir estos alias para cada vhost desde el cual desea acceder a phpMyAdmin.

Para hacer esto, pegue lo siguiente en el campo Directivas de nginx en la pestaña Opciones del sitio web en 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; } |

Si usa http s en lugar de http para su vhost, debe agregar la línea fastcgi_param HTTPS on; a su configuración de phpMyAdmin de la siguiente manera:

| 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; # <-- agregue esta línea 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; } |

Si usa tanto http como https para su vhost, necesita agregar la siguiente sección a la sección http {} en /etc/nginx/nginx.conf (antes de cualquier línea de inclusión) que determina si el visitante usa http o https y establece la variable $fastcgi_https (que usaremos en nuestra configuración de phpMyAdmin) en consecuencia:

vi /etc/nginx/nginx.conf

| [...] http { [...] ## Detectar cuando se usa HTTPS map $scheme $fastcgi_https { default off; https on; } [...] } [...] |

No olvide recargar nginx después:

/etc/init.d/nginx reload 

Luego vaya nuevamente al campo Directivas de nginx, y en lugar de fastcgi_param HTTPS on; agregue la línea fastcgi_param HTTPS $fastcgi_https; para que pueda usar phpMyAdmin tanto para solicitudes http como 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; # <-- agregue esta línea 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 la versión 3.0.4, ISPConfig también le permite gestionar (crear/modificar/eliminar) listas de correo de Mailman. Si desea hacer uso de esta función, instale Mailman de la siguiente manera:

yum install mailman

Antes de que podamos iniciar Mailman, se debe crear una primera lista de correo llamada mailman:

/usr/lib/mailman/bin/newlist mailman

[root@server1 tmp]# /usr/lib/mailman/bin/newlist mailman
Ingrese el correo electrónico de la persona que ejecuta la lista: <– dirección de correo electrónico del administrador, por ejemplo, [email protected]
Contraseña inicial de mailman: <– contraseña del administrador para la lista de mailman
Para terminar de crear su lista de correo, debe editar su archivo /etc/aliases (o equivalente) agregando las siguientes líneas, y posiblemente ejecutando el programa newaliases:

lista de correo 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”

Presione enter para notificar al propietario de mailman… <– ENTER

[root@server1 tmp]#

Abra /etc/aliases después…

vi /etc/aliases

… y agregue las siguientes líneas:

| [...] 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" |

Ejecute

newaliases

despues y reinicie Postfix:

/etc/init.d/postfix restart

Cree los enlaces de inicio del sistema para Mailman y inícielo:

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

Ahora necesitamos crear este enlace simbólico para que Mailman funcione con ISPConfig:

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

Si desea usar Mailman desde sus sitios web creados a través de ISPConfig, esto es un poco más complicado que para Apache porque nginx no tiene alias globales (es decir, alias que se pueden definir para todos los vhosts). Por lo tanto, debe definir estos alias para cada vhost desde el cual desea acceder a Mailman.

Para hacer esto, pegue lo siguiente en el campo Directivas de nginx en la pestaña Opciones del sitio web en 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; } |

Esto define el alias /cgi-bin/mailman/ para su vhost, lo que significa que puede acceder a la interfaz de administración de Mailman para una lista en http:///cgi-bin/mailman/admin/, y la página web para los usuarios de una lista de correo se puede encontrar en http:///cgi-bin/mailman/listinfo/.

Bajo http:///pipermail puede encontrar los archivos de la lista de correo.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.