Buscando artículos sobre " Sistemas"
2-agosto-2017
admin

Logrotate

Logrotate permite rotar a los archivos de LOG de nuestras aplicaciones. El logrotate se trata de un servicio que se ejecuta de forma autónoma, si queremos comprobar su funcionamiento basta con ejecutar la siguiente instrucción:

    logrotate -vf /etc/logrotate.conf

Es en ese fichero donde se establece la configuración base para cualquier log que deseemos rotar. Vamos a poner un ejemplo de configuración para un aplicación de Node.js donde se utiliza Forever. Para ello:

Añadimos en /etc/logrotate.conf la configuración

/home/admin/.forever/*.log {
     daily       # how often to rotate
     rotate 10     # max num of log files to keep
     missingok     # don’t panic if the log file doesn’t exist
     notifempty    # ignore empty files
     compress      # compress rotated log file with gzip
     sharedscripts # no idea what it does, but it’s in all examples
     copytruncate  # needed for forever to work properly
     dateext       # adds date to filename
     dateformat %Y-%m-%d.
}

Tras añadirlo iniciamos el logrotate

     sudo logrotate -s /var/log/logstatus /etc/logrotate.conf

Podeis comprobar que los logs se están tratando asi:

     tail -f /var/log/logstatus



Documentación logrotate

1-junio-2017
admin

Instalación RabbitMQ en Ubuntu

RabbitMQ se trata de un software de código abierto para la negociación de mensajes. Implementa el estándar Advanced Message Queuing Protocol (AMQP).

Nota: AMQP es un protocolo binario que destaca por su interoperabilidad y fiabilidad. Ofrece un amplio conjunto de funcionalidades como colas fiables basadas en mensajería P/S, enrutamiento flexible, seguridad, además de permitir un control en profundidad de colas, cabeceras,…

Para instalarlo en ubuntu se pueden seguir los siguientes pasos:

1 – Añadir el repositorio de rabbitmq al ubuntu

	echo 'deb http://www.rabbitmq.com/debian/ testing main' |
        sudo tee /etc/apt/sources.list.d/rabbitmq.list

2 – Instalarlo

	sudo apt-get update
	sudo apt-get install rabbitmq-server

3 – Comandos para iniciar, parar,…

	//inicio el servicio rabbitmq
	sudo service rabbitmq-server start

	//parar el servicio rabbitmq
	sudo service rabbitmq-server stop

	//reiniciar el servicio rabbitmq
	sudo service rabbitmq-server restart

	//ver el estado del servicio rabbitmq
	sudo service rabbitmq-server status

3 – Configuración
Por defecto trae creado el usuario: guest (la contraseña es la misma). Podriamos cambiar esa contraseña pero vamos a explicar como sería crear un usuario nuevo para luego borrar el de por defecto:

	//creamos el usuario admin con la contraseña 123
	sudo rabbitmqctl add_user admin 123

	//al usuario admin le asignamos el rol de administrator
	sudo rabbitmqctl set_user_tags admin administrator

	//eliminamos el usuario por defecto (guest)
	sudo rabbitmqctl  delete_user guest

Podemos crear ahora un virtual host con el nombre DISASTER. Un Virtual Host viene a ser el namespace sobre el que luego crearemos los distintos objetos que vamos a utilizar para el intercambio de mensajes (p.e. colas)

	//se crear el virtual host
	sudo rabbitmqctl add_vhost DISASTER

	//asignamos permisos de configuración/lectura/escritura al usuario admin
	sudo rabbitmqctl set_permissions -p DISASTER admin ".*" ".*" ".*"

Una vez creado el virtual host ya podriamos crear en él los canales para realizar el intercambio de mensajes.

Todo esto lo podriamos haber hecho desde la consola que nos provee el propio rabbitmq. Para ello, tendriamos que habilitarla

	sudo rabbitmq-plugins enable rabbitmq_management

Una vez habilitada podriamos acceder a ella así: http://localhost:15672/
Por defecto solo se puede acceder a la web desde localhost, por lo tanto tenemos dos opciones: o bien se cambia la configuracion o bien accedemos desde un tunel.

Para la configuración se debe abrir el fichero /etc/rabbitmq/rabbitmq.config y añadir los accesos que se deseen:

		{tcp_listeners, [5672]},
		{loopback_users, []}

4 – Logs
Por defecto en /var/log/rabbitmq

Documentación oficial

7-mayo-2017
admin

Configuración de host y dominio (DNS)

Cuando se quiere publicar una aplicación web tenemos dos opciones:
– Contratar el host y el dominio con el mismo proveedor
– Contratar el host con un proveedor y el dominio con otro distinto

En el primer caso no hay que hacer nada ya que el proveedor nos va a dar todo configurado. En cambio en el segundo caso debemos cambiar las DNS del dominio para que apunten a las del host.

DNS
«El sistema de nombres de dominio (DNS, por sus siglas en inglés, Domain Name System) es un sistema de nomenclatura jerárquico descentralizado para dispositivos conectados a redes IP como Internet o una red privada. Este sistema asocia información variada con nombre de dominio asignado a cada uno de los participantes. Su función más importante es «traducir» nombres inteligibles para las personas en identificadores binarios asociados con los equipos conectados a la red, esto con el propósito de poder localizar y direccionar estos equipos mundialmente.» Wikipedia DNS


Resumen pasos configuración DNS

1 – Si no sabes cuáles son (te las suelen dar cuando contratas el host) debes pedir al proveedor del host sus DNS.

2 – Una vez dispongas de ellas ya puedes ir al panel de control de tu proveedor de dominio. En él tienes que buscar la zona donde se te permite configurar las DNS asociadas a cada dominio que le hayas contratado.

3 – Finalmente, introduces las DNS del host y das a guardar.

4 – Ahora ya sólo te queda esperar. Ya que al realizar el cambio te suelen indicar que tienes que esperar entre 24 y 48 horas para que se propaguen los DNS y se haga efectivo el cambio (normalmente en menos de 24 horas ya lo tienes activado).

22-agosto-2016
admin

Error 1130 (HY000): Host » is not allowed to connect to this MySQL server

Cuando al intentar conectar a un MySQL desde otro servidor te puede dar este error. Esto es debido a que no tiener permisos para acceder con el usuario que estas intentándolo desde tu host.

-
- Error 1130 (HY000): Host '' is not allowed to connect to this MySQL server
-

Por ejemplo si el usuario que estas usando es root, puedes comprobar desde que sitios se puede acceder utilizando esta select:

SELECT host FROM mysql.user WHERE User = 'root';

Si esa query no devuelve ningún resultado con tu ip, deberás añadirla. Para ello:

CREATE USER 'root'@'tu_ip' IDENTIFIED BY 'contraseña';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'tu_ip';
FLUSH PRIVILEGES;

Nota: si deseas dar permisos a todas las ips, en lugar de ‘tu_ip’ puedes poner ‘%’.

15-agosto-2016
admin

Reseteando a modo frábica el móvil Samsung S3 mini

En realidad vale para cualquier sansumg. Pongo un video donde lo explican bastante bien:

9-agosto-2016
admin

Actualizar el S.O. Android de tu móvil Samsung S3 mini

En realidad vale para cualquier sansumg. A modo de resumen:
– Se descargan e instalan los drivers de samsung en el pc.
– Se ejecuta el programa odin como administrador.
– Conectar el movil por usb en modo dowloading. Recordar que para entrar en ese modo es pulsando a la vez los tres botones del móvil, el del volumen hacia abajo.
– Seleccionar la opción PDA en odin y seleccionar la rom con la versión de android que queremos instalar y darle a start.

– Si al reiniciar se queda pillado en la pantalla de inicio hay que hacer un factory wipe. Para ello se arraca en modo recovery (se entra en ese modo pulsando a la vez los tres botones del móvil, el del volumen hacia arriba)
– Se selecciona wipe y se desliza la flecha.

– Por ultimo, en el caso de instalar una room mínima que no contenga las google apps habria que instalarlas. Para ello cuando arranque el móvil se debe copiar a la sd las gapps de la version de la room.
– Para instalar se entra en modo recovery y: install -> seleccionar el zip -> deslizar instalación

Algún video de la red:

Tanto los drivers como el programa odin puedes obtenerlos aquí.
Página roms android donde comenta sobre algunas roms con enlaces a ellas.

14-junio-2016
admin

Base de datos NoSQL con PostgreSQL 9.4

PostgreSQL te permite crear base de datos NoSQL, para ello te facilita varias soluciones:

Tipos de datos como HSTORE
Consiste en un almacenamiento tipo clave valor. De tal forma que por ejemplo tendriamos:

create table ejemploHstore(id SERIAL, nombre TEXT, ejemploHstore HSTORE, primary key (id));

insert into ejemploHstore (nombre, ejemploHstore) values ('dato1', 'subdat01=>sss, subdat02=>qwe, subdat03=>prueba');

select * from ejemploHstore;
select ejemploHstore->'subdat01' from ejemploHstore;

Tiene soporte GIN y GIST para generación de índices en columnasHSTORE.
GIN es tres veces más rápido buscando, tarda tres veces más en construirse y es más lento en actualizaciones. Además, ocupa entre dos y tres veces más que GIST
Lo normal es utilizar para datos estáticos, GIN, y para datos dinámicos GIST.

Documentación


Soporte para JSON
Json para representación en texto.

create table ejemploJson(id SERIAL, ejemploJson json, primary key (id));

insert into ejemploJson (ejemploJson) values ('{"subdat01":"sss", "subdat02":"qwe", "subdat03":"prueba"}');

select * from ejemploJson;
select ejemploJson->'subdat01' from ejemploJson;

El almacenamiento en JSON permite validación de documentos y su acceso es similar al HSTORE

Documentación


Soporte para JSONB
Jsonb para representación binario. No se debe confundir jsonb con bson de mongodb, ya que no es lo mismo.
Tiene un formato compacto y eficiente, permite acceso avanzado y operadores de comparación. Así como GIN,GIST, hash y btree

Tiene un tamaño reducido en disco, muy inferior al tamaño JSON. Se organiza como un diccionario (una tabla hash), cuyo acceso es
tremendamente rápido, sin embargo, el orden no es preservado.
JSONB es compatible con las operaciones JSON

Tutorial jsonb

13-marzo-2016
admin

WordPress: “Briefly Unavailable for Scheduled Maintenance”

Este error puede aparecer en WordPress en el momento que falla alguna actualización, ya sea del propio wordpress o de un plugin.

Al realizar las actualizaciónes Wordpres crea un archivo en el llamado .maintenance (en la raiz del sitio). Este archivo es el encargado de mostrar el mensaje: “Briefly Unavailable for Scheduled Maintenance”. De tal forma que muestra ese mensaje en tu sitio en lugar de mostrar los errores de PHP mientras se produce la actualización de los archivos necesarios.

Una vez finalizada la actualización, el archivo se borra automáticamente. Si por lo que sea la actualización falla y ese archivo no llega a borrarse se debe borrar a mano. De otro modo sacará constantemente el mensaje de error. Una vez borrado es recomendable ejecutar las actualización que ha fallado para que la aplique correctamente.

25-febrero-2016
admin

Borrado de documentos en Alfresco

Por un lado hay que tener en cuenta que los documentos en alfresco no se borran realmente hasta que el usuario que los ha borrado o el administrador vacia la papelera de reciclaje. Ésta se vacia en la sección User Profile.

Por otro lado se debe tener en cuenta que lo que se hace es un borrado lógico. De tal forma que aunque no podamos verlos desde el interfaz de Alfresco, no se han borrado físicamente del disco. Se mantienen dentro del contentstore en estado huérfano ya que no quedan referencias a él en la base de datos.

Ahora bien, en Alfresco se ejecutan una serie de procesos automáticos de mantenimiento. Se definen en el fichero scheduled-jobs-context.xml que se apoya en el repository.properties para configurarse (localizables ambos en /Alfresco/tomcat/webapps/alfresco/WEB-INF/classes/alfresco/). Entre ellos nos encontramos con:

contentStoreCleanerTrigger: es el encargado de lanzar el bean contentStoreCleaner (definido en el content-services-context.xml) que se encarga de borrar los contenidos huérfanos del contentstore. Por defecto se ejecuta a las 4:00 AM cada día (0 0 4 * * ?). El parámetro system.content.orphanProtectDays establece el número mínimo de días que el contenido debe ser huérfano antes de poder eliminarlo, el valor predeterminado es de 14 días. Es decir, el documento permanecera 14 días en estado huérfano en el contentstore hasta que por fin la tarea Cleaner lo pase al contentstore.deleted.

Nota 1: Si la propiedad system.content.eagerOrphanCleanup está a true los documentos se moverán al directorio contentstore.deleted sin necesidad de la ejecución del contentStoreCleaner.

Nota 2: El contentstore.deleted es responsabilidad del administrador de borrarlo para liberar espacio.

Scheduled jobs
Content store configuration

10-febrero-2016
admin

Logging en python

Ejemplo de configuración de log para python. Se utiliza un fichero de configuracion llamado logging.conf, donde se definen dos manejadores uno a nivel de consola StreamHandler y otro a nivel de fichero FileHandler.
StreamHandler: Escribirá en la salida estandar del sistema las trazas con nivel INFO.
FileHandler: Escribirá en un fichero llamado Result_Operations.log las trazas con nivel DEBUG.
En ambos se formatean los mensajes para que sólo muestre el contenido del mensaje.

from logging import config
....
logging.config.fileConfig('logging.conf')
logger = logging.getLogger('root')

logger.debug("mensaje para el FileHandler")
logger.info("mensaje para ambos")

logging.conf

[loggers]
keys=root

[handlers]
keys=FileHandler,consoleHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=DEBUG
handlers=FileHandler,consoleHandler

[handler_FileHandler]
class=FileHandler
level=DEBUG
formatter=simpleFormatter
args=("Result_Operations.log",)

[handler_consoleHandler]
class=StreamHandler
level=INFO
formatter=simpleFormatter
args=(sys.stdout,)

[formatter_simpleFormatter]
format= %(message)s
datefmt=

Documentación oficial logging python
Documentación de los tipos de manejadores

Páginas:«123456»

Categorias

Linkedin