martes, 30 de octubre de 2012

Limtar cantidad máxima de correos por envio


Para limitar la cantidad máxima de correos  hay que seguir los siguientes pasos:

Cpanel


Ingresa a WHM / Exim Configuration Manager / Avances Editor
agregar:
recipients_max = 20

botón Save, y listo

Plesk

Ingresa a shell y edita o crea el archivo  /var/qmail/control/maxrcpt y se agrega la cantidad de destinatarios máximos como un numero;  reinicia qmail y listo


TIP

En lo personal opino que un limite de 20-25 correos simultáneos es más que suficiente; para los que desean notificar a todos los clientes o empleados el camino correcto son  grupos y listas de correos, así como otros sistemas de envío







miércoles, 17 de octubre de 2012

monitoreo de interrupciones en linux

¿Qué son las interrupciones?


En cuestión hardware es solo una terminal (conexión física) del procesador la cual recibe señales de todos los componentes del hardware (disco duro, red, usb, serial, etc) notificando que necesita ser atendido. Esta señal física es enviada al sistema operativo ( windows, linux, mac os, iOS, android, BB, etc) quien decide que software atiende la petición de recibir o enviar información al dispositivo indicado.

Ejemplo practico

Abres un documento de word y este le envía la petición al disco duro que lo busque y entregue la información, cuando el disco duro termina de leer el archivo activa una interrupción y le avisa que ya esta listo.  Al mismo tiempo tienes interrupciones de la tarjeta de red esperando información, de la tarjeta de sonido escuchando música, del teclado y mouse... y muchas otras...

Monitoreo de interrupciones

Este lo puedes hacer de un modo comodo con el software  itop para linux,  este lo descargas de https://github.com/kargig/itop

Aquí una captura de pantalla 



                                IRQs/Second
              Device (IRQ)            TOTAL
  IO-APIC-edge timer (  0):               0
  IO-APIC-edge i8042 (  1):               0
        IO-APIC-edge (  4):               0
IO-APIC-edge parport (  7):               0
   IO-APIC-edge rtc0 (  8):               0
IO-APIC-fasteoi acpi (  9):               0
  IO-APIC-edge i8042 ( 12):               0
IO-APIC-edge ata_pii ( 14):               0
IO-APIC-edge ata_pii ( 15):               0
xen-dyn-event xenbus ( 16):               0
 xen-dyn-event blkif ( 17):               4
 xen-dyn-event blkif ( 18):               0
 xen-dyn-event blkif ( 19):               0
  xen-dyn-event eth0 ( 20):               0
  xen-dyn-event eth1 ( 21):             228
  xen-dyn-event eth2 ( 22):               0
IO-APIC-fasteoi uhci ( 23):               0
  xen-dyn-event eth3 ( 24):               0
  xen-dyn-event eth4 ( 25):               0
Function call interr (CAL):               0
                     (ERR):               0
Local timer interrup (LOC):             604
Machine check except (MCE):               0
 Machine check polls (MCP):               0
                     (MIS):               0
Non-maskable interru (NMI):               0
Performance monitori (PMI):               0
Performance pending  (PND):               0
Rescheduling interru (RES):             894
 Spurious interrupts (SPU):               0
Threshold APIC inter (THR):               0
      TLB shootdowns (TLB):            1496
Thermal event interr (TRM):               0




Ejemplo de interpretación,  eth1 tiene actualmente 228 interrupciones por segundo,  si alguna vez recibes un ataque de red tal ves las interrupciones suban a 2000, 3000, 5000.   si tu procesador es muy interrumpido  parecerá que tu hardware esta lento; no solo puede ser por ataques si no por fallas del hardware, por ejemplo un disco duro dañado intentando varias veces leer la información






martes, 16 de octubre de 2012

instalar mod_pagespeed en centos, cpanel o plesk



crear archivo  /etc/yum.repos.d/mod-pagespeed.repo  y agregar




RHEL/CentOS/Fedora 32-Bit

[mod-pagespeed]
name=mod-pagespeed
baseurl=http://dl.google.com/linux/mod-pagespeed/rpm/stable/i386
enabled=1
gpgcheck=0

RHEL/CentOS/Fedora 64-Bit

[mod-pagespeed]
name=mod-pagespeed
baseurl=http://dl.google.com/linux/mod-pagespeed/rpm/stable/x86_64
enabled=1
gpgcheck=0



Ejecutar en shell

# yum --enablerepo=mod-pagespeed install mod-pagespeed

reinicia apache y listo...

para comprobarlo revisa en phpinfo

HTTP Response Headers
X-Mod-Pagespeed1.0.22.7-2003


Existen muchos parámetros a personalizar,  aquí pueden ver ejemplos en acción

http://www.modpagespeed.com/


Almacenar el cache en RAM


Para ello editamos /etc/fstab y agregamos

tmpfs                   /var/www/mod_pagespeed/cache    tmpfs  size=256m,mode=0775,uid=httpd,gid=httpd    0    0 


