GNU/Linux

El dúo GNU/Linux son el conjunto de herramientas que conforman (según yo considero) el mejor sistema operativo, herramientas de escritorio y lo que no es escritorio.

GNU arrancó como una forma de organización del software libre para crear un sistema operativo completo y un conjunto de herramientas de libre distribución para todo el mundo. Hurd es el origen como núcleo del sistema operativo planteado por Richard Stallman, aunque luego no se culminó. Esta construcción del núcleo del sistema operativo parece que pasó a un segundo plano tras la aparición en escena de Linux. Tanto Hurd como Linux, igualmente Mac, son sistemas operativos basados en el sistema UNIX que tanto éxito ha tenido Linux es el núcleo de los sistemas operativos GNU/Linux. Surgió y se apoyó en el ecosistema GNU para formar una solución completa. Hoy en día forma el núcleo de los mayores y mejores sistemas informáticos del mundo.

Todo un referente convertido en un MUST KNOW de todo informático. Instálatelo en tu estación de trabajo y comprenderás el porqué de su trayecto 😉

Magento: cron jobs, el latir del corazón

2016-08-07 - Categorías: GNU/Linux / Magento / PHP
Magento_cron_jobs

En una reunión en un café con unos colegas de trabajo estábamos hablando de CMSs, citando Magento, llegaron algunas preguntas como: ¿qué tiene Magento de especial? Pues una de las peculiaridades que le dan una gran potencia a Magento es la gestión de tareas programadas.

Magento nos obliga a disponer de un servidor en el que podamos configurar un programa, en este caso el cron de Magento, para que se ejecute cada x tiempo. Yo lo estoy instalando para que se ejecute a cada minuto. Este programa interno de Magento se llama cron igual que en Linux tenemos también el cron. Es el programador de tareas, no es el Crom de Conan el bárbaro que me comentaba un compañero de trabajo xDD

En las últimas versiones se ha pasado incluso el envío de emails transaccionales como tarea programada. Es decir, los emails transaccionales se envían a una cola de envío de emails y en la siguiente ejecución del cron se envían los que haya encolados. Estas tareas llevan un seguimiento, registro, etc.. A cada ejecución del cron de Magento le llamamos los desarrolladores heart beat en inglés, que significa el latir del corazón. Es decir, que Magento tiene un corazón, que late, y en cada latido puede que haga muchas cosas.. qué freak que suena esto, pero así es..

Me remito al anterior post en donde explico cómo crear un módulo propio como punto de partida.

Continuar leyendo..

Ubuntu 14.04 LTS: actualizar PHP 5.5 a 5.6

2016-07-17 - Categorías: GNU/Linux / PHP

PHP 5.5 dejó de tener soporte en enero del 2016, las actualizaciones de seguridad acaban de dejarse en junio de 2016. Así que a partir de ahora julio del 2016 deberíamos mínimo de tener PHP 5.6 en cualquier servidor para mantenernos al día por lo menos en los parches de seguridad.

Todavía en Ubuntu 14.04 LTS tendrá soporte hasta el próximo 2019. Desde su lanzamiento en 2014, serán 5 años de Long Time Support (LTS). Los ciclos de vida de las librerías incluídas son otra cosa. Aunque se puede pensar que dado el fin del soporte de seguridad para PHP 5.5 se debería de traer ya de casa PHP 5.6 en Ubuntu 14.04. Pero sería forzar a los usuarios a migrar sus aplicaciones a la nueva versión y si hubiera alguna incompatibilidad sería forzar a compatilibilizarlo, algo que puede ser bastante complejo dependiendo de cada aplicación.

Cómo actualizarlo en Ubuntu 14.04 LTS..

Continuar leyendo..

Actualizar Ubuntu Server 14.04 LTS a 16.04 LTS sin entorno de escritorio

2016-06-26 - Categorías: GNU/Linux
Ubuntu wallpaper

Ya tenemos entre nostros Ubuntu 16.04 LTS, la versión con soporte para mucho tiempo de Ubuntu más nueva hasta la fecha. Me instalé en los ordenadores de escritorio la actualización que me los pasó de la versión 14.04 LTS a la 16.04 LTS sin ningún problema.

Ahora disfruto de todas las novedades y mejoras que trae Ubuntu 16. El problema me ha llegado cuando he querido actualizar un servidor de Ubuntu 14 al 16. Resulta que en las versiones de escritorio de Ubuntu tenemos una sencilla interfaz para actualizar el sistema, mientras que en los servidores no. En las versiones de escritorio nos sale prácticamente todos los días las nuevas actualizaciones que tenemos disponibles, se pueden instalar automáticamente o seguir las instrucciones. Cuando ha salido la nueva versión de Ubuntuo 16.04 LTS nos salió junto con las actualizaciones la actualización a Ubuntu 16.04, simplemente seguimos las instrucciones y a correr.

