Activar compresión GZIP en servidores Apache para aumentar la velocidad de nuestros sitios web

Logo servidor web ApacheA día de hoy, prácticamente todos nuestros potenciales usuarios soportarán a través de sus navegadores páginas web servidas de forma comprimida. ¿Por qué es importante comprimir el código HTML resultante que enviamos? Para mejorar el rendimiento del sitio.

Ya hemos comentado otros métodos que tenemos a nuestro alcance para optimizar la velocidad de nuestro sitio como el uso de Minify, en concreto hablamos en el caso particular de WordPress y su plugin WP-Minify.

Hoy os traemos una optimización de la parte del servidor. La idea es enviar comprimido las partes que mejor ratio de compresión obtienen. La estructura central de una página, sea cual sea la tecnología del lado del servidor que usemos (PHP, Python, Ruby, etc) va a ser siempre código HTML. Este código al comprimirse reducirá su peso enormemente, en unas ratios que fácilmente llegan y superan al 90%. Igual ocurre con otros ficheros tipo texto: CSS y JavaScript por ejemplo.

Otro tipo de contenido que servimos desde nuestro sitio no obtiene ratios tan favorable y es hasta contraproducente comprimirlo por el coste en recursos que se tiene para luego no obtener un beneficio. Hablo de imágenes, ficheros PDF, contenido multimedia…

Por lo tanto, veamos rápidamente cómo activar la compresión usando gzip en nuestro servidor Apache y a la vez configurarlo, de forma que tengamos el rendimiento óptimo.

Leer más » 15 Comentarios

Aumentar el tamaño máximo de subida de ficheros con Apache y PHP

Es muy frecuente que cuando estemos desarrollando algún tipo de aplicación web, tengamos la necesidad de poder subir ficheros. La subida de ficheros es una operación relativamente simple, pero tiene una limitación, el tamaño del mismo. Esta limitación podemos gestionarla a través de PHP dentro del php.ini (en función de cuál sea tu distribución se encontrará en un sitio u otro, en mi caso está en /etc directamente).

Logo PHP

¿Qué parámetros deberemos modificar?

Leer más » 1 Comentario

Instalar phpmyadmin en Ubuntu

Con el sistema recién formateado instalé Apache, PHP y MySQL, como de costumbre, pero ya iba echando algo de menos, y es que soy un enamorado de phpmyadmin.

Bien, con un sencillo paso tendremos este cliente de base de datos instalado en nuestra máquina:

ahornero@6581-D:~$ sudo apt-get install phpmyadmin

Después reiniciamos el servidor:

ahornero@6581-D:~$ sudo service apache2 restart

Y listo. Si tenemos algún problema accediendo a: http://elnombredetuhost/phpmyadmin crearemos la siguiente ruta simbólica: read more

Leer más » 1 Comentario

Instalar Apache Tomcat 7

JSP y los servlets de Java son dos de esas tecnologías que parece que con el tiempo no han tenido el auge esperado (o al menos esa es mi sensación). De todas formas, siguen siendo dos alternativas muy relacionadas entre sí y muy válidas a la vez, para tener en cuenta si queremos llevar a cabo un desarrollo web.

El servidor más famoso para estas tecnologías es Apache Tomcat. Veamos cómo instalarlo de forma manual en cualquier distribución. Digo manual porque en los repositorios de Ubuntu no aparece ningún paquete preparado de esta versión, la 7. Suponemos que tenéis instalado Java en vuestro equipo.

Descarga y colocación en directorio destino

Lo primero será acceder a la web oficial de Tomcat y en el menú de la izquierda elegir descargas de la versión 7.0. Bajamos a Binary distributions y elegimos dentro de Core, la versión .tar.gz.

Lo descomprimimos con nuestro interfaz gráfico o mediante comando:

$ tar xvzf apache-tomcat-7.1.4.tar.gz

Y continuamos el proceso. Creamos un directorio adecuado para albergarlo:

$ sudo mkdir /usr/share/tomcat7

Ahora es el momento de mover el contenido:

$ sudo mv apache-tomcat-7.1.4/ /usr/share/tomcat7

Configuración de variables de entorno

