Todas las entradas de: Maks Skamasle

Acerca de Maks Skamasle

Maks Skamasle, sysadmin, fotógrafo aficionado y me gusta el tomar té por las madrugadas cuando no hay ruido ni sol.

Instalar neroAacEnc en Centos / Debian

Para hoy, instalando neroAacEnc una librería que nos sirve para extraer el audio de los vídeos HD, lo requieren scripts y páginas web que encodean vídeos como lo son AVS ( AdultVideoScript) el cual me piden mucho los clientes.

La instalación es muy sencilla basta con ejecutar:

wget http://mirror.skamasle.com/NeroDigitalAudio.zip
unzip NeroDigitalAudio.zip -d nero
cd nero/linux
sudo install -D -m755 neroAacEnc /usr/local/bin

Como mencionan en: https://www.webhostpython.com/billing/knowledgebase.php?action=displayarticle&id=17

Continue reading

FreeBSD: PHP-FPM y NGINX Página en Blanco | White Page

PHP-FPM Página en Blanco | White Page

He estado montado unos servidores con FreeBSD con NGINX y PHP-FPM y me he encontrado que no funcionaba el PHP con la configuración habitual, tampoco salia nada en los logs, el único síntoma era una página en blanco al acceder a cualquier archivo PHP.

La solución al problema, añadir el PATH_TRASLATED que no esta definido a la configuración de fcgi:

fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;

Esto se tiene que añadir o bien al vhost de la web o directamente en fastcgi_params para que tome efecto en todas las páginas, luego reiniciamos nginx y listo ( no hace falta reiniciar php-fpm)

Instalar Ruby en Debian | Instalar RefineryCMS

Una guía de como instalar Ruby en debian, y montando RefineryCMS con éxito, la guía completa en nuestro blog, en este enlace.

Más adelante intentaré hacer una guía de como personalizar refinerycms, hecho completamente en ruby, aunque aún tengo pendientes algunas guías para django, pero veremos que sale.

Enlaces de interés:

– Ruby: https://www.ruby-lang.org/en/
– RubyOnRails: http://rubyonrails.org/
– RefineryCMS: http://refinerycms.com/download
– Skamasle Instalando Ruby y RefineryCMS: http://www.skamasle.com/instalar-y-actualizar-ruby-en-debian-montando-pagina-web-en-rubyonrails/

Forzar reinicio bash: /sbin/reboot: Input/output error | Entrada/Salida Error

Si aveces pasa, es como un «bloqueo» del sistema de archivos que impide escribir en el disco duro y también impide acceder a determinados sectores del disco.

En el peor de los casos el disco duro se a dañado y si tenemos suerte simplemente se a estropeado algún inodo y fsck podrá resolverlo en el reinicio o bien lo podemos resolver en el modo rescue.

La historia sobre el bloqueo es algo larga, puede ser por lo mismo sistema de ficheros dañado o bien que el disco duro se haya montado en un modo que no permita leer o escribir, que es lo que a pasado en mi caso, aunque no fue luego de reiniciar, simplemente se a cambiado la opción como por arte de magia y todos los discos duros

errors=remount-ro

Quedaron en modo solo lectura, se puede considerar normal tomando en cuenta que la opción lo que hace es algo así: le dice al sistema»si hay errores de montaje, por seguridad monta el disco en modo RO solo lectura» bien pero el disco no se a desmontado ni remontado y el sistema no a reiniciado, así que paso de la nada…

En fin, aún busco la causa en los logs, el sistema bloqueado y el reinicio no funcionaba:

 # reboot
   bash: /sbin/reboot: Input/output error

La solución, activar el magic sysrq:

echo 1 > /proc/sys/kernel/sysrq

Y forzar el reinicio:

echo b > /proc/sysrq-trigger

Esta claro que esta opción no hay que usarla al menos que en verdad sea necesario, como en este caso.

Por otro lado se puede reiniciar desde el panel del servidor con un hardware reset, pero si no tenemos esa opción usaremos la del sysrq 🙂

Reiniciar de esta manera vendría a ser lo mismo que un hardware reset, la opción B lo que hace es:

Immediately reboot the system, without unmounting or syncing filesystems

OJO en teclados qwerty..

Pueden ver más info sobre sysrq en la documentación oficial o en la wikipedia

Error Luego de Actualizar Mysql: install_driver(mysql) failed: Can’t load ‘/usr/lib64/perl5/auto/DBD/mysql/mysql.so

install_driver(mysql) failed: Can’t load ‘/usr/lib64/perl5/auto/DBD/mysql/mysql.so