Continuar leyendo..

Descargar un fichero vía web y enviarlo por email con PHP

2016-06-06 - Categorías: GNU/Linux / PHP
Logo de PHP

Este es otro pequeño how to para hacer una tarea rutinaria. Simplemente, como indica el título de la entrada, se hace lo que dice, en este caso mediante PHP. Esta tarea se puede programar en línea de comandos para ejecutarse todos los días. Es algo habitualmente necesario, y ya que PHP es un lenguaje de scripting muy sencillo y a la par potente, vamos a ver cómo hacer esto sin complejos sistemas intermedios.

Para este manual se usa Linux, y se ha probado sobre Ubuntu 14.

Continuar leyendo..

Administrar tu servidor con Webmin y Authentic Theme

2016-01-24 - Categorías: Amazon Web Services / GNU/Linux
Webmin dashboard

¡Buenos días a todos! Voy a tratar de no perder las buenas costumbres, como esta de compartir en el blog mi granito de arena en todo esto de la informática. Hasta estos últimos días, que no he tenido la necesidad de mantener al día tantos servidores como últimamente. Estaba haciéndolo manualmente, a pelo como se suele decir, entrando en los servidores y aplicando actualizaciones, modificaciones, etc.. Todo esto es mucho tiempo así que delegar en un proveedor de hosting todo éste trabajo es una buena elección. Pero no siempre te va a valer y puede que necesites hacer configuraciones que un proveedor de hosting no te va a permitir. Administrar tu propio servidor no tiene que ser complejo.

Todo esto me ha llevado a investigar sobre paneles de control de servidores. Tenemos el gran Cpanel, Plesk, Zpanel, y un largo etcétera. Por temas laborales ya he probado algunos en los propios proveedores. Muchos funcionan de maravilla y son sencillos de gestionar. Pero no me voy a dedicar a alquilar hosts, sino que simplemente necesito mantener unos pocos servidores y no es viable comprar una solución comercial. Así que navegando y navegando al final me topé con Webmin.

Qué tiene

Webmin configurando

A grandes rasgos es una web desarrollada sobre Perl, que se instala en el puerto 10000 del servidor y se integra con el sistema operativo. Nos permite ver el estado del servidor, hacer configuraciones de red, actualizarlo, programar actualizaciones automáticas recibiendo informes a tu email. Te permite configurar usuarios, permisos, instalar bases de datos, servidor web, configurarlos. También hay módulos para instalar un servidor de correo electrónico. Puedes administrar Apache2, Mysql, Postgres, Postfix, Dovecod, etc, etc, etc.

La verdad es que te quedas mucho más tranquilo teniendo una herramienta de estas instalada en un servidor. No tienes más que entrar  y de un vistazo puedes saber qué tal anda el sistema. Puedes aplicar las principales configuraciones y a correr que el tiempo es muy valioso.

Hay algunas tareas como la configuración hosts virtuales que haciéndolas a mano me he aclarado mejor. Pero deduzco que será cuestión de acostumbrarme al panel. Leo que hay extensiones de Webmin para configurar fácilmente hosts con varios dominios, permitiendo la lectura de correos a los usuarios proporcionándoles un panel de entrada al sistema.

Un detalle que me ha gustado mucho es la autenticación en dos pasos (multi-factor authentication, MFA). Con el que podemos tener por ejemplo en nuestro móvil el Google Authenticator, y tener un código de seguridad extra que se genere a cada 30 segundos, para poder entrar como en la imagen siguiente:

Webmin mfa


El theme, piel, o plantilla que podéis ver en las imágenes no es el original. Es el ‘Authentic theme’ que me ha gustado también mucho. Es totalmente sensible al dispositivo (responsive), con lo que también podemos aplicar configuraciones sobre nuestro servidor desde el móvil o tablet, cosa que se agradece en gran manera.

Aquí podemos ver lo sencillo que se hace mantener actualizado el sistema:

Webmin update


Aquí en la imagen se puede ver cómo configurar que todos los días se apliquen todas las actualizaciones del sistema, no sólo las de seguridad. Esto dispara cada día la instalación de todos los paquetes para actualizar y me envía un informe del resultado de la instalación a mi email. Ya os podéis hacer a la idea de que tiene muchas cosas, y lo tranquilo que me quedo con cada correo que recibo diciéndome que todo se ha actualizado correctamente.

