Mostrando entradas con la etiqueta apache webserver. Mostrar todas las entradas
Mostrando entradas con la etiqueta apache webserver. Mostrar todas las entradas

jueves, 4 de agosto de 2011

Autenticación básica Nginx en Debian 6.0

Desde hace un año aproximadamente uso Nginx en alguno de los servidores que administro y la verdad es que los resultados son más que aceptables, sobre todo desde que liberaron la versión 1.0.

No había trasteado aún no la autenticación básica sobre Nginx, pero es muy muy sencillo, incluso me atrevería a afirmar que más sencillo que en Apache2.

Indico los pasos que debéis seguir para habilitar "basic_auth" en Debian GNU/Linux Squeeze:

1.-Lee la documentación oficial!
2.- Instala apache2-utils(si, paradojas de la vida, dejas Apache2, pero....)
aptitude install apache2-utils
3.-Crea el fichero que almacenará las credenciales:

root@:/etc/nginx/conf.d# htpasswd -c /etc/nginx/conf.d/htpasswd admin
New password:
Re-type new password:
Adding password for user admin

4.- El fichero de configuración de Nginx debería ser similar a este:

server {
listen 3312;
auth_basic on;
server_name server.org;
include /etc/nginx/php.conf;
access_log /var/log/nginx/server.org.access_log;
error_log /var/log/nginx/server.error_log;
root /var/www/myfolder;
location /admin {
auth_basic "E logho ti, de quen ves sendo...";
auth_basic_user_file conf.d/htpasswd;
}
}

5.- Recargar la configuración de Nginx

root@x:/home/apermuy# /etc/init.d/nginx reload
Reloading nginx configuration: nginx.

jueves, 23 de junio de 2011

SELinux, RHEL y cosas extrañas...

Últimamente entre reuniones de proyectos y coordinación apenas tengo tiempo para ponerme con temas de administración de sistemas, aún así, le sigo dedicando tiempo.
El caso es que he finalizado la fase de desarrollo de un sitio web con Drupal 7 y quería subirlo al servidor de producción. Todo iba como la seda hasta que al levantar el vhost me encuentro con :
[root@XXX httpd]# /etc/init.d/httpd restart
Parando httpd: [ OK ]
Iniciando httpd: Warning: DocumentRoot [/var/www/html/biblioteca] does not exist
Warning: DocumentRoot [/var/www/html/moodle-testing20/moodle] does not exist
[ OK ]


¡DocumentRoot does not exist! Imposible, pensé. Al final, después de darle muchas vueltas leí en este post que podría ser que SELinux impidiese añadir directorios. Basta con añadirlo al contexto de SE y listo:
chcon -R system_u:object_r:httpd_sys_content_t /var/www/html/biblioteca

martes, 21 de junio de 2011

logwatch

La próxima semana voy a impartir un curso de Drupal en Lugo, de 16:30 a 20:30 de Lunes a Viernes y el Sábado día 2 de 10:00 a 13:30.

El primer día lo dedicaré completo a conocer el entorno de trabajo, desde VirtualBox hasta PHPMyAdmin y demás.

El servidor web que utilizaremos será Apache2, como suele ser habitual en este tipo de cursos express. Veremos temas básicos, desde la instalación a la configuración de virtual hosts y como no, también algo de seguridad, que nunca está de más. Repasando apps interesantes me he topado con logwatch, que para los que no lo conocéis es un script en Perl que facilita la visualización amigable de logs. La instalación es vía apt y lo único de debemos hacer para que muestre información en la consola es copia el fichero de ejemplo a /etc/logwatch:
cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/

Es posible configurar los reportes para que se envíen vía email y demás, pero esto lo dejamos para otro momento. Ahí os va la salida de logwatch directamente en la consola:
################### Logwatch 7.3.6 (05/19/07) ####################
Processing Initiated: Tue Jun 21 08:51:10 2011
Date Range Processed: yesterday
( 2011-Jun-20 )
Period is day.
Detail Level of Output: 0
Type of Output/Format: stdout / text
Logfiles for Host: creba
##################################################################
--------------------- dpkg status changes Begin ------------------------

Installed:
libconfig-inifiles-perl 2.52-1
mytop 1.6-6
---------------------- dpkg status changes End -------------------------

--------------------- httpd Begin ------------------------

Requests with error response codes
404 Not Found
/calendar/view.php?view=month&cal_d=1&cal_m=12&cal_y=2037: 1 Time(s)
/calendar/view.php?view=month&cal_d=1&cal_m=3&cal_y=2030: 1 Time(s)
/calendar/view.php?view=month&cal_d=1&cal_m=6&cal_y=1925: 1 Time(s)
http://98.126.15.13/proxyheader.php: 1 Time(s)
http://healthforcaring.com/proxyheader.php: 3 Time(s)
http://www.ezhealths.com/proxyheader.php: 1 Time(s)
http://www.hardjob.net/proxyheader.php: 2 Time(s)


miércoles, 6 de abril de 2011

Sobre Memcached, Apache2 y Drupal



Llega un momento en la vida de un sitio web levantado con Drupal(este es mi caso) en que, bien por el número de visitas o por la complejidad de las consultas, se hace necesario instalar y configurar un sistema de cacheo de contenido que agilice el proceso de envío de información.

No voy a entrar en que si proxy inverso, APC o mil gaitas, sólo trataré el proceso de instalación y configuración de memcache ejecutado en una máquina corriendo Debian GNU/Linux 6.0 Squeeze y Apache2 un sitio web con Drupal 6. Comenzamos descargando y activando el módulo "Memcache API and Integration" del sitio drupal.org.

A continuación, lo primero que debemos hacer es actualizar las fuentes de nuestra distribución Debian GNU/Linux:
[root@localhost] aptitude update