Si tenemos una web que trabaje con perl puede que nos de ese error al actualizar mysql, es por que las versiones del cliente y del mysql no son iguales.. ( en php aveces pasa lo mismo aunque no afecta a todas las webs, vbulletin es la más delicada al respecto )

En fin, para solucionarlo en perl podemos ejecutar los siguientes comandos:

Nos logueamos a la consola de perl:

perl -MCPAN -e shell

Y forzamos la instalación de los módulos:

force install DBI

force install DBD::mysql

Tarda un poco en instalar pero el problema se resolverá cuando acabe con los dos 🙂

Más información en la documentación de perl:

http://cpansearch.perl.org/src/JWIED/DBD-mysql-2.1015/INSTALL.html

Respaldar todas las bases de datos | Backup All Data Bases: Plesk, cPanel, Ispconfig, DirectAdmin

Hoy he comenzado a hacer una modificación del script de respaldo que hice hace algunos meses: SK- Server UP: Respaldar bases de datos y archivos

Es un script que he usado mucho y he visto que la opción de transferencia la uso poco y que aveces tengo inconvenientes por que tengo que buscar la clave de plesk o el ispconfig, así que he hecho unas modificaciones y he dejado el script modificado solo para respaldar bases de datos y para agilizar el proceso que detecte automáticamente la clave de plesk, cpanel e ispconfig.

