Default VirtualHost en Apache

10 julio 2014 at 8:48 by Adrián Pérez

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

5 junio 2013 at 19:12 by Adrián Pérez

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

Pasos para migrar un proyecto web

25 noviembre 2012 at 19:39 by Adrián Pérez

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.

Apuntes de mod_rewrite

20 septiembre 2012 at 15:29 by Adrián Pérez

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>

Optimización de Apache

17 julio 2012 at 12:38 by Adrián Pérez

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).

Configuración básica de Apache

24 abril 2012 at 19:13 by Adrián Pérez

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

Generar petición CSR para HTTPS

11 enero 2012 at 20:17 by Adrián Pérez

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