Como buen usuario de Ubuntu, todas las pruebas y las imágenes que se ven son sobre Ubuntu. Me lo voy a anotar como indispensable en las nuevas instalaciones. Navegando y navegando por el menú lateral ya veo que no me lo voy a acabar, así que tendré que ver la documentación oficial de cada herramienta para ir más al grano en las tareas que se necesiten.

Terminando

Aquí la web oficial: http://webmin.com/

Es un proyecto alojado en Github, que por lo que veo se ve bien activo. Ahora mismo hace 4 horas que han subido una actualización, lo que denota que vamos a seguir teniendo actualizaciones frecuentemente, como todo buen proyecto Open Source.

Para el que quiera seguir investigando en esta joya de la informática, son interesantes los módulos Usermin y Virtualmin. No creo que tarde mucho en probarlos. De estos tenemos una versión gratuita y otra comercial, con las que vamos añadiendo más y más funcionalidades al panel de control.

¿Alguna sugerencia de otro programa similar para administrar servidores?


Cómo configurar los permisos del directorio de un proyecto para Apache en Linux

2015-12-05 - Categorías: GNU/Linux
Powered by Apache

¡Hola! Este es un pequeño HOWTO para configurar los permisos de directorio de un proyecto web que está en un servidor Apache. Nos puede pasar que estamos editando los ficheros del proyecto, pero puede ser que Apache no pueda acceder correctamente a los nuevos ficheros, crearlos, modificarlos o borrarlos. También nos puede pasar que Apache cree ficheros y nosotros no podamos tocarlos. Vamos a evitarlo con unos sencillos pasos. Esto sirve para configurarlo en Ubuntu. También se puede aplicar a cualquier otro sistema operativo Linux.

El usuario por defecto de un servidor Ubuntu es ‘ubuntu’. El usuario de Apache es ‘www-data’, así que comenzamos dando permiso a Apache para que pueda usar nuestro directorio de trabajo donde desarrollamos la web. Por defecto Apache trabaja sobre con la página principal en /var/www/html pero este post es para configurar a nuestro gusto el destino el directorio donde vamos a tener la web.

Supongamos que tenemos nuestra web en desarrollo en:

/home/jaime/miweb/

Ahora bien vamos al directorio donde está nuestra web y damos permisos a Apache así:

cd /home/jaime/
sudo chown www-data:www-data -R miweb/

Doy por sentado que ya tenemos instalado Apache y que tenemos configurado el host. Ahora bien, queremos trabajar como usuario editando y viendo los resultados en el navegador. Añadimos a nuestro usuario al grupo www-data:

sudo adduser jaime www-data

Con esto ya podremos editar el contenido del directorio de la web en /home/jaime/miweb/. Antes no podíamos porque hemos dado la propiedad a www-data que es el usuario de Apache con el comando chown.

Ahora para que los nuevos archivos creados dentro del directorio de la web sigan siendo propiedad del mismo grupo www-data para que tanto Apache como el usuario (tú) podáis seguir trabajando ejecutamos lo siguiente para poner el ‘sticky-bit’ de grupo a los directorios:

