Apuntes de sistema: Servidor en Linux, los basics (parte 2)

linux ubuntu server basics apuntes de sistema

Instalar Linux (en especial distros server-style) de cero es como abrir un cuaderno en blanco: limpio, rápido, y listo para añadir nuestro contenido. Antes de armar nuestro proyecto en este servidor, no esta demás hacer algunas configuraciones iniciales, como en cualquier aparato hoy en día. So, hice un pequeño (¿pequeño?) apunte sobre esto, empecemos:

Indice

Acceder al bash

Lo primero, decir que estamos en Linux. Tenga o no tenga GUI, vamos a usar mucho la consola para muchas cosas, por ende, es necesario que te acostumbres a esto. Puede complicar un poco al principio, pero después se le toma hasta cariño acceder a una línea de comandos, agiliza las cosas. ¿Y como accedemos? Tenemos dos formas:

  • De forma local, conectándole a la máquina un teclado, y una pantalla.
  • De forma remota, a través de SSH (Secure Shell).

En la primera, la pantalla tiene un login básico, de usuario, y clave.

Prefiero la segunda, si tengo un notebook me da la comodidad de configurarla en la comodidad de la cama de forma remota, y no encorvando la espalda en algun lugar incomodo. Además de que si instalo servicios como VPN en la red (con la respectiva configuración), puedo acceder a ella desde cualquier parte del mundo.

Para acceder por SSH, abrimos cmd en Windows (desde W8 en adelante, anterior a eso se debe usar un programa aparte como PuTTY) o, en macOS: Terminal. Seguido a esto se debe usar el siguiente comando:

ssh user@ip

Debemos reemplazar user por el usuario que creamos en la instalación (usamos en la publicacion anterior juan), y ip, por la ip que tiene asignada. De ejemplo vamos a usar juan como usuario, y 192.168.1.101 como ip, por ende, queda así:

ssh juan@192.168.1.101

Al ser la primera vez que te conectas a Linux mediante SSH, entregará un mensaje similar a este:

Fingerprint

A esta opción escribimos yes, y posteriormente pedirá la contraseña:

Password

Despues de, si nos entrega esto:

Logon Screen

... quiere decir que ya estamos conectados vía SSH.

Actualización de software

Desde el tiempo en que se publica la distro, hasta el tiempo en que la instalaste, normalmente los programas (desde ahora les llamaremos paquetes) pueden haber recibido alguna actualización, para corregir vulnerabilidades o incorporar nuevas características. En distribuciones Debian, esto se puede realizar con los siguientes comandos:

sudo apt-get update && sudo apt-get upgrade -y

Voy a marcar dos cosas importantes en este comando. La primera, es que al apretar Enter, pedirá la clave de super usuario o root. Esto es debido a que ponemos primero sudo, comando que realiza la siguiente tarea como super usuario requerido para algunas tareas, como actualizar paquetes, o modificar algún archivo de sistema (sudo, en inglés, es como un "super user do...") La segunda, es que aquí no es un comando, si no dos. Gracias al &&, concatené sudo apt-get update y sudo apt-get upgrade -y (la y es de yes, para confirmar la operación) en una única línea. El sistema automáticamente una vez terminado el primer comando, accionará el segundo. Sirve para concatenar mas comandos inclusive:

echo hola && echo " probando" && echo " texto"

Va a dar como resultado "hola probando texto" (puse espacios antes, si no queda como holaprobandotexto).

Manuales en castellano y locales

Esto sirve si quieres tener los manuales (manpages) en español, además de configurar ciertas variables de localización para que la máquina tenga bien configurado cosas como el idioma, moneda, fechas y horas, que está en el país al que pertenece:

sudo apt-get install manpages-es && sudo dpkg-reconfigure locales

Aquí va a darte una pantalla donde elegir el país que corresponda. En mi caso, siendo Chile, usaré es_CL.UTF-8. Despues de esto, se sugiere hacer un logout / login.

En base a lo mismo, configuraremos también la zona horaria:

sudo timedatectl set-timezone America/Santiago

Aquí puse Santiago de Chile, pero depende de tu zona. Hay una lista bien útil en PHP.net donde puedes encontrar la que te corresponda, o poner el comando timedatectl list-timezones.

Cliente NTP, mantengamos sincronizada la hora

Instalaremos los paquetes ntp y ntpsec-ntpdate para mantener configurada la hora de forma automática. Usaremos el servicio NTP del Servicio Hidrográfico y Oceanográfico de la Armada (SHOA) de Chile en este caso. Debemos probar su conexión antes:

sudo apt-get install ntp ntpsec-ntpdate -y # Instala los paquetes necesarios
sudo ntpdate ntp.shoa.cl # Prueba de conexión con ntp.shoa.cl

Si funciona y actualiza la hora, añadamos el servidor a la lista del servicio ntp y lo echamos a andar:

echo "server ntp.shoa.cl" | sudo tee -a /etc/ntpsec/ntp.conf
sudo service ntpd start

Paquetes esenciales para proyectos en general

No está demas en un PC instalar algun software para descomprimir archivos zip, o algún gestor de descargas, de la misma manera, instalemos algunos paquetes que nos pueden servir mas adelante:

sudo apt-get install curl wget net-tools git unzip ufw -y

Cosillas que vamos a instalar en este paso:

  • curl: Para transferencia de archivos, y uso de algunas API.
  • wget: Herramienta que sirve para descargas.
  • net-tools: Utilidades para la red, como ifconfig, netstat, arp, etc.
  • git: Gestor de control de versiones.
  • unzip: Para descomprimir archivos .zip (que probablemente hayas bajado con wget)
  • ufw: Firewall. A la hora de tener ciertos servicios, es muy recomendable filtrar ciertos accesos. Mas adelante hablaré sobre UFW.

Muchas de estas herramientas normalmente vienen pre instaladas en Ubuntu Server. No está demás darle una vuelta.

Tip 1: Cambio de nombre de la máquina

Si a la hora de instalar elegiste mal el nombre (hostname) de la maquina y quieres cambiarlo:

sudo hostnamectl set-hostname <define aquí tu nuevo nombre>

Puedes usar mayúsculas, minúsculas, números y guiónes.

Tip 2: Demora en inicio por networkd wait online

Me ha pasado en algunas maquinas, donde en el inicio (en todo el verbose), se demora un resto mas (no tanto, como 1 minuto) porque un servicio está esperando que esté correctamente conectado a internet:

Captura del problema

Si no quieres que se demore este tiempo, puedes deshabilitar el servicio:

sudo systemctl disable systemd-networkd-wait-online.service && sudo systemctl mask systemd-networkd-wait-online.service

¿Terminamos?

Una vez hecho esto, te sugiero dos cosas, limpiar paquetes que no son necesarios:

sudo apt-get autoremove -y && sudo apt-get clean

y por supuesto, un reinicio no está demás:

sudo reboot

Si quieres apagar la máquina y seguir mañana:

sudo shutdown -P now

Glosario

  • apt / apt-get: Gestor de paquetes de distribuciones basadas en Debian. Permite instalar, actualizar y eliminar software desde la línea de comandos.
  • Bash: Intérprete de comandos (shell) por defecto en la mayoría de distribuciones Linux. Es la "ventana" con la que le hablas al sistema.
  • Firewall: Sistema que filtra el tráfico de red, permitiendo o bloqueando conexiones según reglas configuradas. En este post usamos ufw para gestionarlo.
  • Git: Sistema de control de versiones distribuido. Sirve para gestionar el historial de cambios de cualquier proyecto, y es la base de plataformas como GitHub o GitLab.
  • GUI (Graphical User Interface): Interfaz gráfica de usuario, es decir, escritorio con ventanas, iconos y ratón. Ubuntu Server no incluye una por defecto.
  • Hostname: Nombre que identifica a la máquina dentro de la red. Es lo que aparece en el inicio del bash (usuario@nombre-maquina).
  • Locales: Variables del sistema que definen el idioma, moneda, formato de fechas y otras preferencias regionales.
  • Manpages: Manuales del sistema incorporados en Linux. Se consultan con el comando man nombre-del-comando directamente desde la terminal.
  • NTP (Network Time Protocol): Protocolo que sincroniza el reloj del servidor con fuentes de tiempo de referencia en internet, evitando que la hora se desfase.
  • Root: Usuario administrador con permisos totales sobre el sistema. No es recomendable usarlo directamente; para eso existe sudo.
  • sudo (Super User Do): Comando que permite ejecutar una tarea con permisos de root sin necesidad de iniciar sesión como administrador.
  • UFW (Uncomplicated FireWall): Herramienta para gestionar el firewall en Ubuntu de forma sencilla, sin necesidad de conocer iptables a fondo.
  • UTF-8: Codificación de caracteres estándar que soporta prácticamente todos los idiomas e incluye tildes, eñes y símbolos especiales sin problemas.
  • Verbose: Modo en que el sistema muestra en pantalla todos los mensajes de inicio o proceso, en lugar de ocultar la actividad en segundo plano.