Ahora debemos configurar las variable de entorno, pero antes, debemos saber dónde tenemos instalado tanto la JDK (Java Development Kit) como la JRE (Java Runtime Environment). Para ello, usamos la información adquirida en esta entrada de cómo saber la ruta de los ficheros que instala un paquete. Los paquetes a buscar serán en este caso (si usáis la JDK y la JRE de Sun/Oracle) los siguientes:

  • sun-java6-jdk
  • sun-java6-jre

Las rutas en mi caso son:

  • sun-java6-jdk: /usr/lib/jvm/java-6-sun-1.6.0.24/jre
  • sun-java6-jre: /usr/lib/jvm/java-6-sun-1.6.0.24/jre

Ahora agregamos al fichero de arranque del sistema (para editarlo tenéis la orden abajo):

$ sudo gedit /usr/share/tomcat7/bin/catalina.sh

Las siguientes líneas:

#!/bin/sh
JAVA_HOME="/ruta/jdk"
JRE_HOME="/ruta/jre"
...

Configuración de los usuarios

Editamos ahora el fichero: /usr/share/tomcat7/conf/tomcat-users.xml para introducir un nuevo usuario que será el gestor de la administración web:

<?xml version='1.0' encoding='utf-8'?>

<tomcat-users>
 <role rolename="manager-gui"/>
 <user username="usuario" password="contrasena" roles="manager-gui"/>
</tomcat-users>

Arranque y parada del servidor

Arranque:

sudo /usr/share/tomcat7/bin/startup.sh

Parada:

sudo /usr/share/tomcat7/bin/shutdown.sh read more

Leer más » 13 Comentarios

Instalar LAMP en Ubuntu 11.04

Al igual que hicimos en su día con Ubuntu 10.10, ahora le llega el turno a la nueva versión Ubuntu.

Para instalar LAMP (Linux Apache MySQL HP) muchos de vosotros usaríais el selector de paquetes por tareas del gestor de paquetes Synaptic, pero en esta versión de Ubuntu y en la anterior no existe el paquete, así que tendremos que instalarlo manualmente.

La tarea, al igual que en el caso que os mencionaba antes, es bien sencilla, desde la terminal, instalamos el paquete tasksel, el mismo que utiliza Synaptic internamente para realizar esta tarea: read more

Leer más » 33 Comentarios

Instalar cliente Oracle y librerías OCI para PHP

Ahora mismo estoy poniendo un producción un servidor en mi centro de trabajo, en el que además de tener que dar servicio para la base de datos PostgreSQL (explique hace poco cómo permitir conexiones entrantes a esta BBDD), debe hacer conexiones externas a una base de datos Oracle.

Estas conexiones las hará un script en PHP por lo que además, deberemos instalar OCI (Oracle Call Interface) para PHP. Suponemos que está ya instalado el servidor web Apache 2 y los componentes básicos de PHP.

read more

Leer más » 8 Comentarios

Configurar soporte HTTPS en Apache

Este tutorial describe cómo poner en marcha un servidor web con soporte HTTPS. El procedimiento lo he utilizado en un equipo con Scientific Linux, distribución derivada de Red Hat, por lo que en esta distribución y en otras derivadas como Fedora o CentOS debería ser el mismo. En Ubuntu, Debian y compañía será muy similar pero cambiarán algunas rutas y el sistema de paquetería.

El certificado utilizado es autogenerado y suponemos que tenemos ya instalado Apache.

Instalación de OpenSSL y mod_ssl

Lo primero que necesitamos es tener instalado el software necesario, para ello a través de yum hacemos lo siguiente:

yum install mod_ssl openssl

Generación del certificado

Primero generamos la clave privada, elegimos algoritmo RSA y 1024 bits:

openssl genrsa -out ca.key 1024

Ahora generamos el CSR (Certificate Signing Request), un fichero que crea una entidad para pedirle a una tercera que lo firme, verificando así que los datos de la primera entidad son correctos. De esta forma unas entidades van certificando a otras creando una cadena de certificación, donde la primera entidad de llama la raí­z de certificación.

openssl req -new -key ca.key -out ca.csr

Finalmente, nos autofirmamos el certificado:

openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

Le hemos puesto un período de validez de un año, pero podéis cambiar a vuestro gusto este tiempo. OpenSSL os pedirá una serie de datos sobre el certificado y su entidad emisora (vosotros): correo electrónico, ciudad, país… a través de un interfaz en texto.