sudo chmod g+s /home/jaime/miweb/
find /home/jaime/miweb/* -type d -print0 | sudo xargs -0 chmod g+s

Esto pone el directorio del proyecto con el sticky-bit de grupo y luego busca dentro todos los subdirectorios y también le ponemos el sticky-bit de grupo. Ahora cualquier archivo que crees dentro del directorio seguirá tendrá tu usuario de propietario, y de grupo www-data. Así Apache podrá seguir sirviendo los archivos sin problemas y podremos trabajar sin preocuparnos de dar permiso o propiedad a los archivos que ya no sean de www-data.

Espero que sirva.

Un saludo.


Gufw, también tenemos cortafuegos en Linux

2015-11-15 - Categorías: General / GNU/Linux
Gufw1

En mi caso, en el Centro de Software de Ubuntu, simplemente con buscar cortafuegos me sale como disponible. Se llama ‘Configuración del cortafuegos’ y es una interfaz gráfica para que podamos manejar las configuraciones de iptables con las que configuramos las reglas de nuestro cortafuegos.

Si no lo pudiéramos instalar así desde un terminal lo podemos instalar escribiendo:

$ sudo apt-get install gufw

Una vez arrancado veremos una ventana como la de la imagen. Con sólo elegir un perfil y activarlo ya tendremos una protección extra ante posibles servicios de nuestro sistema que estén abiertos. Estos servicios que estén escuchando la red pueden ser vulnerables y siempre va a ser mejor configurar su acceso.

Fundamentos

Es interesante saber que gufw simplemente es una interfaz gráfica que nos ayudará a establecer unas reglas o configuraciones sobre nuestro acceso a la red. Gufw trabaja sobre iptables, que es una capa de sofware que establece directamente las reglas o configuraciones que vemos en la interfaz. A su vez, iptables trabaja sobre netfilter.

Netfilter es un framework que ofrece el núcleo de Linux para trabajar sobre la red. Permite filtrar, modificar, redireccionar, bloquear, registrar, etc.. paquetes de red a nivel de núcleo. Es decir, el núcleo de Linux proporciona unas herramientas para hacer todo tipo de tareas relacionadas con los cortafuegos de red.

Todas estas configuraciones que podemos hacer sobre iptables, gufw nos las sirve bien fácil para configurar. Y no sólo eso, sino que también nos proporciona una serie de plantillas para configurar los programas más habituales.

A parte de esto, también hay otras soluciones que no son iptables para configurar los cortafuegos de núcleos Linux. Y también trabajan sobre netfilter.

Probando

Gufw3

Para verificar que de verdad está funcionando podemos hacer una sencilla prueba. Vamos a la sección de reglas y podemos crear una regla que nos impida conectar con nuestro router. Habitualmente el router está en 192.168.0.1, depende del fabricante. En mi caso, creo una regla que bloquee la conexión saliente hacia el router al puerto 80 y no me deja conectarme a:

http://192.168.0.1/

Se me queda el navegador pensando y no sale nunca la página del router. Ya está comprobado de que funciona, borro la regla y vuelvo a la normalidad.

Si en una regla le activas que guarde registro luego puedes ir al directorio /var/log en donde tendrás los logs. Como se trata de una regla que se ejecuta al nivel de kernel se guarda en el fichero /var/log/kern.log. Esto también se puede configurar. Para ello hay que entrar a configurar ficheros de registro para iptables.

Es muy sencillo de configurar, a nada que vayamos probando haciendo click en todos los botones seguro que llegaremos a la configuración que queremos. Ya sea para casa, trabajo, o redes públicas. Como ya decía en el post sobre el antivirus ClamAV y la interfaz ClamTK, todavía más seguro puedes estar en Linux si activas el cortafuegos 😉

Un saludo.


Programar copia de seguridad en servidor Linux + Apache + MySQL compatible

2015-05-15 - Categorías: GNU/Linux

Resulta que si tienes un servidor Linux, ya sea dedicado o virtual. Puede ser que no tengas una copia de seguridad automatizada de tus principales archivos. Los proveedores de servidores suelen ofrecer este servicio aparte cuando contratas un servidor. También puede ser que quieras automatizarlo en un ordenador local de ésta forma.

Aquí les dejo un script simplificado por si les sirve de ayuda:

### FICHERO PARA AUTOMATIZAR LA COPIA DE SEGURIDAD 
### DE TODOS LOS DATOS DEL SERVIDOR
FECHA=$(date +%Y%m%d%H%M%S)


# COPIA A FICHERO DE LA BD
mysqldump nombreBD -uusuario -ppassword > backups/nombreBD.temp.sql
tar -cvzf backups/nombreBD.${FECHA}.tar.gz backups/nombreBD.temp.sql
rm backups/nombreBD.temp.sql


# BD otras bds..

# copia incremental en el directorio de copia
# ojo! la primera vez hay que poner ‘full’ en vez de ‘incremental’ para preparar la primera copia
duplicity incremental –encrypt-key “password” –volsize 100 –no-encryption /home/ubuntu file:///home/ubuntu.backup/
–exclude /home/ubuntu/undirectoriodecache/


# borra historial de archivos antiguos
duplicity remove-older-than 60D file:///home/ubuntu.backup/

# limpia copias incompletas o mal realizadas
duplicity –no-encryption cleanup file:///home/ubuntu.backup/

Suponiendo que nuestro usuario se llama ‘ubuntu’ y estamos en el directorio del usuario (/home/ubuntu/). Este script se puede guardar en un fichero, por ejemplo: copiarTodo.sh Le damos permiso de ejecución con:

$ chmod +x copiarTodo.sh

Así podremos probarlo antes de programar su ejecución periódica. Ejecutamos:

$ ./copiarTodo.sh

..y vemos los resultados, es decir, vemos el directorio de salida de los ficheros generados:

  • /home/ubuntu/backups/ es el directorio donde se copian los datos de la base de datos compatible con MySQL.
  • /home/ubuntu.backup/ es el directorio de salida de Duplicity.

Para terminar falta programar la ejecución de dicho script. Para ello ejecutamos lo siguiente:

$ crontab -e

…y añadimos lo siguiente para una ejecución semanal por ejemplo el domingo a las tres y cuarto de la madrugada:

15 3 * * 0 ~/copiarTodo.sh > ~/copiarTodo.log

mysqldump

A saber, por si acaso no lo conocen, este es el comando de Linux que desde terminal permite extraer de una base de datos compatible con MySQL todos los datos y guardarlos en un fichero.

duplicity

Este programa es el que se utilizar para hacer copias de seguridad en Ubuntu. Por debajo del sistema de copias que viene instalado llamado Deja-dup, tenemos dicho Duplicity. Como es una aplicación de línea de comandos lo que tenemos en el entorno de escritorio es una interfaz de usuario a dicho programa.

Duplicity permite hacer copias incrementales. Es decir, después de una primera copia total de todos los archivos, permite en las siguientes sólo copiar los ficheros en los que ha habido cambios. Además las copias se empaquetan en ficheros de cierto tamaño, cifrados y protegidos con contraseña. Incluso se pueden enviar automáticamente a un servidor de ficheros FTP, por ejemplo.

Me remito a la documentación oficial para más información.

http://duplicity.nongnu.org/https://launchpad.net/deja-dup

Un saludo.


PlayOnLinux: potente interfaz para Wine

2015-04-10 - Categorías: GNU/Linux

Navegando, navegando me he topado con este brillante programa. Se trata de una interfaz que coordina todo el mantenimiento de programas para Windows, y poder ejecutarlos en Linux.

Muchos de ellos te los descarga y te acompaña en la instalación. Tenemos un buen directorio donde tenemos las aplicaciones compatibles y probadas.

Por si no era bastante con la avalancha de videojuegos que están llegando a Linux en los últimos tiempos, también tenemos disponible muchos de los de Windows, plataforma por excelencia para los jugones.

No lo he explicado, Wine es una capa de software que hace posible la ejecución de programas nativos de Windows en Linux.

Se acerca el fin de semana, si tienes Linux, tienes aquí una joya de la informática para probar 😉

Página oficial de PlayOnLinux


Programar una tarea en Linux desde línea de comandos

2015-04-08 - Categorías: GNU/Linux

Es bien sencillo. Abrimos un terminal si estamos en una estación de trabajo, o nos conectamos al servidor si es así. Entonces ya tenemos acceso.

En Ubuntu funciona de ésta manera, no creo que varíe mucho de una distribución de Linux a otra.

Ejecutamos:

$ crontab -e

Entonces veremos unas explicaciones en inglés donde detallan todo. Tendremos que poner una línea nueva para cada tarea. Por ejemplo nos puede quedar algo tal que así:

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use ‘*’ in these fields (for ‘any’).#
# Notice that tasks will be started based on the cron’s system
# daemon’s notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
0 4 * * sun /home/ubuntu/duplicity.backup.sh

Aquí puedes ver todas las explicaciones, y al final una simple linea que es mi tarea. Se ejecuta en el minuto 0 a la hora 4, para todos los días del mes, para todos los meses, sólo los domingos. Esto mismo en inglés lo explica en los comentarios en inglés.

Es importante saber que si ejecutamos ‘crontab -e’ como usuario entonces editamos las tareas del usuario que tengamos. Podemos hacer lo mismo para el superusuario. Si nos interesara ejecutaríamos ‘sudo crontab -e’.

Los comandos se ejecutan desde el directorio del usuario. Ten cuidado con ésto porque si lees o escribes ficheros ten en cuenta de usar rutas absolutas o rutas relativas desde el directorio de trabajo del usuario que ejecutará la tarea. Sino no funcionará.

Como curiosidad, Duplicity es una gran herramienta para hacer copias de seguridad incrementales, cifradas, comprimidas y otras tantas características que tiene, todo desde línea de comandos. Ubuntu en su sistema de copias de seguridad, usa Duplicity por debajo. Si quieres échale un vistazo que merece la pena 😉

Espero que sirva.
Saludos.



ClamAV con ClamTk en Ubuntu, aún más seguro si cabe

2015-02-22 - Categorías: GNU/Linux
ClamTk

En GNU/Linux dicen que no hay virus. Pero ¿es así realmente? Podemos buscar información que nos dice que en todos los sistemas operativos hay virus. Incluso en ordenadores Mac hemos tenido los sonados casos con miles de ordenadores infectados. En Linux de igual manera que podemos tener virus. Pero hay una gran diferencia, es muy raro que lleguemos a instalarnos uno.

Continuar leyendo..

© 2021 JnjSite.com - MIT license

Sitio hecho con WordPress, diseño y programación del tema por Jnj.