Una vez finalizado el proceso instalaremos dos paquetes:
  • memcached: "daemon" o servicio de cacheo diseñado específicamente para que los sitios web dinámicos decrementen la carga de las bases de datos almacenados objetos en memoria. Danga Interactive desarrolló memcached para mejorar la velocidad de LiveJournal.com un sitio que tuvo más de 20 millones de vistas de páginas dinámicas cada día para 1 millón de usuarios con un puñado de servidores web y un puñado de servidores de base de datos. memcached reduce la carga de la base de datos a casi nada, mejorando los tiempos de carga de las páginas para los usuarios, la utilización de los recursos y haciendo más rápido el acceso a las bases de datos.
  • php5-memcache y php5-memcached: Extensión que permite a las aplicaciones escritas en PHP5 comunicarse con los servidores memcache.
Como (casi) siempre en Debian GNU/Linux:
[root@localhost] aptitude -y install php5-memcached php5-memcache memcached

Si este paso se ha ejecutado correctamente debemos configurar qué tipo de estrategia hash utilizará memcache para manejar los objetos de la caché. Dos opciones : standard o consistency. Por lo que leído la tendencia es utilizar esta última, ya que si estamos trabajando con varios servidores memcache evitaríamos problemas al tener que compartir una misma instancia de ejecución de PHP-Apache2. Resumiendo:

Añadimos:

memcache.hash_strategy="consistent"
al fichero /etc/php5/apache2/php.ini.

Modificamos el fichero settings.php de nuestro sitio Drupal y añadimos:


$conf = array(
// The path to wherever memcache.inc is. The easiest is to simply point it
// to the copy in your module's directory.
'cache_inc' => './sites/default/modules/memcache/memcache.inc',

'memcache_servers' => array(
'localhost:11211' => 'default',
'localhost:11212' => 'content',
'localhost:11213' => 'filter',
'localhost:11214' => 'menu',
'localhost:11215' => 'page',
'localhost:11216' => 'views',
),
'memcache_bins' => array(
'cache' => 'default',
'cache_content' => 'content',
'cache_filter' => 'filter',
'cache_menu' => 'menu',
'cache_page' => 'page',
'cache_views' => 'views',
),

Lo realmente curioso de esta configuración para Drupal6, o por lo menos a mi llama mucho la atención, es la posibilidad de dedicar distintas máquinas a diferentes objetos de cache: views, menús...Intentaré darle una vuelta a este tema.
Para finalizar, he visto en este blog, que hay gente que reemplaza el fichero /etc/init.d/memcached por un con contenido similar a este:




#!/bin/bash
prog="memcached"
start() {
echo -n $"Starting $prog "
# Sessions cache.
memcached -m 16 -l 0.0.0.0 -p 11211 -d -u nobody
# Default cache.
memcached -m 32 -l 0.0.0.0 -p 11212 -d -u nobody
# Block cache.
memcached -m 32 -l 0.0.0.0 -p 11213 -d -u nobody
# Content cache. Holds fully loaded content type structures.
memcached -m 16 -l 0.0.0.0 -p 11214 -d -u nobody
# Filter cache. Usually the busiest cache after the default.
memcached -m 32 -l 0.0.0.0 -p 11215 -d -u nobody
# Form cache.
memcached -m 32 -l 0.0.0.0 -p 11216 -d -u nobody
# Menu cache.
memcached -m 32 -l 0.0.0.0 -p 11217 -d -u nobody
# Page cache. Bigger than most other caches.
memcached -m 128 -l 0.0.0.0 -p 11218 -d -u nobody
# Views definition cache.
memcached -m 1 -l 0.0.0.0 -p 11219 -d -u nobody
# Views data cache (may need to be increased if heavily used).
memcached -m 32 -l 0.0.0.0 -p 11220 -d -u nobody

# More caches that might be added later:
# Users table.
#/usr/bin/memcached -m 24 -l 0.0.0.0 -p 11219 -d -u nobody
# Path source cache.
#/usr/bin/memcached -m 4 -l 0.0.0.0 -p 11220 -d -u nobody
# Path destination cache.
#/usr/bin/memcached -m 6 -l 0.0.0.0 -p 11221 -d -u nobody
RETVAL=$?
echo
return $RETVAL
}

stop() {
if test "x`pidof memcached`" != x; then
echo -n $"Stopping $prog "
killall memcached
echo
fi
RETVAL=$?
return $RETVAL
}
case "$1" in
start)
start
;;
stop)
stop
;;

restart)
stop
start
;;
condrestart)
if test "x`pidof memcached`" != x; then
stop
start
fi
;;
*)
echo $"Usage: $0 {start|stop|restart|condrestart}"
exit 1
esac

¿Por que digo similar? Pues muy sencillo, basta con teclear:
memcached -h
y observar todos los parámetros de configuración que acepta en la línea de comandos. En mi opinión se debe tener especial cuidado a la hora de manejar la cantidad de memoria máxima a utilizar, el protocolo de escucha, el número máximo de conexiones simultáneas. 






[ Memcache funcionando en Drupal 6 ]


lunes, 22 de noviembre de 2010

Apache2 , SSL y passphrase

Si utilizais Apache2 con SSL es probable que cuando instaléis el certificado en vuestro sitio y reinicies el servicio, Apache2 se "queje" pidiendo la contraseña del certificado. Saltar este paso es muy sencillo.

1.- Editamos el fichero /etc/apache2/mod-enabled/ssl.conf
2.- Cambiamos SSLPassPhraseDiaglog builtin por SSLPassPhraseDialog exec:/usr/sbin/asslpass
donde asslpass contiene

#!/bin/bash
echo "mi-pass-del-certificado"
3.- chmod +x /usr/bin/asslpass para otorgar permisos de ejecución y asunto resuelto.