Lo he probado en 3 servidores ( plesk, cpanel e ispconfig ( añadido soporte a DirectAdmin ) y funciona de maravilla, aunque, aún tengo pensado hacerle muchas mejoras, más que nada para agilizar el procesos, quiero hacer el script interactivo, que haya que descargarlo y ejecutarlo y sobre la marcha pregunte por el servidor o lo detecte de una vez, es fácil de hacer pero lleva su tiempo, por ahora dejo la beta 1 que es la que seguiré usando y espero que en los próximos días tenga un rato para hacer las mejoras y el script me ahorre mucho más tiempo… que básicamente es evitar editar el archivo siempre que lo use, pero ya funciona bien 🙂

Backup All Data Bases: Ispconfig, cPanel, DirectAdmin, Plesk

skdumpbd.sh

####

# 21 Dic 2014: añadido conteo de bases de datos.
# 5 Sep solucionados unos bugs en beta 0.2, se a añadido segundos y minutos a los nombres para poder crear varios backups seguidos, quitando la restricción de 1 backup diario, si se hacía más de un backup pedía borrar o sobre escribir el anterior.
# 9 de octure añadido soporte para directadmin beta 0.3

###

Editamos las lineas:
Expira, por si queremos ejecutarlo en un cron.
servertype aquí ponemos normal, si queremos definir la clave más abajo, si no podemos plesk, cpanel o ispconfig para no escribir la contraseña en el script.
backupin una carpeta vacía donde se guardarán los backups.

Respaldar todas las bases de datos del servidor

#!/bin/bash
# Respaldamos todas las bases de datos del servidor, 
# Creamos un archivo con el log, 
# 
# v0.4 Cambios menores, añadido conteo de bases de datos.
# 21 de dic del 2014
# Maks Skamasle | Skamasle.com | [email protected] | twiter @skamasle
#   This program is free software: you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation, either version 3 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details. http://www.gnu.org/licenses/
# Bajo licencia GNU GPL http://www.gnu.org/licenses/ se distribuye sin ninguna garantía.
# Actualizaciones  y más: http://kb.skamasle.com/2014/respaldar-todas-las-bases-de-datos-backup-all-data-bases-plesk-cpanel-ispconfig/
backupin=/root/sk-mysqldump # Ruta para guardar los backup
expira=5 	# Número de días que se retienen los backups de MSYQL en local (archivos mayores a 2 días se borran antes del backup)
# Datos de mysql.
# Tipo de servidor.
# Detectamos el tipo de servidor, plesk, cpanel o ispconfig para obtener automaticamente la clave de la base de datos.
# Si el servidor no es plesk, cpanel o ispconfig dejamos como "normal" y definimos la clave en la parte de abajo en mypass.
#################
#################
servertype=cpanel # Opciones: normal, cpanel, plesk, ipsconfig, directadmin
#################
#################
myuser="root"
mypass="pass" # Root Password
myhost="localhost"

if [ $servertype = plesk ]; then
	myuser="admin"	
	mypass=`cat /etc/psa/.psa.shadow` 
fi
if [ $servertype = cpanel ]; then
# cPanel algunos servidores en el .my.cnf tienen " en el pass y otros no así que hay que
# editar el cut -d '"' en caso de no tener comillas cambiar el " por un =, las versiones viejas no tiene
# comillas.... las nuevas luego de 11.32 suelen tenerlo
	mypass=`cat /root/.my.cnf |grep password | cut -d '"' -f2`
fi
if [ $servertype = ispconfig ]; then
	mypass=`cat /usr/local/ispconfig/server/lib/mysql_clientdb.conf |grep password | cut -d "'" -f2`
fi
if [ $servertype = directadmin ]; then
	myuser="da_admin"
	mypass=`cat /usr/local/directadmin/conf/mysql.conf |grep passwd | cut -d "=" -f2`
fi

MKDIR=/bin/mkdir
TOUCH=/bin/touch
logfile=/root/SK-BackupLog.txt
fecha=$(/bin/date)
if [ ! -d $backupin ]; then
	$MKDIR $backupin 
else
	find $backupin -type d -mtime +$expira | xargs rm -Rf
	
fi
if [ ! -e $logfile ]; then
	$TOUCH $logfile
fi
carpetabk=$backupin/`date +%Y-%m-%d-h%H%M-%S`

if [ ! -d $carpetabk ]; then
	$MKDIR -p $carpetabk
fi
# no hace falta cambiarlo
lists=$(echo "show databases;" | mysql -h $myhost -u $myuser -p$mypass | grep -v Database | grep -v information_schema | grep -v performance_schema | grep -v phpmyadmin | grep -v mysql)

echo "Comenzando el respaldo de las bases de datos" >> $logfile
tput setaf 1
tput bold
echo "Comenzando el respaldo de las bases de datos"
tput sgr0 
echo $fecha >> $logfile
C=0
for db in $lists
do
		tput setaf 2	
 	echo "Respaldo base de datos $db"
	mysqldump -h $myhost -u$myuser -p$mypass --opt $db > $carpetabk/$db.sql 2>/tmp/skdump_errorlog
	echo "Respaldando $db" >> $logfile
	tput setaf 3	
	echo "Comprimiendo (gzip) base de datos --- $db"
	tput sgr0	
	gzip $carpetabk/$db.sql
	let "C = $C + 1"
done
echo "Backup completo, se respaldaron $C Bases de Datos!" >> $logfile
echo $fecha >> $logfile
echo "Puedes revisar el log en $logfile y el errorlog en /tmp/skdump_errorlog"
tput setaf 2
echo "Se respaldaron $C Bases de datos"
tput sgr0
wget http://mirror.skamasle.com/scripts/skdumpbd.sh
chmod +x skdumpbd.sh
./skdumpbd.sh

Instalar componentes en plesk: Backup Manager, Migration Manager, PostgreeSQL etc

Plesk: Sin asistente de backup y asistente de migraciones

Muchas veces en plesk no tienen instalados algunos componentes, eso ya depende de quien instale plesk, pero muchas veces me he topado con empresas que entregan plesk instalado y no tiene ni gestor de migraciones ni tampoco para hacer respaldos.

El tema es tan sencillo como ejecutar el auto instalador de plesk que esta en esta ruta:

/usr/local/psa/admin/bin/autoinstaller

Seguimos las instrucciones básicamente podemos dejar todo por defecto si ya tenemos plesk instalado y en la última versión, hasta que lleguemos a esta pantalla y seleccionamos los productos que queremos agregar o quitar:

plesk-migration

La forma de seleccionar y des-seleccionar opciones es presionando los números, en este caso quiero el 6 que es el asistente para migraciones, escribo 6 y presiono enter y se selecciona la opciones, luego ya con N podemos continuar a la página siguiente.

Eso sería todo 🙂

Cambiar puerto de apache o nginx en ispconfig.

Cambiar puerto de apache y nginx en ISPCONFIG

Útil para cuando queremos usar un proxy o bien usar varnish, el proceso no se puede hacer automáticamente en el panel de control pero si podemos hacerlo en los templates de ispconfig.

También podemos hacerlo directamente en el vhost que se crea pero no es recomendable ya que si añadimos un sitio nuevo este quedará en el 80 y nginx no podrá iniciar por que el puerto estará ocupado por varnish y tendremos que ir a editarlo manualmente por ssh, algo que nos hará perder el tiempo.

Así que, podemos editar los templates de ispconfig en esta ruta:

/usr/local/ispconfig/server/conf

En caso de que tengamos nginx, editaremos este archivo:

/usr/local/ispconfig/server/conf/nginx_vhost.conf.master

Hay 4 lineas para editar, unas al inicio del fichero y otras más o menos a la mitad.

server {
        listen :80;

        listen []:80;

Cambiamos el 80 por el puerto que necesitemos, cerramos y listo.

Para apache editamos el vhost master si no mal recuerdo ( casi no uso apache )

Pero esta esta linea en el archivo:

Habría que cambiar port por 81 o el puerto que usaremos.

Para cambiar el puerto de apache vamos a editar este fichero:

/usr/local/ispconfig/server/plugins-available/apache2_plugin.inc.php

Y editamos esta linea:

//* Add vhost for ipv4 IP
                $tmp_vhost_arr = array('ip_address' => $data['new']['ip_address'], 'ssl_enabled' => 0, 'port' => 80);

Con eso debería ser suficiente, aparte en apache tenemos que editar el ports.conf y en la carpeta conf/apache_ispconfig.conf.master hay dos lineas para editar.

NameVirtualHost *:80

NameVirtualHost {tmpl_var name="ip_address"}:{tmpl_var name="80"}

Si tienen algún problema solo coméntenlo por aquí o manden me un email y vemos que podemos hacer.

Email de cPanel: Resource: Virtual Memory Size Exceeded: 217 > 200 (MB

Aveces llegan estos emails, más cuando se usa fcgi otra veces cuando se usa suphp, todo depende de los limites de memoría que se tengan asignados nos llega el aviso:

Resource: Virtual Memory Size Exceeded: 217 > 200 (MB

El tema no es grave, es un aviso del firewall, por defecto tiene configurado para que lleguen emails cuando se consume más de 200 MB de RAM y si tenemos configurado el memory_limit de php para que pueda consumir más de 200MB indudablemente entrará en conflicto con el LDF.

Y vamos al grano la opción que hay que cambiar es:

PT_USERMEM

Que dice lo siguiente:

This User Process Tracking option sends an alert if any cPanel user process
exceeds the memory usage set (MB). To ignore specific processes or users use
csf.pignore

Otra cosa a tomar en cuenta que esto no causa errores en las webs, por si lo estan pensando ya que normalmente no mata los procesos, como pueden ver en el mismo email:

Account: skamasle
Resource: Virtual Memory Size
Exceeded: 217 > 200 (MB)
Executable: /usr/selector/php
Command Line: /usr/bin/php /home/skamasle/public_html/index.php
PID: 741971 (Parent PID:728108)
Killed: No

AVS Instalación y errores: Formats Error (could not find ldd binary)! [SOLVED]

Como me da algo de pereza de hacer una guía completa he buscado por ahí algunas que pueden ayudar.

Post solo informativo

Instalación de MP4Box -> http://blog.osmicro.org/how-to-install-mp4box-gpac-on-centos-6-2/
Instalación de neroAacEn -> https://www.webhostpython.com/billing/knowledgebase.php?action=displayarticle&id=17 ( NOTA cambiar la ruta por /usr/bin )

Repos para centos 6 64 bits:

rpm -Uhv http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

Con esto instalamos mplayer y mencoder:

yum install ffmpeg ffmpeg-devel mplayer mencoder

Necesitamos flvtool2, pero necesitamos ruby también para instalarlo, podemos hacerlo con yum pero si tenemos cpanel hacemos:

/scripts/installruby

Esperamos a que termine y luego instalamos flvtool2

gem install flvtool2

Para los codecs extra que no son del todo necesarios vamos al enlace que nos da la web de requisitos: http://www.sklav.com/?q=node/2

OJO los repos son de 32 bits, aunque nosotros ya hemos instalado los de 64 bits ( más arriba ), lo otro son los codecs de mplayer podemos bajarlos par anuestra plataforma desde aquí www1.mplayerhq.hu/MPlayer/releases/codecs

Serían estos dos paquetes de 32 o 64 bits

mplayer-codecs-20061022-1.i386.rpm
mplayer-codecs-20061022-1.x86_64.rpm
mplayer-codecs-extra-20061022-1.i386.rpm
mplayer-codecs-extra-20061022-1.x86_64.rpm

Para el resto de paquetes podemos usar los repos mencionados o bien bajarnos unos para nuestra versión de centos:

http://wiki.centos.org/AdditionalResources/Repositories/RPMForge#head-f0c3ecee3dbb407e4eed79a56ec0ae92d1398e01

Con eso podemos instalar los demás requisitos o bien podemos compilarlos, como referencia podemos tomar este post que tiene muchos programas, casi todos los que requieren la mayoría de los scripts multimedia -> Instalar ffmpeg, mencoder, mplayer, x264 etc aunque ya teniendo los repos podemos intentar con yum.

Se que la guía es incompleta pero no me interesa hacerla muy completa para centos, ya la haré más detallada para debian.

Continue reading