Entradas

Mostrando entradas de 2012

Obtener DLL's faltantes en php 5.3

PHP 5.3 elimino varios DLL's de su instalación por default, estos los puedes descargar en la siguiente dirección http://downloads.php.net/pierre/ agrégalos al php.ini, reinicia apache y listo

Ejecutar mysql desde shell

Algunas veces necesitamos ejecutar un Query SQL en un script de shell #mysql --host= 127.0.0.1 -u elusuario --password= lacontrasena -e ' SELECT * from mi tabla`; ' labasededatos Solo remplacen lo que esta en rojo y listo.

Como saber si mi dominio esta boletinado como spam

Para verificar si un dominio se encuentra boletinado como fuente de spam les dejo estas páginas http://antispamsniper.com/uribl.php https://admin.uribl.com/ y para verificar la ip de un servidor es: http://dnsbl.info otro sitio interesante es http://www.mxtoolbox.net Espero les sirva

Respaldando KJots

Imagen
KJots es una aplicación para hacer anotaciones, permitiendo organizarlas dentro de carpetas y notas por separado, en mi caso muy practico porque me gusta tener anotaciones de todo lo que hago. Todo lo capturado se almacena en : /root/.kde/share/apps/kjots Basta con copiar los archivos para tener un respaldo

Como leer wtmp

El archivo /var/log/wtmp cuenta con información de acceso al servidor de ftp, pero este archivo se encuentra en binario. para leerlo escribes # utmpdump /var/log/wtmp y para enviar el resultado a un archivo es # utmpdump /var/log/wtmp > archivo.txt y listo

Como crear un diseño para envio por email

Para crear un diseño agradable para nuestro boletín de noticias les presento esta página http://www.campaignmonitor.com/templates/ Espero la disfruten

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

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/i

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-Pagespeed 1.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/cac

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

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&q

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. Alternativas de alta disponiblidad en MySQL - MySQL Meetup - Montevideo - Marzo 2012 from Nelson Calero

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

Mover cola de correo de qmail a ramdisk para disminuir iowait en plesk

Si tu actividad de correo es muy intensa posiblemente se te eleve el iowait por causa del correo una opción es pasar la cola de correo a una unidad en RAM y aquí te presento como hacerlo edita /etc/fstab # nano /etc/fstab y agrega none    /ram_qmailqueue      tmpfs   defaults,size=100m,nr_inodes=999k,mode=775      0       0 en este caso se le asignaron 100Mb  de RAM a esa unidad virtual; con la experiencia a futuro aumentaras o disminuirás la cantidad según sean tus necesidades ahora para terminar de configurar ejecutamos: # mkdir /ram_qmailqueue # mount -a # chmod 750 /ram_qmailqueue # chown qmailq:qmail /ram_qmailqueue # cd /var/qmail/ # mv queue queue_bak # ln -s /ram_qmailqueue /var/qmail/queue # rsync -av /var/qmail/queue_bak/* /ram_qmailqueue IMPORTANTE,  al reiniciar el servidor el disco en RAM estara vacio, asi que es importante volver a ejecutar el rsync;  un modo comodo es editar /etc/init.d/qmail  buscar start(){   y despues incluir el comando; as

apache No space left on device y si hay espacio en disco

Situación:  Apache no inicia  el log muestra [Fri Jul 13 22:03:17 2012] [emerg] (28) No space left on device : mod_fcgid: Can't create global fcgid-pipe mutex [Fri Jul 13 22:07:05 2012] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) [Fri Jul 13 22:07:05 2012] [error] (28) No space left on device : Cannot create SSLMutex Configuration Failed pero si hay espacio en disco # df -h S.ficheros            Size  Used Avail Use% Montado en /dev/xvda2             77G   17G   57G  23% / tmpfs                 1,5G     0  1,5G   0% /dev/shm /dev/xvda1             97M   49M   44M  53% /boot y si hay nodos # df -hi S.ficheros            Inodes   IUsed   IFree IUse% Montado en /dev/xvda2              4,9M    224K    4,7M    5% / tmpfs                   367K       1    367K    1% /dev/shm /dev/xvda1               26K      44     26K    1% /boot El problema esta en los semáforos, los cuales se  terminaron; ¿Qué es un semáforo? E

Agregando mi sitio a google

Para agregar tu sitio a google es muy sencillo,  solo rellena el siguiente formulario http://www.google.com/addurl.html y listo

como bloquear china, rusia, korea y otros países con iptables

Un gran problema son los contantes ataques y escaneos de bots, una solución es bloquear los países más conflictivos y que no contamos con relación comercial o similar con ellos. Hace tiempo encontré un buen script, ya no recuerdo la fuente pero aquí se los dejo. #EDITAR LISTAS DE PAISES DESEADOS ISO="af cn ru nl pl kr" ### Set PATH ### IPT=/sbin/iptables WGET=/usr/bin/wget EGREP=/bin/egrep ### No editing below ### SPAMLIST="countrydrop" ZONEROOT="/root/iptables" DLROOT="http://www.ipdeny.com/ipblocks/data/countries" cleanOldRules(){ $IPT -F $IPT -X $IPT -t nat -F $IPT -t nat -X $IPT -t mangle -F $IPT -t mangle -X $IPT -P INPUT ACCEPT $IPT -P OUTPUT ACCEPT $IPT -P FORWARD ACCEPT } # create a dir [ ! -d $ZONEROOT ] && /bin/mkdir -p $ZONEROOT # clean old rules cleanOldRules # create a new iptables list $IPT -N $SPAMLIST for c  in $ISO do         # local zone file         tDB=$ZONEROOT/$c.zone    

