necudeco

Como configurar una aplicacion aspnet como servicio en Ubuntu

Una vez desarrollada nuestra aplicacion en dotnet, e instalada en el servidor queda un ultimo paso. Como hacer que este permanentemente activa ? Esto lo lograremos creando un servicio en Ubuntu ( Linux )

Lo primero sera crear nuestro archivo de definicion de servicio

# nano /etc/systemd/system/dotnet-app.service

El nombre del servicio en este caso sera dotnet-app, pero podria ser cualquier otro.

Este archivo donet-app.service, tiene un formato .INI que debemos completar, asi:

[Unit]
Description=.NET Web App running on Ubuntu

[Service]
WorkingDirectory=/var/www/dotnet-app
ExecStart=/usr/bin/dotnet /var/www/dotnet-app/app.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-app
User=www-data

[Install]
WantedBy=multi-user.target

En este ejemplo, le estamos indicando a Linux en que carpeta se encuentra el aplicativo ( WorkingDirectory ), cual es el comando para ejecutar el aplicativo ( ExecStart ), que hacer si el servicio se cae ( Restart ) y que usuario deberia correr el servicio ( User )

El siguiente paso es habilitar el servicio, para esto ejecutamos el comando

# systemctl enable dotnet-app.service

Esto iniciara el servicio y se asegurara de iniciarlo cada vez que el servidor se reinicie.

Si queremos ver los logs generados por el aplicativo podemos usar el comando

# journalctl -fu dotnet-app.service

Como instalar una aplicacion aspnet en Ubuntu Linux

Configurar drush con drupal y docker-compose

Drupal es un CMS muy potente para la creacion de sitios web o MVP de aplicaciones, sin embargo algunas operaciones de mantenimiento son mas sencillas de realizar desde la consola de comandos o directamente ser automatizadas en el servidor. Para poder realizar estas funciones utilizamos drush, y en este articulo aprenderemos a usarlo con docker-compose.

Docker-compose

Docker compose es una herramienta para configurar entornos de desarrollo o produccion a traves de un archivo de definicion YML. En este archivo podemos definir toda la infraestructura de servidores que se necesita para un proyecto en especifico, en este particular para un sitio drupal.

Por ejemplo, este seria un archivo docker-compose.yml para drupal

version: '2'

services:
  db:
    image: mysql:5.7
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=true

  drush:
    image: drush/drush:7
    volumes:
       - wwwroot:/app/
       - ./:/app/sites/default/

  web:
    image: drupal:7
    volumes:
      - wwwroot:/var/www/html/
      - ./:/var/www/html/sites/default/
    ports:
      - 80:80
    depends_on:
      - db
    stdin_open: true
    tty: true

volumes:
  wwwroot: {}

En este archivo, definimos 3 servicios:

  • DB, aca iniciara el motor de base de datos necesario para que drupal se conecte.
  • WEB, aca iniciara el servidor apache con una instalacion base de drupal
  • DRUSH, este servicio no es ejecutable, sino que nos permite ejecutar el comando drush en la misma carpeta de codigo que usa el servicio WEB.

Para iniciar el servidor de drupal debemos ejecutar el comando

docker-compose up -d web 

Este comando nos permite arrancar el servicio WEB y el servicio DB ( el cual esta ligado con WEB depends_on )

Para ejecutar un comando drush, usamos el siguiente comando

docker-compose run --rm drush cc all 

Este comando iniciar una instancia del servicio DRUSH, ejecuta el comando drush cc all y elimina la instancia.

Como saber si una clave existe en un objeto javascript ?

Existen diferentes alternativas de codigo para determinar si una clave existe en un objecto javascript. Vamos a conocer alguna de ellas, y vamos a medir cual es mas rapida.

Partimos del hecho que tenemos esta objeto en javascript

let obj = { a: 2, b: 5, c: [0,1,3,4] };
MetodoCodigoTiempo ( ms )
Operador IN“a” in obj0.099
hasOwnPropertyobj.hasOwnProperty(“a”)0.007
undefinedobj[“a”] == undefined0.002

El resultado mas rapido se obtuvo comparando el valor con la constante undefined.

Drupal Site – Mundo Bimbo

Mundo Bimbo es un sitio, basado en drupal, para compartir recetas basadas en los deliciosos productos bimbo para diferentes ocasiones y estilos de vida.

Mediante una interfaz administrativa personalizada en drupal, MundoBimbo permite compartir diferentes recetas teniendo como base los diferentes productos Bimbo y los diferentes momentos del dia.

Mundo Bimbo te ayuda a escoger el producto ideal para ti gracias a sus comparativas nutricionales.

Como instalar una app ASPNETCore en Linux

ASPNET Core es un framework de desarrollo web OpenSource de Microsoft. En este articulo, vamos a detallar los pasos para configurar tu servidor Linux una aplicacion ASPNET Core.

