Controlar el ancho de banda en Apache con mod_cband en centos 5.2

Aqui os escribo  este tutorial de mod_cband que es un modulo de apache nos permite controlar el ancho de banda usado por los usuarios conectados al servidor, ya sea en forma individual o general.

Instalación:

Descargamos el modulo.
Pagina del proyecto: http://sourceforge.net/projects/cband/

# wget http://downloads.sourceforge.net/cband/mod-cband-0.9.6.1.tgz?modtime=1138205796&big_mirror=0

Descomprimimos las fuentes

# tar -xvf mod-cband-0.9.6.1.tgz

Instalando dependencias necesarias

# yum install http-devel

Compilando las fuentes

# ./configure
# make
# make install

Agregamos el modulo al apache en el archivo httpd.conf, por defecto se agrega automáticamente la linea al compilar, si no fuera el caso, agregar la siguiente linea

# vim /etc/httpd/conf/httpd.conf

LoadModule cband_module modules/mod_cband.so

También es necesario agregar

CBandScoreFlushPeriod 1
CBandRandomPulse On

Reiniciamos el apache

# /etc/init.d/httpd restart

Ahora a configurar los dominios virtuales del apache:

En mi caso lo tengo en /etc/httpd/conf.d/virtual.conf
Se puede dar el caso de tenerlo en el mimos httpd.conf

Configuraciones y Limitaciones por Sitio

CBandSpeed 1024kbps 10 30
CBandRemoteSpeed 20kb/s 3 3

El parámetro CBandSpeed es una configuración Global para dicho Sitio, definimos que lo usuarios no podran sobrepasar los 1024Kbps, 10 respuestas por segundo y 30 conexiones abiertas.

El parámetro CbandRemoteSpeed es una configuración para cada usuario conectado en forma separada, definimos que el usuario en forma individual podra descargar a lo máximo 20Kb/s con 3 peticiones por segundo y 3 conexiones permitida.

Asi quedara nuestro virtual host

# vim /etc/httpd/conf.d/virtual.conf

«<«VirtualHost *:80″>»
DocumentRoot /var/www/html/miweb.com
ServerName miweb.com
ServerAlias www.miweb.com
ErrorLog logs/miweb.com_error.log
CustomLog logs/miweb.com_access.log combined
CBandSpeed 1024kbps 10 30
CBandRemoteSpeed 50kb/s 3 3
LogLevel warn
«<«/VirtualHost»>»

Nota: por alguna razon al poner mayor o menor no sale, asi que agrege «>» y «<«. para para que funcione no deben ir las comillas doble. Mucho ojo con eso.

Reiniciamos el apache

# /etc/init.d/httpd restart

y probamos nuestra web…. recomendaciones, podemos cambiar las variables, reiniciar el apache y probar.

Otras opciones

Podemos limitar el trafico mensual con:

CBandLimit 100M

Podemos ver en Linea el trafico y conexiones, etc (estatus de cband) con:

Creamos la carpeta

# mkdir /var/www/scoreboard

Le damos permisos para el apache

# chown apache:apache /var/www/scoreboard

Y agregamos al virtual host

CBandScoreboard /var/www/scoreboard
CBandPeriod 4W

«<«Location /cband-status»>»
SetHandler cband-status
«<«/Location»>»
«<«Location /cband-status-me»>»
SetHandler cband-status-me
«<«/Location»>»

Todo lo anterior se agrega al dominio virtual, quedando asi:

«<«VirtualHost *:80″>»
DocumentRoot /var/www/html/miweb.com
ServerName miweb.com
ServerAlias www.miweb.com
ErrorLog logs/miweb.com_error.log
CustomLog logs/miweb.com_access.log combined
CBandLimit 1000M
CBandSpeed 1024kbps 10 30
CBandRemoteSpeed 50kb/s 3 3
LogLevel warn
CBandScoreboard /var/www/scoreboard
CBandPeriod 4W
«<«Location /cband-status»>»
SetHandler cband-status
«<«/Location»>»
«<«Location /cband-status-me»>»
SetHandler cband-status-me
«<«/Location»>»
«<«/VirtualHost»>»

Nota: por alguna razon al poner mayor o menor no sale, asi que agrege «>» y «<«. para para que funcione no deben ir las comillas doble. Mucho ojo con eso.

Reiniciamos el apache

# /etc/init.d/httpd restart

De lo anterior limitamos el trafico mensual a 1GB
para ver las estadísticas:

http://miweb.com/cband-status o http://miweb.com/cband-status-me

A probar…
Suerte

Instalar TRAC en CentOS 5

