Default VirtualHost en Apache

Black Hole

A continuaci贸n, algunas notas sobre el comportamiento del primer VirtualHost definido en Apache.

En un entorno Apache con VirtualHosts, el primer VirtualHost es importante, pues ser谩 el VirtualHost por defecto. 脡sto significa que ser谩 el VirtualHost con mayor prioridad, y por tanto atender谩 a cualquier petici贸n al server contra un dominio no especificado en ning煤n VirtualHost.

Usualmente tendremos definidos VirtualHost *:80 as铆 como *:443. En este caso, tendremos un default para *:80 y un default para *:443. Si definieramos nuestros VirtualHost especificando IP:puerto, entonces tendr铆amos un default para cada IP:puerto definido.

El primer VirtualHost, no es m谩s que el primer VirtualHost definido en el httpd.conf. Si usamos como es habitual un fichero de configuraci贸n por cada VirtualHost, dentro del directorio 芦conf.d禄 incluido por el httpd.conf, entonces el primer VirtualHost ser谩 el que primero aparezca, ordenado por nombre. Por esta raz贸n se suele especificar el VirtualHost 芦default禄 en un archivo con nombre 芦_defaul.conf禄, para que se liste primero.

En la documentaci贸n oficial de Apache, adem谩s, comentan que este primer VirtualHost deber铆a tener un ServerName y un DocumentRoot iguales a los definidos de forma global en el fichero de configuraci贸n global de Apache.

Fuentes:

http://httpd.apache.org/docs/2.2/vhosts/details.html

http://httpd.apache.org/docs/2.2/vhosts/name-based.html

Flickr! Foto por ( (( marS )) )

Python 2.7 en CentOS 6 con mod_wsgi

python2En este post, veremos c贸mo instalar una nueva versi贸n de Python (la 2.7.5) manteniendo la versi贸n del sistema (2.6.6 en CentOS 6), forzando al mod_wsgi de Apache a usar la nueva versi贸n en lugar de la de sistema. La idea es no tocar la versi贸n de sistema, puesto que si cambiamos dicha versi贸n, seguramente nos encontraremos m谩s adelante con problema de dependencias en pr谩cticamente cualquier actualizaci贸n o instalaci贸n que queramos hacer con yum.

De esta manera, lo que har铆amos ser铆a hacer una segunda instalaci贸n de la nueva versi贸n de Python, que no comprometiera la instalaci贸n original. En el ejemplo, estamos usando un servidor CentOS 6.4 que por defecto, viene con Python 2.6.6, con un servidor Apache con mod_wsgi 3.2. Lo que queremos, es instalar Python 2.7.5 sin comprometer el Python del sistema, instalar los m贸dulos de Python necesarios para nuestra aplicaci贸n, pero 煤nicamente para la nueva versi贸n 2.7.5, y finalmente, reconfigurar mod_wsgi para usar la nueva versi贸n.

Para ello, podr铆amos seguir los pasos descritos a continuaci贸n:

Entorno

Comprobamos los detalles del sistema operativo:

[root@MyServer]#cat /etc/redhat-release
CentOS release 6.4 (Final)

Verificamos la versi贸n de python del sistema:

[root@MyServer]# python --version
Python 2.6.6

Continuar leyendo 芦Python 2.7 en CentOS 6 con mod_wsgi禄

Pasos para migrar un proyecto web

LAMP MigrationMigrar un proyecto web (php/mysql) de un servidor a otro(s) puede parecer un proceso sencillo, pero rara es la vez en la que no salen imprevistos. Por esta raz贸n, prefiero tener bien documentado todo el proceso de migraci贸n, antes de empezar, para evitar sobresaltos e ir sobre seguro.

La idea del siguiente proceso, es clonar la base de datos del servidor a migrar al nuevo servidor, y una vez clonada, modificar el c贸digo del servidor a migrar para empezar a usar la base de datos del nuevo server en lugar de la que usaba hasta ahora. De esta manera, no se perder谩n datos cuando se inicie la modificaci贸n de las DNS para apuntar al nuevo servidor.