Cambio de rutas

El siguiente paso es mover los ficheros de la firma que acabamos de generar a la ruta correcta.

mv ca.crt /etc/pki/tls/certs
mv ca.key /etc/pki/tls/private/ca.key
mv ca.csr /etc/pki/tls/private/ca.csr

Configuración de Apache

Ya estamos listos para comenzar con la configuración de Apache. En las versiones más modernas de Apache, el fichero de configuración viene dividido en varios ficheros separados por temática para un acceso más rápido a la parte deseada. El fichero que vamos a editar es el siguiente: /etc/httpd/conf.d/ssl.conf.

Buscamos las siguientes líneas y le asignamos el valor correcto (no tienen por qué estar seguidas una de la otra):

SSLCertificateFile /etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile /etc/pki/tls/private/ca.key

Host virtual

Para terminar crearemos un host virtual donde indicaremos a Apache dónde buscar las peticiones dirigidas al puerto 443 (las peticiones HTTPS). Definimos un host virtual al final de /etc/httpd/conf/httpd.conf:

NameVirtualHost *:443

Y luego la definición de las características en sí:

<VirtualHost *:443> SSLEngine on SSLCertificateFile /etc/pki/tls/certs/ca.crt SSLCertificateKeyFile /etc/pki/tls/private/ca.key AllowOverride All DocumentRoot /var/www/httpsdocs ServerName nombresitio.com </VirtualHost> read more

Leer más » 11 Comentarios

Evitar listado de directorios con Apache

Introducción

Una de las acciones básicas de cara a mejorar la seguridad de un sitio web, es evitar que el servidor devuelva los listados del contenido de los directorios que son públicos. Una solución popular es incluir un fichero index.html vacío en todos los directorios que no deben ser listados o que no tienen un fichero que realice alguna función. Si estamos hablando de un sitio web con cientos o miles de directorios, esta opción queda descartada directamente. read more

Leer más » 3 Comentarios

Abyss Web Server, ¿Una alternativa a Apache y Lighttpd?

Abyss Web Server es un servidor web multiplataforma, disponible para GNU/Linux, Windows, Mac OS X y FreeBSD.

A pesar de su pequeño tamaño, soporta:

  • HTTP/1.1
  • Conexiones seguras SSL/TLS (HTTPS)
  • Compresión HTTP on-the-fly
  • Generación de contenido dinámico a través de CGI y scripts FastCGI
  • Extensiones ISAPI
  • Soporte nativo de ASP.NET
  • XSSI
  • Páginas de error personalizadas
  • Control sobre las direcciones IP de entrada
  • Anti-leeching
  • Límite de ancho de banda.

También cuenta con un sistema automático de baneo de IP, así como con una interfaz de gestión remota vía web, que hace que su configuración sea tan sencilla como navegar por una web; quizás este último aspecto sea la característica diferenciadora con Apache.

También podemos ejecutar PHP, Perl, Python, ASP, ASP.NET, y Ruby on Rails; y acceso a bases de datos tales como MySQL, SQLite, MS SQL Server, MS Access, u Oracle. Lo cual supone una ventaja cuando hablamos de servidores Linux que desean soporte sobre un entorno Windows, y hablo de conexiones MS SQL Server y ASP, ya que ASP.net lo podremos soportarte nativamente con Mono y también con Apache. read more

Leer más » 3 Comentarios

Instalar mod_rewrite en Apache. Los Pretty Permalinks se resisten

Es posible que si habéis probado a usar enlaces permanentes (permalinks) sobre Apache os hayáis encontrado con este problema, me refiero a el caso de los conocidos como Pretty Permalinks, en los que la forma más usual de usarlos es https://www.linuxhispano.net/año/mes/día/nombre-de-la-entrada/, en resumidas palabras son el Santo Grial de los enlaces permanentes, muy usados en los Blogs.

El caso que os enuncio a continuación es el de la instalación del CMS WordPress sobre una máquina Ubuntu 10.04, aunque la metodología es completamente aplicable a cualquier uso de las directivas dentro de .htaccess sobre cualquier máquina que corra Apache2 y cualquier sistema sobre él mismo. read more

Leer más » 12 Comentarios