//www.edgewall.org/gfx/trac_logo.png

Guía breve para instalación básica de TRAC. ¿Qué es TRAC? Yo lo definiría como un “documentador” :P pero la definición más técnica sería una wiki con sistema de seguimiento de errores para proyectos de desarrollo de software. Incorpora una interfaz para Subversion, una línea de tiempo que muestra los eventos actuales y pasados del proyecto en orden, etc. Más info en Trac.

Esta pequeña guía ha funcionado para CentOS 5.
Entorno a instalar

  • Apache 2 utilizando mod_dav_svn
  • Trac mediante Apache 2 con mod_python
  • Repositorios de SVN en /srv/svn, accesible por http://server/svn/proyecto
  • Proyectos de TRAC en /srv/trac, accesible por http://server/trac/proyecto

Requisitos

  • Python >= 2.3
  • Para sistemas RPM: python-devel 7 python-xml
  • setuptools
  • Base de datos: SQLite, PostgreSQL o MySQL (escogemos SQLite por recomendación de Trac Wiki)
  • ClearSilver: opcional para algunos plugins que lo requieren Si queremos control de versiones necesitamos Subversion (versions recommended: 1.2.4, 1.3.2 or 1.4.2)

1. Instalamos subversion y el mod de SVN para Apache

# yum install subversion mod_dav_svn

Si las siguientes dos líneas no están presentes, añadelas (revisar subversion.conf en conf.d, porque puede que estén ahí)

LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so

2. Instalamos el mod para python, algunos paquetes necesarios a posteriori y ClearSilver del repositorio de Dag

# yum install mod_python
# yum install neon neon-devel python-devel swig

# wget Dag.Wieers.com/ClearSilver
# rpm -i clearsilver-0.10.4-1.el5.rf.i386.rpm
# wget Python ClearSilver
# rpm -i python-clearsilver-0.10.4-1.el5.rf.i386.rpm

3.  Algo que no aparece en ninguna de las guías es la instalación de SetupTools. Nada más alejado de la realidad que yo quiera o pretenda entender que significa y que hace SetupTools. Sólo sé que es necesario para instalar luego el Trac. No sé si soy el único, pero cada vez que entro en esa web me dan ganas de suicidarme. En fin, cosas que tiene uno. Para instalar SetupTools hacemos:

# wget http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py

4. Instalar Trac

# wget http://ftp.edgewall.com/pub/trac/Trac-0.11.2.1.tar.gz
# tar xfz Trac-0.11.2.1.tar.gz
# cd Trac-0.11.2.1

# python ./setup.py install

Ahora nos pregunta una serie de cosas: nombre de nuestro proyecto, tipo de base de datos(por defecto y recomendación, lo dejamos en default que es SQLite), path hacia los repositorios, path al proyecto, etc.

Creamos nuestro repositorio de SVN

# svnadmin create –fs-type fsfs /srv/svn/proyecto

Inicializamos un proyecto de TRAC

# mkdir /srv/trac/
# trac-admin /srv/trac/proyecto initenv

El path para el repositorio es /srv/svn/proyecto
Damos permisos a Apache sobre los directorios que requerimos.

# chown -R apache.apache /srv/svn/
# chown -R apache.apache /srv/trac/

Le decimos a Apache donde está el repositorio de SVN, creando configuración adicional para Apache

# vim /etc/httpd/conf.d/subversion.conf

<Location /svn/proyecto>
DAV svn
SVNPath /srv/svn/
AuthType Basic
AuthName “Repositorio de SVN”
AuthzSVNAccessFile /srv/svn/svn-acl-conf
AuthUserFile /srv/svn/.htpasswd
Require valid-user
</Location>

Creamos un fichero .htpasswd, donde añadimos los usuarios y su password con acceso al repositorio

# touch /srv/svn/proyecto.htpasswd
# htpasswd -m /srv/svn/proyecto.htpasswd

Creamos una Lista de Control de Acceso (ACL) para el repositorio

# vim /srv/svn/svn-acl-conf

Y añadimos las siguientes directivas

[proyecto:/]
= rw

Le decimos a Apache donde está el TRAC, añadiendo otro archivo de configuración

# vim /etc/httpd/conf.d/trac.conf

<Location /trac/proyecto>
SetHandler mod_python
PythonHandler trac.web.modpython_frontend
PythonOption TracEnv /srv/trac/proyecto
PythonOption TracUriRoot /trac/proyecto
<Location>

<Location /trac/proyecto/login>
AuthType Basic
AuthName “trac”
AuthUserFile /srv/trac/proyecto.htpasswd
Require valid-user
<Location>