Creacion del VPS

Creamos nuestros VPS en cualquiera de las plataformas disponibles actualmente ( DigitalOcean, Linode, AWS Ligthsail, etc ). En nuestro ejemplo en particular utilizamos Ubuntu 20.04

Instalacion del Framework ASPNET Core

Para instalar las librerias basicas del framework debemos ejecutar los siguientes pasos con permiso de root

snap install dotnet-sdk --classic --chanel=5.0
snap install dotnet-runtime-50 --classic

Creamos un alias del comando de ejecucion dotnet

snap alias dotnet-runtime-50.dotnet dotnet

Configuramos la variable de entorno DOTNET_ROOT. Esta variable indica donde estan instaladas las librerias de dotnet

export DOTNET_ROOT=/snap/dotnet-sdk/current

Publicacion de nuestra app

Una vez instalada el framework debemos levantar nuestra aplicacion usando el comando dotnet.

Para esto, debemos copiar nuestra aplicacion/bin/Release a una carpeta local, luego entramos a la carpeta donde copiamos el proyecto y ejecutamos nuestra aplicacion indicando en este caso el puerto donde se accedera.

cd webapp
dotnet webapp.dll --urls "http://*:3000"

SSH: Como mantener las conexiones SSH abiertas

A veces cuando trabajamos con servidores remotos por SSH, la terminal del servidor deja de responder y obtenemos un Broken pipe.

Esto sucede cuando por algun motivo, la conexion entre el cliente y el servidor se ha roto. Es decir no pudieron comunicarse existosamente durante un lapso de tiempo, entonces el servidor invalido la conexion.

Para evitarlo, podemos indicarle al comando SSH que envie comandos vacios cada cierto tiempo y asi evitar que la conexion se declarada muerta por el servidor.

Para esto, vamos a editar el archivo /etc/ssh/ssh_config o el archivo ~/.ssh/config

Host *
ServerAliveInterval 120

Con esta configuracion estamos indicandole a nuestro cliente SSH que cuando se conecte a cualquier servidor cada 120 segundos envie un paquete vacio.

Compartir videos en tu red local desde Ubuntu Linux

Cuando tienes una videoteca en tu computadora personal, pero no deseas verla unicamente en tu escritorio sino poder hacer en la tablet, celular o chromecast … en este articulo te explicamos como compartir videos desde Ubuntu Linux a toda tu red local.

Instalamos Minidlna

apt install minidlna

Minidlna es un servidor multimedia que permite compartir archivos multimedia con clientes DLNA/UPnP

Una vez instalado el servidor minidlna debemos ir al archivo de configuracion

sudo nano /etc/minidlna.conf

Aca nos aseguramos de habilitar las siguientes opciones

media_dir=/home/necudeco/Videos
inotify=yes

El parametro media_dir nos indica que directorio y subdirectorios queremos compartir en nuestra red local.

El parametro inotify permite que el servidor actualice automaticamente la lista de archivos compartidos cuando se agrega un nuevo archivo en media_dir

Una vez configurado, debemos reiniciar el servidor

sudo service minidlna restart

Ahora ya estan disponibles nuestros videos … para acceder a ellos desde nuestro movil debemos instalar un cliente DLNA/UPnP. Existen multiples clientes DLNA/UPnP que podemos instalar en nuestros dispositivos android … uno recomendado seria VLC

Una vez instalado VLC en nuestro dispositivo automaticamente aparecera nuestra carpeta compartida y podemos ver la lista de videos.

Desde VLC podemos enviar nuestro contenido a un dispositivo Chrome Cast

Como redimensionar un video en Linux

Podemos redimensionar facilmente el tamaƱo de los videos usando la linea de comandos a traves del programa ffmpeg

$ ffmpeg -i archivooriginal.mp4 -vf scale=800:-1 archivodestino.mp4

El comando ffmpeg recibe dos parametros:

  • -i archivoorigina.mp4
    En este parametro indicamos el nombre del archivo de video que queremos redimensionar.
  • -vf scale=800:-1
    Aca le indicamos a ffmpeg que redimensione el video a 800px de ancho. El valor de -1 indica que la altura se redimensiona automaticamente.

Como bloquear una IP usando UFW en Ubuntu Server

Las nuevas versiones de ubuntu viene con una nueva herramienta para administrar el firewall del sistema. UFW es la version NO COMPLICADA de administrar el firewall.

Bloquear una IP

# ufw deny from 200.44.170.2 to any

Este comando le indica a nuestro servidor que cualquier peticion que provenga de la IP 200.44.170.2 la vamos a IGNORAR

Rechazar una IP

# ufw deny from 200.44.170.2 to any

Este comando le indica a nuestro servidor que debemos notificar a la IP 200.44.170.2 que no queremos atenderlo