REQUISITOS

  • En el nuevo servidor, abrir (por lo menos) los puertos 22 y 3306 para la IP del servidor a migrar.
  • Apache y MySQL instalados y configurados en el nuevo server, inclu铆do el vhost del proyecto.
  • Resto de dependencias del proyecto instaladas en el nuevo server.

Continuar leyendo 芦Pasos para migrar un proyecto web禄

Apuntes de mod_rewrite

httpd ApacheEste post es una breve introducci贸n a mod_rewrite, que puede servir como punto de partida, pero que no servir谩 ni mucho menos, como manual ni como gu铆a. Por favor, mira las fuentes al final del mismo, para acceder a las fuentes originales y ampliar la informaci贸n sobre mod_rewrite.

Mod_rewrite es uno de los m贸dulos de Apache m谩s importantes. Nos permitir谩 manipular urls (reescribiendo urls al vuelo), redirigir una url a otra o invocar un proxy interno, mediante una serie de reglas y condiciones.

En primer lugar, activaremos el motor de reescritura (en el .htaccess o en el virtualhost correspondiente), en el caso de que est茅 instalado mod_rewrite. Una vez activado, pondremos las reglas a continuaci贸n:

<IfModule mod_rewrite.c>
RewriteEngine On
## Aqu铆 las reglas
</IfModule>

Continuar leyendo 芦Apuntes de mod_rewrite禄

Optimizaci贸n de Apache

httpd Apache
Siguiendo con el 煤ltimo post sobre fine tuning de MySQL para mejorar el rendimiento, me lanzo con otro post recopilatorio con un resumen de algunas de las recomendaciones oficiales de Apache, completadas con otras fuentes listadas al final del post.

Hardware y SO

En la documentaci贸n oficial de Apache se comenta, que el factor m谩s importante para el rendimiento de un servidor es la RAM, lo cual me recuerda a una frase que reproduzco casi literalmente, pero de la cual no consigo recordar la fuente:

芦Aumentar la RAM es la manera m谩s r谩pida, barata y eficaz de mejorar el rendimiento禄

Adem谩s de la RAM, se deber谩 prestar atenci贸n a la i/o de los discos, CPU y finalmente a la velocidad de la tarjeta de red, que deber谩n ser suficientes (茅sto se deber谩 determinar por experimentaci贸n).

Continuar leyendo 芦Optimizaci贸n de Apache禄

Configuraci贸n b谩sica de Apache

httpd ApacheEn este post se trata de dar una idea de los que pueden ser los primeros pasos a dar tras la instalaci贸n de un servidor Apache con PHP.

/etc/php.ini

En primer lugar, podr铆amos mirar el archivo de configuraci贸n del php en busca de las l铆neas correspondientes a la gesti贸n de la visualizaci贸n de los mensajes de error. Se recomienda que ambos par谩metros est茅n a Off si se quiere evitar que tras un error en el servidor, se le muestre al usuario el c贸digo relativo al error, o incluso el fragmento de c贸digo php que lo ha provocado:

display_errors = Off
display_startup_errors = Off

Continuar leyendo 芦Configuraci贸n b谩sica de Apache禄

Generar petici贸n CSR para HTTPS

Apache HTTPSi se quiere montar un servidor que soporte HTTPS, se deber谩 contar un certificado v谩lido para el sitio web. Para ello, una opci贸n es directamente, comprar dicho certificado, en alguno de los m煤ltiples sitios web que ofrecen esta opci贸n, como GoDaddy, los cuales, ya tienen las instrucciones para generar la petici贸n del certificado aqu铆:

Para generar la petici贸n para el certificado, se deber谩n seguir una serie de pasos:

  • Crear el certificado y la petici贸n CSR (Solicitud para Firma del Certificado), ejecutando en el servidor web, el siguiente comando (NOTA: yourdomain puede ser cualquier texto, por ejemplo, para dominio.com podr铆amos usar dominio.key y dominio.csr respectivamente):

openssl req -new -newkey rsa:2048 -nodes -keyout yourdomain.key -out yourdomain.csr

Ej. openssl req -new -newkey rsa:2048 -nodes -keyout www_domain_com.key -out www_domain_com.csr

Continuar leyendo 芦Generar petici贸n CSR para HTTPS禄