// en shell
# mv /var/www/mod_pagespeed/cache /var/www/mod_pagespeed/cache_bak
mkdir /var/www/mod_pagespeed/cache
chown apache:apache /var/www/mod_pagespeed/cache
# mount -a




en donde 256m  es la cantidad de memoria asignada a la unidad virtual en RAM; la cantidad necesaria puede variar mucho según nuestras necesidades, un modo es ver cuanto espacio en disco ocupa despues de trabajar un rato con el comando

# du -hs /var/www/mod_pagespeed/cache

Esto puede tomar algunos minutos dependiendo el tipo de sitios alojados, en mi caso ocupo 500M  así que pondré 700M para asegurar que tendré lo suficiente

Desactivando y Activando mod_pagespeed con .htaccess

La sintaxis es:

<IfModule pagespeed_module>
ModPagespeed off
</IfModule>

o


<IfModule pagespeed_module>
ModPagespeed off

</IfModule>

o personalizar parámetros como:


<IfModule pagespeed_module>
  ModPagespeed on
  ...

  ModPagespeedDisableFilters inline_css,inline_javascript

  ModPagespeedEnableFilters move_css_to_head
  ModPagespeedEnableFilters rewrite_css,rewrite_javascript
  ModPagespeedEnableFilters outline_css,outline_javascript
  ...

</IfModule>








Leer un campo de un iframe con jquery

Si tenemos un html con un iframe y dentro de este hay un campo input que deseamos leer el código es:


$("#idframe").contents().find("input#idcampo").val()

así de fácil







miércoles, 10 de octubre de 2012

Re Calcular estadisticas en Plesk

Para regenerar las estadísticas de un dominio es por medio del comando:

/usr/local/psa/admin/sbin/statistics --calculate-one --domain-name=midominio.com

Si deseas todos los dominios crea el siguiente script:


cd /var/www/vhosts
find * -maxdepth 0 -type d    -name  "*" | while read FILENAME
do
echo "Procesando ..."
echo ${FILENAME}
/usr/local/psa/admin/sbin/statistics --calculate-one --domain-name=${FILENAME}
done



Pero si deseas todos los dominios y tienes problemas de carga ya sea porque es un equipo pequeño o tienes demasiados dominios la solución es este script



cd /var/www/vhosts
find * -maxdepth 0 -type d    -name  "*" | while read FILENAME
do
echo "Procesando ..."
echo ${FILENAME}
/usr/local/psa/admin/sbin/statistics --calculate-one --domain-name=${FILENAME} &
sleep 2
ionice -c3 -p $(ps ax | grep "logrotate" | grep -v grep | awk '{ print $1 }')
renice 13 -p $(ps ax | grep "logrotate" | grep -v grep | awk '{ print $1 }')

ionice -c3 -p $(ps ax | grep "webali" | grep -v grep | awk '{ print $1 }')
renice 15 -p $(ps ax | grep "webali" | grep -v grep | awk '{ print $1 }')
ionice -c3 -p $(ps ax | grep "awstat" | grep -v grep | awk '{ print $1 }')
renice 27 -p $(ps ax | grep "awstat" | grep -v grep | awk '{ print $1 }')
sleep 55
done

Este ultimo script realiza el trabajo más lento y con menos prioridad, ademas si se traba en un dominio por algún archivo corrupto  este seguirá procesando los demás dominios.


TIP:
en algunas actualizaciones presenta el siguiente error: 
error: error accessing /usr/share/tomcat6/logs: No such file or directory
error: tomcat:1 glob failed for /usr/share/tomcat6/logs/*.log

Esto se soluciona creando el directorio /usr/share/tomcat6/logs/




.

lunes, 8 de octubre de 2012

Falla nginx con plesk 500 dominio


Sintomas:
1-
nginx no responde al actualizar

2- al ejecutar

# /usr/local/psa/admin/bin/nginxmng --disable
muestra el error  PHP Fatal error:  Allowed memory size of 134217728 bytes exhausted (tried to allocate 40961 bytes) in /usr/local/psa/admin/plib/Template/Processor.php on line 20

Solución

Editar  /usr/local/psa/admin/conf/php.ini ,  cambiar memory_limit = 256M y reiniciar psa.

después ejecutamos



# /usr/local/psa/admin/bin/nginxmng --disable
# /usr/local/psa/admin/bin/nginxmng --enable

y listo





Técnicas MySQL para Alta Disponibilidad

Encontré esta diapositiva con un muy buen resumen sobre esta temática.







sábado, 6 de octubre de 2012

Montar CD ISO en Linux

Para visualizar los archivos de una imagen ISO se tiene que montar


# mount -o loop /ruta/mi_imagen.iso /mnt/mi_imagen

este comando da igual si es CD o DVD



Ejemplo de factura electrónica 2022 en Panamá (DGI)

Código fuente Facturación 2022 Panamá Panamá comenzó el proceso de migración a facturación electrónica,  actualmente ya salieron los primero...