Archive for the ‘Apache’ Category

Instalar y configurar Apache 2 + SSL en Debian Etch

Wednesday, March 26th, 2008

Para instalar Apache 2 tecleamos:

apt-get install apache2

Ahora instalaremos openssl:

apt-get install openssl ssl-cert

Para activar el mod ssl tecleamos:

a2enmod ssl

Ahora generaremos el certificado con el siguiente comando:

openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/apache.pem -keyout /etc/apache2/apache.pem

Cambiamos los permisos del fichero:

chmod 600 /etc/apache2/apache.pem

Y por útlimo editamos la configuración del servidor Apache, primero el fichero /etc/apache2/ports.conf y añadimos la siguiente línea:

Listen 443

También modificamos el fichero de nuestro virtual host y cambiamos la línea

NameVirtualHost *

Por estas dos:

NameVirtualHost *:80
NameVirtualHost *:443

Y añadimos dentro del tag <VirtualHost *>

SSLEngine on
SSLCertificateFile /etc/apache2/apache.pem

Ahora ya debería funcionar la url https://localhost/ :)

Cambiar ratio de subida de ficheros con PHP en Apache

Tuesday, February 12th, 2008

Si quieres modificar el tamaño de los ficheros que se pueden subir a un servidor web utilizando PHP solo tienes que añadir la siguiente línea al fichero del virtual host, o al .htaccess en caso de utilizar la opción AllowOverride All.

php_value upload_max_filesize 100M

Y ya debería dejarnos subir ficheros de 100Mb ;)

Resolver PHP: Fatal error: Allowed memory size of 7785608 bytes exhausted (tried…

Thursday, January 24th, 2008

Esto sucede cuándo los requerimientos de un script sobrepasan los límites de memoria por defecto. Para solucionar esto modifica el fichero php.ini, en Linux Debian por defecto puede estar en alguna de estas localizaciones dependiendo del servidor q tengas instalado:

/etc/php5/apache/php.ini
/etc/php5/apache2/php.ini

El parámetro en cuestión que hay que modificar es el siguiente, por defecto pone 16Mb

memory_limit = 16M;

Puedes ponerle lo que necesite tu script.

No se si después de esto hace falta reiniciar el Apache, yo por si acaso lo he reiniciado

Espero que os sirva ;)

Balanceo de carga con Apache 2 + mod_proxy

Sunday, January 13th, 2008

Existen otras opciones a la hora de instalar un balanceador de carga, como Linux Virtual Server, finalmente me he decantado por utilizar mod_proxy debido a su sencillez y porque no es necesario actualizar el Kernel.

En las 3 máquinas es necesario tener instalado Apache 2 y en la máquina apache-balancer hay que tener activos los módulos proxy_balancer y proxy_http, para ello ejecutamos:

a2enmod proxy_balancer
a2enmod proxy_http

Antes de nada debemos preparar el fichero /etc/hosts de la máquina apache-balancer. Añadimos lo siguiente:

192.168.1.11 nodo1.mydomain.com
192.168.1.12 nodo2.mydomain.com

Ahora pasaremos a configurar el balanceo, para ello crea un sitio nuevo o utiliza el sitio por defecto (/etc/apache2/sites-available/default) y añade esta configuración antes de </VirtualHost> :

# cluster member 1
BalancerMember http://nodo1.mydomain.com:80 route=lb1

# cluster member 2
BalancerMember http://nodo2.mydomain.com:80 route=lb2

ProxyPass /balancer-manager !
ProxyPass / balancer://mycluster/ lbmethod=byrequests stickysession=BALANCEID
ProxyPassReverse / http://nodo1.mydomain.com/
ProxyPassReverse / http://nodo2.mydomain.com/

Guardamos el fichero y reiniciamos el Apache.

Con la opción stickysession=BALANCEID lo que conseguimos es pasar la variable de sesión al servidor dónde nos lleve el balanceador y asi permanecer en el mismo durante toda la sesión aunque actualicemos.

Para ello tenemos que configurar los nodos para que reciban la variable de sesión, editamos la configuración del VirtualHost y añadimos:

RewriteEngine On
RewriteRule .* – [CO=BALANCEID:balancer.lb1:.mydomain.com]

En el segundo nodo habría que poner lb2.

Reiniciamos los Apaches y ya deberíamos tener el balanceador funcionando ;)

Para probar puedes crearte un fichero distinto en cada máquina y borrar las sesiones autenticadas antes de recargar. En FireFox (Ctrl+Mayús.+Supr).

Proteger directorios con contraseña en Apache (.htaccess)

Wednesday, November 7th, 2007

Para proteger directorios en Apache lo primero que tenemos que hacer es editar nuestro fichero de configuración (apache2.conf, httpd.conf, o el de nuestro host virtual)

Buscamos la línea en la que se hace referencia a nuestro directorio local y cambiamos el parámetro AllowOverride None por AllowOverride All.

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All

Order allow,deny
allow from all
</Directory>

Reiniciamos el Apache. Una vez hecho esto tenemos que crear un fichero llamado .htaccess en el directorio que queremos proteger por contraseña con el siguiente contenido:

AuthType Basic
AuthName privado
AuthUserFile /etc/htpasswords
Require user miusuario

El parámetro Require user especifica que usuario o usuarios (separados por espacios) tendrán acceso al directorio.

Para crear el fichero con las contraseñas ejecutamos el siguiente comando:

htpasswd -c /etc/htpasswords miusuario

Una vez hecho esto al intentar acceder al directorio desde el navegador nos mostrará una ventana para que autentiquemos.

Instalar apache2 + mod_python en Debian

Thursday, October 18th, 2007

Hechamos mano de nuestro querido apt-get y tecleamos lo siguiente:

apt-get install apache2
apt-get install libapache2-mod-python

Abrimos el fichero de configuración de nuestro sitio por defecto o del sitio en el que queramos ejecutar ficheros .py.

nano /etc/apache2/sites-available/default

Añadimos las líneas en rojo:

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all

AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug On

# This directive allows us to have apache2’s default start page
# in /apache2-default/, but still have / go to the right place
# RedirectMatch ^/$ /apache2-default/
</Directory>

Reiniciamos el servidor:

/etc/init.d/apache2 restart

Creamos un fichero de prueba en /var/www llamado test.py con el siguiente contenido:

nano /var/www/test.py

def index(req):
return “Test OK”;

Y para comprobar si todo ha ido bien abrimos http://localhost/test.py

Y ya estaría instalado ;)

Cómo ocultar la versión de PHP en Apache

Monday, August 20th, 2007

Aunque en el servidor pongamos la directiva “ServerTokens Prod”, que oculta la versión de Apache y php en ciertas cabeceras y en los mensajes de error, la versión de PHP se puede seguir viendo en una de las cabeceras.

HEAD http://apache-es.org/index.php
200 OK
Connection: close
Date: Fri, 16 Jun 2006 01:16:30 GMT
Server: Apache
Content-Type: text/html; charset=UTF-8
Client-Date: Fri, 01 Jan 2007 21:48:13 GMT
Client-Peer: 192.168.0.102:80
Client-Response-Num: 1
X-Powered-By: PHP/5.1.2-1+b1 

Para ocultarlo, basta con ir al fichero php.ini, y poned a “off” la línea “expose_php = On”. Esta línea viene activada en la mayoría de las distribuciones, y en las compilaciones de PHP.

Via apache-es

Autentificación LDAP en Apache 2

Tuesday, June 26th, 2007

En el fichero httpd.conf en el area server config tenemos que poner el tipo de seguridad que utiliza nuestro LDAP. Por ejemplo:

LDAPTrustedMode NONE

Admite 3 tipos, NONE, SSL y TLS/STARTTLS.

Despues en nuestro virtual host tenemos que agregar las siguientes opciones marcadas en rojo:

<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2’s default start page
# in /apache2-default/, but still have / go to the right place
#RedirectMatch ^/$ /apache2-default/
AuthType Basic
AuthName “acceso LDAP”
AuthBasicProvider ldap
AuthzLDAPAuthoritative off
AuthLDAPURL “ldap://localhost:389/dc=nodomain”
Require valid-user

</Directory>

Y con eso ya estaría, si alguien consigue pasar la autentificacion Web a Drupal que me avise ;)

Tomcat: Balanceo entre dos servidores usando Apache y Mod_JK

Monday, March 5th, 2007

No entrare en detalles sobre como instalar Apache, Tomcat y el mod_jk ya que no es el motivo de esta mini-guia, si lo necesitais aqui teneis una guia para instalar este entorno sobre Ubuntu.

Para utilizar el balanceo lo primero que debes hacer es definir los nodos activos en las 2 maquinas. Para ello tienes que crear el fichero workers.properties (si no existe) en el mismo directorio donde esta ubicado el archivo httpd.conf del apache.

Este fichero debe ser parecido a esto en uno de los nodos:

worker.list=nodo1,nodo2
worker.nodo1.port=8009
worker.nodo1.host=localhost
worker.nodo1.type=nodo1
worker.nodo1.lbfactor=1
worker.nodo2.port=8009
worker.nodo2.host=hostservidor2
worker.nodo2.type=nodo2
worker.nodo2.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=nodo1,nodo2

En el otro nodo deberia estar el mismo archivo pero apuntando a si mismo y a hostservidor1.

despues hay que añadir el balanceo en el fichero httpd.conf:

JKMount / loadbalancer

Esta línea lo que hace es que todo el trafico del servidor apache sea balanceado, tambien podriamos añadir balanceo solo a determinados directorios, por ejemplo:

JKMount /dominio2 loadbalancer

Con esto ya debería funcionaros el balanceo, teneis que aseguraros de que las maquinas se vean entre ellas y sean accesibles por nombre de host. Para ello debeis tener configurado el fichero /etc/hosts o algun servidor dns.

Estado del proceso apache con mod_status

Sunday, February 18th, 2007

Este modulo muestra estado del proceso de apache y el uso de la cpu, puede venirnos bien si tenemos problemas de rendimiento o para realizar analisis de rendimiento.

A partir de la version 1.1 de apache ya viene incorporado.

Para utilizarlo solo hay que descomentar (si no esta ya descomentada) la linea:

LoadModule status_module /usr/lib/apache/mod_status.so

y despues añadir las siguientes lineas al final (o donde quieras) del fichero httpd.conf:

<Location /server-status>
SetHandler server-status

Order Deny,Allow
Deny from all
Allow from .foo.com
</Location>

Despues reiniciar el servidor apache, o en vez de eso hacer /etc/init.d/apachectl reload para cargar los cambios (esto aun no lo he probado, pero me han dicho que funciona… ¬¬)

Informacion obtenida de la documentacion de apache.