myisam vs innodb, como decidir?

A simple vista la pregunta eterna, y he aquí una respuesta fácil y rápida No te compliques si no tienes una necesidad muy especial Utiliza   innodb cuando tengas mucha escritura o requieres que se elimine o actualice información en cascada automáticamente. Utiliza  myisam cuando exista poca escritura y se notará mucho más rápido así de fácil.

buscar y localzar c99shell de modo automatico

Imagen
Es común que los hosting compartidos tengan problemas con scripts como el c99shell, el cual permite administrar contenido, algunas cosas como instalar y ejecutar codigo  y más; todo dependiendo de nuestra configuración Aquí una captura Les presento un script que permite buscar buscarlo y enviarnos un reporte por email el cual podemos colocar en cron para cPanel # find /home/*/public_html -name "*.php" -exec grep -i "c99shell" {} \; -print > /tmp/lista_shell.txt # cat /tmp/ lista_shell.txt  | uuencode /tmp/lista_wp.txt | mail -s "c99shell encontrados"  mi_correo@midominio.com o para Plesk # find /var/www/vhosts/*/httpdocs -name "*.php" -exec grep -i "c99shell" {} \; -print > /tmp/lista_shell.txt # cat /tmp/ lista_shell.txt  | uuencode /tmp/lista_wp.txt | mail -s "c99shell encontrados"  mi_correo@midominio.com

script para detectar archivos malignos en wp-content/uploads

Un problema de wordpress son las fallas en versiones antiguas y plugins defectuosos  haciendo que el atacante publique archivos en la carpeta wp-content/uploads   con los cuales posteriormente realizara travesuras les presento un script que sirve para detectarlos y enviar un reporte por email, creen un archivo.sh con lo siguiente, y ejecutenlo en cron para que les de un reporte diario a su correo para Cpanel  du -a /home/*/www/wp-content/uploads | grep php > /tmp/lista_wp.txt cat /tmp/lista_wp.txt | uuencode /tmp/lista_wp.txt | mail -s "Maliciosos Wordpress" mi_correo@midominio.com para Plesk du -a /var/www/vhosts/*/httpdocs/wp-content/uploads | grep php > /tmp/lista_wp.txt cat /tmp/lista_wp.txt | uuencode /tmp/lista_wp.txt | mail -s "Maliciosos Wordpress"  mi_correo@midominio.com agregenlo una vez por día en cron y listo.

proteger wordpress carpeta upload desactivando php

Un gran problema al administrar un servidor compartido es encontrar que subieron archivos a la carpeta wp-content/uploads y lo peor es que son archivos maliciosos en php, así que la solución es desactivar la ejecución de php y redireccionarlos a portada Para ello agregamos lo siguiente en la configuración de apache en cpanel <Directory "/home/*/public_html/wp-content/uploads">     php_admin_flag engine off     AllowOverride None     DirectoryIndex Off     RewriteEngine On     RewriteRule \.php$ - [F,L] </Directory> #segundo disco con paginas <Directory "/disco2/*/public_html/wp-content/uploads">     php_admin_flag engine off     AllowOverride None     DirectoryIndex Off     RewriteEngine On     RewriteRule \.php$ - [F,L] </Directory> en plesk #plesk solo utiliza un disco <Directory "/var/www/vhosts/*/httpdocs/wp-content/uploads">     php_admin_flag engine off     AllowOverride None     DirectoryI

Optimizando el uso de swap

Algunas veces aun contando con suficiente memoria RAM  vemos que existe algo de swap,  he aquí un ejemplo # free -m              total       used       free     shared    buffers     cached Mem:          2928       2869         59          0         26       1688 -/+ buffers/cache:       1154       1774 Swap:         2047         460       1587 Se preguntaran como es posible que si hay  1774M  de memoria libre exista  460M  de memoria en swap, como verán existen  1688M en cache. ¿Porque Linux prefirio utilizar swap a vaciar el cache?  Parte de la respuesta esta en este sitio , si no desean leerlo el resumen es: existen variables que dan preferencia de uso a la memoria. ¿Como forzar que prefiera la memoria RAM a swap? Edita  /etc/sysctl.conf  y agrega: vm.swappiness = 20 En el reportaje original utilizaron de valor en parámetro 30, pero en lo personal a mi me da mejor resultado 20 para servidores de hosting en los cuales tengo suficiente memoria RAM adicio

Plesk error log y sitios en blanco