Añadimos un usuario de TRAC

# touch /srv/trac/proyecto.htpasswd
# htpasswd -m /srv/trac/proyecto.htpasswd usuario

Le damos permisos de admin

# trac-admin /srv/trac/ permission add TRAC_ADMIN

Reiniciamos Apache

# service httpd restart

NOTA1: el WebAdmin Plugin no hace falta en la versión 0.11, ya viene por defecto. Sólo hay que dar permisos de TRAC_ADMIN por consola a un usuario y la pestaña de “Admin” aparecerá.

Links

Instalar XCache en CentOS 5

Breves instrucciones para compilar y instalar Xcache en Centos 5. No tiene mayor dificultad.

# wget http://xcache.lighttpd.net/pub/Releases/1.2.2/xcache-1.2.2.tar.gz
# tar -zxf xcache-1.2.2.tar.gz
# cd xcache
# phpize
# ./configure –enable-xcache
# make
# su
# make install

Instala las extesiones compartidas de php : /usr/lib/php/modules

# cat xcache.ini >> /etc/php.ini

Editamos php.ini para instalar Xcache como extension

# joe /etc/php.ini

zend_extension = /usr/lib/php/modules/xcache.so

La configuración del xcache está explicada en comentarios en el propio php.ini, pero hay cosas relevantes como el xcache.count, relativo al número de procesadores de nuestro sistema. Averiguamos el número de procesadores y luego editamos el php.ini

# cat /proc/cpuinfo |grep -c processor
xcache.count = 4

Las demás variables se pueden configurar fácilmente leyendo la documentación. Ahora podemos crear un archivo php con la función phpinfo ( ) y moverlo a nuestro directorio root para comprobar que Xcache funciona correctamente. No olvidemos reiniciar Apache!

# /etc/init.d/httpd restart

Instalar el Admin

Para instalar el admin primero creamos un fichero php como el siguiente para obtener el password encriptado en md5

echo md5("password");

Copiamos el resultado en php.ini, en la variable xcache.admin.pass

xcache.admin.pass = "password_en_md5"

Ahora copiamos el directorio web de Xcache a nuestro document root de apache


# cp -R admin/* /var/www/midominio.com/admin/.

Reiniciamos Apache. Accedemos al admin, introduciendo user y password.

Sobre el Error Segmentation Fault

Algo que me sucedió en la instalación de Xcache en Centos 5. Al comprobar los logs de Apache comprobé que había numerosos errores de Segmentation Fault.

# php -v
Segmentation fault

# cat /var/log/httpd/error_log
[Thu Oct 02 13:43:39 2008] [notice] child pid 15978 exit signal Segmentation fault (11)
[Thu Oct 02 13:43:42 2008] [notice] child pid 15979 exit signal Segmentation fault (11)
[Thu Oct 02 13:43:50 2008] [notice] child pid 15980 exit signal Segmentation fault (11)
[Thu Oct 02 13:44:08 2008] [notice] child pid 15981 exit signal Segmentation fault (11)
[Thu Oct 02 13:44:12 2008] [notice] child pid 15982 exit signal Segmentation fault (11)
[Thu Oct 02 13:44:33 2008] [notice] child pid 15983 exit signal Segmentation fault (11)

Para evitarlo hacemos lo siguiente


# rm /dev/zero
# mknod /dev/zero char 1 5
# /etc/init.d/httpd restart

Otro problema relativo. Aunque creemos el fichero /dev/zero, por una limitación (no se si de php.ini o el propio kernel) puede que el valor de cache que asignamos a xcache.size es superior a lo que puede guardar y eso provoca el siguiente error:

xcache /dev/zero: No space left on device

Para arreglar, hemos de reducir el valor asignado a xcache.size, por ejemplo empezando por 8M y reiniciando apache. No deberíamos ver más ese error ni Segmentation Faults en el apache. Y si los hay, deberían ser por otro motivo que no fuera Xcache.

Desinstalar SiteBuilder en Plesk con CentOS

Hace unos días me encontre problemas con el Sitebuilder que al actualizar el panel control plesk de 8.4 a 8.6.

Razón de más para eliminarlo para evitar que pueda darnos algún problema o que este siempre corriendo en nuestro servidor por pocos recursos que consuma.

Para desinstalarlo solo tenemos que utilizar YUM:

  1. Ejecutar: yum remove sitebuilder
  2. Ejecutar: yum remove php5sb
  3. Ya tenemos el sitebuilder desinstalado.

Para más información consultar “Uninstall SiteBuilder