Migrar de Apache/PHP a Nginx/PHP en CentOS

nginx2Si contamos con un servidor Apache, quiz谩 nos interese pasarlo a nginx聽con el menor downtime posible. Yo he hecho alguna prueba partiendo del siguiente entorno:

  • CentOS release 6.6
  • Apache/2.2.15 sin m贸dulos adicionales
  • VirtualHosts para un proyecto PHP 5.3.3

Lo que haremos con nginx es instalarlo y configurarlo de forma muy b谩sica en un puerto diferente y posteriormente una vez est茅 todo bien, cambiar puertos de escucha.

ATENCI脫N: Si est谩s pensando en migrar de Apache a Nginx, en producci贸n, ten en cuenta que dependiendo de tu entorno, deber谩s hacerlo de una u otra manera. No es lo mismo migrar un proyecto python que sirve Apache via mod_wsgi, que un proyecto PHP que ni si quiera usa mod_rewrite (como en este聽ejemplo). Este post, por tanto, te puede servir de punto de partida, pero no es la 芦gu铆a definitiva禄.

Instalaci贸n de nginx

En primer lugar, deberemos crear el fichero para acceder al repositorio de nginx, pues 茅ste no viene en los repositorios de CentOS.

[root@lab01 ~]# vi /etc/yum.repos.d/nginx.repo
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

Tras configurar el repo, ya podremos instalar nginx via yum:

[root@lab01 ~]# yum install nginx

Continuar leyendo 芦Migrar de Apache/PHP a Nginx/PHP en CentOS禄

Downgrade o cambio de versi贸n de PHP

PHP choiceInteresante post, 茅ste, que explica c贸mo cambiar la versi贸n de PHP con un ejemplo real, ya sea, haciendo un downgrade de la versi贸n de PHP o instalando a una versi贸n concreta. Este ejemplo est谩 ejecutando en una m谩quina con CentOS 6.3 64 bits, con el repositorio de remi instalado.

Primero, podemos ver qu茅 versi贸n tenemos.

# php -v
PHP 5.4.11 (cli) (built: Jan 16 2013 16:51:38)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies

Con yum, podemos, a continuaci贸n, ver qu茅 versiones tenemos disponibles en los diferentes repositorios.

# yum –showduplicates list php
Available Packages
php.x86_64聽聽聽聽聽聽聽聽聽聽聽聽聽聽 5.3.3-3.el6_2.8聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 base
php.x86_64聽聽聽聽聽聽聽聽聽聽聽聽聽聽 5.3.3-14.el6_3聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 updates
php.x86_64聽聽聽聽聽聽聽聽聽聽聽聽聽聽 5.4.10-1.el6.remi聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 remi
php.x86_64聽聽聽聽聽聽聽聽聽聽聽聽聽聽 5.4.11-1.el6.remi聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 remi

Continuar leyendo 芦Downgrade o cambio de versi贸n de PHP禄

Instalar y configurar un servidor LAMP

Hoy me lanzo a la piscina con un paso a paso para instalar un servidor LAMP (Linux, Apache, Mysql, Php) y realizar los primeros pasos, en entornos tipo servidor Red Hat (Fedora, CentOS, etc.). Hay muchas formas de hacer 茅sto, pero la descrita a continuaci贸n siempre me suele funcionar:

Primer paso, instalar todos los componentes con yum:

yum install -y httpd php mysql-server mysql php-mysql

Continuar leyendo 芦Instalar y configurar un servidor LAMP禄

Actualizar PHP en Red Hat 5

Para finalizar el a帽o, veremos c贸mo actualizar PHP en un servidor Red Hat Enterprise 5.5.

En primer lugar miraremos qu茅 versi贸n de php tenemos, sin necesidad de usar phpinfo():

[root@miserver ~]# php -v
PHP 5.1.6 (cli) (built: Nov 13 2010 16:05:12)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies

A continuaci贸n instalaremos los repositorios de remi siguiendo los pasos descritos aqu铆:

[root@miserver ~]# wget http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm
[root@miserver ~]# wget http://rpms.famillecollet.com/enterprise/remi-release-5.rpm
[root@miserver ~]# rpm -Uvh remi-release-5*.rpm epel-release-5*.rpm

Continuar leyendo 芦Actualizar PHP en Red Hat 5禄

驴Cu谩ndo reiniciar Apache?

RAID
Dos preguntas cortas con respuestas de copy&paste sobre Apache.

驴Una modificaci贸n en el archivo php.ini requiere reiniciar apache para aplicarse?
芦Si tenemos PHP como m贸dulo del servidor, el archivo php.ini se lee cada vez que se reinicia. Por lo tanto tienes que reiniciar para que actualice los cambios. 禄
Fuente: http://www.ignside.net/man/servidores/phpini.php

驴Y qu茅 pasa si no puedo reiniciar apache porqu茅 est谩 en producci贸n sirviendo una aplicaci贸n cr铆tica?
芦Las se帽ales USR1 o graceful hacen que el proceso padre indique a sus hijos que terminen despu茅s de servir la petici贸n que est茅n atendiendo en ese momento (o de inmediato si no est谩n sirviendo ninguna petici贸n). El proceso padre lee de nuevo sus ficheros de configuraci贸n y vuelve a abrir sus ficheros log. Conforme cada hijo va terminando, el proceso padre lo va sustituyendo con un hijo de una nueva generaci贸n con la nueva configuraci贸n, que empeciezan a servir peticiones inmediatamente.禄
Fuente: http://httpd.apache.org/docs/2.0/stopping.html

Actualizaci贸n Noviembre 2013

Aprovecho para actualizar este post con un par de apuntes:

  • Ante cualquier cambio en la configuraci贸n de Apache, podemos verificar si hay problemas con la nueva configuraci贸n, antes de aplicar los cambios, ejecutando:
/etc/init.d/httpd configtest
  • Una vez verificada la configuraci贸n, podemos reiniciar la configuraci贸n (sin necesidad de reiniciar Apache y por tanto sin afectar al servicio) s铆mplemente haciendo un reload:
/etc/init.d/httpd reload

Flickr! Foto por US Mission Geneva