Si tienes Plesk 8, Plesk 9 o Plesk 10 con 300, 500 , 1000 o más dominios posiblemente tendrás el problema de: Falla webmail horde y atmail Algunos sitios en blanco Apache no inicia, error unable to open logs Causa:  apache por default solo puede abrir hasta 1024 archivos, cada dominio requiere minimo 2 archivos para los logs, si es https requiere minimo 4. Como ver puedo ver la cantidad de archivos abiertos? ejecuta: # ls -l /proc/`pidof -s httpd`/fd | wc -l lo mas probable es que estés poco arriba de 1024. Solución:  ejecutar en shell Plesk 8 y 9 # mysql -uadmin -p`cat /etc/psa/.psa.shadow` psa -e "replace into misc (param,val) values ('apache_pipelog', 'true');" # /usr/local/psa/admin/sbin/websrvmng --reconfigure-al l Plesk 10 # mysql -uadmin -p`cat /etc/psa/.psa.shadow` psa -e "replace into misc (param,val) values ('apache_pipelog', 'true');" # /usr/local/psa/admin/sbin/httpdmng --reconfigure-all

Plesk ERROR: Sub client removal failed: Unable to find service node for web service on domain with id=51

Error de Plesk al eliminar dominio Plesk ERROR: Sub client removal failed: Unable to find service node for web service on domain with id= 51 Solución para eliminar: ejecutar en mysql update domains set htype='none' where id= 51 ; IMPORTANTE REMPLAZAR EL NUMERO DE ID

qmail en segundo disco duro con Plesk

Primero editemos /etc/psa/psa.conf # Qmail directory QMAIL_ROOT_D /disco_correo/qmail # Location of qmail maildirs PLESK_MAILNAMES_D  /disco_correo/qmail Ejecutamos en shell # rsync -vrplogDtH   /var/qmail/mailnames/   /disco_correo/qmail # service psa restart # /usr/local/psa/admin/sbin/mchk --without-spam # service qmail restart # service courier-imap restart y listo

Plesk, regenerando configuración de un dominio o todo el servidor

Para regenerar toda la configuración es: # /usr/local/psa/admin/bin/httpdmng --reconfigure-all o para regenerar un solo dominio es: # /usr/local/psa/admin/bin/httpdmng --reconfigure-domain eldominio.com

Plesk, moviendo apache a otro disco duro

Primero editen /etc/psa/psa.conf # Virtual hosts directory HTTPD_VHOSTS_D  /disco_2/web El domando es sencillo, solo ejecuten: # /usr/local/psa/bin/transvhosts.pl  --source-dir /var/www --dest-dir /disco_2/web  --correct-scripts reinicien plesk y listo # service psa restart y listo

Certificado SSL para panel Plesk

Importante: nota original aqui , este escrito es un copy&paste:  Os dejo un truco para instalar un certificado gratuito StartSSL en Plesk. 1.- Os validáis en plesk, vais al dominio y picáis en certificados 2.- Añadir nuevo certificado, rellenáis los datos (os recomiendo usar 2048 bits) y le dais a la opción solicitud. Ésto os generará la llave CSR y la llave privada. 3.- Id a Startssl.com, cread una cuenta y acceded al panel de control. Lo primero que tenéis que hacer es validar el dominio correspondiente en la opción validations wizard -> domain name validation. 4.- Entráis el dominio y  os aparecerán varias direcciones de vinculadas al domnio (hostmaster, webmaster y las que puedan aparecer en los contactos del registro del dominio) 5.- Recibiréis en la cuenta seleccionada de email una clave que deberéis introducir en la casilla de verificación. Ya está validado el dominio. 6.- Validations wizard -> web server SSL certificate. En este paso os pide una nueva c

Distribucion linux para servidores

Muchos preguntan cual es la mejor distribución y eso es todo un tema de debate, así que para no entrar en debate eterno solo diré que prefiero CentOS por ser una distribución estable y con buen soporte tanto en aplicaciones de  código abierto hasta en soluciones comerciales . Ademas que parte de su filosofía es tener una larga vida útil , así no habrá problema que cada 3-6 meses sale una nueva versión en la cual el único camino es reinstalar. ¿y a ti cual te gusta y porque?

20 Consejos para Mejorar tu MySQL que quizás no conocías

Imagen
Las operaciones sobre bases de datos suelen ser los principales cuellos de botella en las aplicaciones web. Por tanto es tarea de los programadores estructurar apropiadamente, escribir peticiones apropiadas, y programar mejor código. A continuación mostramos algunas técnicas de optimización MySQL. 1. Optimiza tus peticiones para la caché. La mayoría de servidores MySQL tienen habilitado el sistema de caché. Es uno de los métodos más efectivos para mejorar el rendimiento, que vienen de la mano del motor de base de datos. Cuando la misma petición se ejecuta varias veces, el resultado se obtiene de la caché, que resulta mucho más rápida. El problema es que, es tan sencillo y transparente para el programador, que la mayoría de nosotros tendemos a ignorarlo. Algunas cosas que hacemos de hecho pueden evitar que la caché haga su trabajo. //La cache NO funciona $r  =  mysql_query ( "SELECT nombre FROM usuarios WHERE registro >= CURDATE()" ) ;   // La caché sí