Servidor Perfecto · 4 min read · Oct 08, 2025

El Servidor Perfecto - CentOS 6.3 x86_64 (nginx, Dovecot, ISPConfig 3) - Página 4

11 Instalar Dovecot

Dovecot se puede instalar de la siguiente manera:

yum install dovecot dovecot-mysql

Ahora crea los enlaces de inicio del sistema y comienza Dovecot:

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

12 Instalar Postfix

Postfix se puede instalar de la siguiente manera:

yum install postfix

Luego apaga Sendmail y comienza Postfix:

chkconfig –levels 235 sendmail off
chkconfig –levels 235 postfix on
/etc/init.d/sendmail stop
/etc/init.d/postfix restart

13 Instalar Getmail

Getmail se puede instalar de la siguiente manera:

yum install getmail

14 Instalar Amavisd-new, SpamAssassin y ClamAV

Para instalar amavisd-new, spamassassin y clamav, ejecuta el siguiente comando:

yum install amavisd-new spamassassin clamav clamd unzip bzip2 unrar perl-DBD-mysql

Luego comenzamos freshclam, amavisd y clamd.amavisd:

sa-update
chkconfig –levels 235 amavisd on
chkconfig –del clamd
chkconfig –levels 235 clamd.amavisd on
/usr/bin/freshclam
/etc/init.d/amavisd start
/etc/init.d/clamd.amavisd start

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

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

yum install nginx

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

/etc/init.d/httpd stop

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

chkconfig --del httpd

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

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

(Si tanto Apache2 como nginx están instalados, el instalador de ISPConfig 3 te preguntará cuál deseas usar; responde 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 necesitas si deseas usar MySQL desde tus 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-pecl-apc php-magickwand php-magpierss 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 ya no se muestren avisos):

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

También establece 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, consulta las especificaciones de cgi. Establecer esto en 1 hará que PHP CGI corrija sus rutas para ajustarse a la especificación. Un valor de cero hace que PHP se comporte como antes. El valor predeterminado es 1. Debes corregir tus 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 [...] |

(Consulta http://wiki.nginx.org/Pitfalls para averiguar por qué deberías 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 llamas a un script PHP en tu navegador, debes establecer date.timezone en /etc/php.ini:

| [...] [Date] ; Defines the default timezone used by the date functions ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone date.timezone = "Europe/Berlin" [...] |

Puedes averiguar la zona horaria correcta para tu sistema ejecutando:

cat /etc/sysconfig/clock

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

A continuación, crea los enlaces de inicio del sistema para php-fpm y comienza:

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

PHP-FPM es un proceso daemon (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.3, 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 daemon:

yum install spawn-fcgi

Abre /etc/sysconfig/spawn-fcgi…

vi /etc/sysconfig/spawn-fcgi

… y modifica el archivo de la siguiente manera:

| # Debes 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. # # Consulta 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 agrega el usuario nginx al grupo apache:

usermod -a -G apache nginx

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

chkconfig --levels 235 spawn-fcgi on

… y comienza de la siguiente manera:

/etc/init.d/spawn-fcgi start

Ahora deberías encontrar el socket 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).

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

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