Warning: Undefined variable $menu_width in /home/sdove/public_html/wp-content/themes/vw-hosting-services-pro/template-parts/header/content-header.php on line 122
Instalación del Servidor y Agente Zabbix en Ubuntu 24.04
En este tutorial, te guiaré a través de los pasos necesarios para instalar el servidor Zabbix y el agente en Ubuntu 24.04. Zabbix es una solución de monitoreo de código abierto que permite supervisar el estado de varios servicios de red, servidores y hardware de red.
Prerequisitos
Antes de comenzar, asegúrate de tener acceso a una máquina con Ubuntu 24.04 y privilegios de superusuario.
Actualiza tu sistema
sudo apt update
sudo apt upgrade -y
Paso 1: Instalación del Servidor Zabbix
Agregar el repositorio de Zabbix
Primero, necesitas agregar el repositorio oficial de Zabbix a tu sistema:
A continuación, crea la base de datos y el usuario para Zabbix:
sudo mysql -uroot -p
Dentro del cliente MySQL, ejecuta los siguientes comandos:
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin; CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'tu_contraseña'; GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost'; FLUSH PRIVILEGES; EXIT;
Importar el esquema de la base de datos de Zabbix
Importa las tablas predeterminadas:
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
Configurar el servidor Zabbix
Edita el archivo de configuración de Zabbix:
sudo nano /etc/zabbix/zabbix_server.conf
Asegúrate de ajustar las siguientes líneas:
DBPassword=tu_contraseña
Iniciar los servicios de Zabbix
Finalmente, habilita e inicia el servidor Zabbix y el agente:
Sigue las instrucciones en pantalla para completar la configuración de la interfaz web.
Conclusión
Ahora tienes un servidor Zabbix y un agente funcionando en Ubuntu 24.04. Asegúrate de ajustar cualquier configuración adicional que necesites y comienza a monitorear tus servicios de forma eficiente.
La instalación de Maldet (Linux Malware Detect) y ClamAV en Ubuntu 24.04 puede ayudar a proteger tu servidor de malware y virus. A continuación, te presento un tutorial paso a paso para realizar esta instalación.
Paso 1: Actualizar el Sistema
Antes de comenzar, es recomendable asegurarte de que tu sistema esté completamente actualizado. Abre la terminal y ejecuta los siguientes comandos:
sudo apt update
sudo apt upgrade -y
Paso 2: Instalar ClamAV
ClamAV es un antivirus de código abierto “para Linux”. Para instalarlo, ejecuta:
sudo apt install clamav clamtk -y
Paso 2.1: Actualizar la Base de Datos de ClamAV
Una vez instalado ClamAV, debes actualizar su base de datos. Puedes hacerlo con el siguiente comando:
sudo freshclam
Paso 3: Instalar Maldet
Para instalar Maldet, primero necesitas descargarlo. Ejecuta los siguientes comandos en la terminal:
cd /usr/local/src
sudo wget http://www.rfxn.com/downloads/maldetect-current.tar.gz
sudo tar -xvzf maldetect-current.tar.gz
cd maldetect-*
sudo ./install.sh
Paso 4: Configurar Maldet
Una vez instalado, es recomendable configurar Maldet. Abre su archivo de configuración:
sudo nano /usr/local/maldetect/conf.maldet
En este archivo, puedes ajustar varias configuraciones, como notificaciones por correo electrónico y programación de análisis. Asegúrate de guardar los cambios antes de salir del editor.
Paso 5: Ejecutar un Escaneo
Para ejecutar un escaneo con Maldet, puedes usar el siguiente comando:
sudo maldet --scan-all /
Este comando escaneará todo tu sistema en busca de malware.
Paso 6: Revisar los Resultados
Después de que el escaneo haya finalizado, revisa los resultados con:
sudo maldet --report
Paso 7: Actualizar Maldet
Para asegurarte de que Maldet se mantenga actualizado, puedes usar el siguiente comando:
sudo maldet --update
Conclusión
Siguiendo estos pasos, habrás instalado y configurado Maldet y ClamAV en Ubuntu 24.04. Es recomendable realizar escaneos periódicos para mantener tu servidor protegido de amenazas.
Lynis es una herramienta de auditoría de seguridad para sistemas basados en Unix. A continuación, te mostramos cómo instalarla en Ubuntu 24.04.
Paso 1: Actualizar el Sistema
Antes de instalar cualquier nuevo software, es importante asegurarse de que el sistema esté actualizado. Abre la terminal y ejecuta:
sudo apt update && sudo apt upgrade -y
Paso 2: Instalar Dependencias Necesarias
Lynis puede requerir algunas dependencias. Instálalas utilizando el siguiente comando:
sudo apt install git -y
Paso 3: Descargar Lynis
Descarga el repositorio de Lynis directamente desde GitHub. Ejecuta los siguientes comandos:
cd /opt
sudo git clone https://github.com/CISOfy/lynis.git
Paso 4: Ejecutar Lynis
Una vez descargado Lynis, puedes ejecutar la auditoría con el siguiente comando:
sudo /opt/lynis/lynis audit system
Paso 5: Revisar los Resultados
Después de ejecutar Lynis, revisa los resultados que se mostrarán en la consola. Lynis te proporcionará un informe detallado sobre la seguridad de tu sistema y recomendaciones para mejorarla.
Paso 6: Actualizar Lynis
Es recomendable mantener Lynis actualizado. Para ello, dirígete al directorio de Lynis y ejecuta el siguiente comando para obtener la última versión:
cd /opt/lynis
sudo git pull
Conclusión
Con estos pasos, Lynis estará instalado y funcionando en tu sistema Ubuntu 24.04. Realiza auditorías periódicas para mantener la seguridad de tu sistema.
Un contenedor Linux es un conjunto de procesos independiente del resto del sistema. Para el usuario final, un contenedor Linux funciona como una máquina virtual, pero es mucho más ligero. No tiene la sobrecarga de ejecutar un kernel Linux adicional y los contenedores no requieren compatibilidad con la virtualización de hardware de CPU. Esto significa que puede crear más contenedores que máquinas virtuales en el mismo servidor.
Imagina que tienes un servidor que debe ejecutar varios sitios web para tus clientes. Por un lado, cada sitio web podría ser un bloque de host/servidor virtual de la misma instancia del servidor web Apache o Nginx. Por otro lado, al usar máquinas virtuales, crearías una máquina virtual anidada independiente para cada sitio web. Los contenedores Linux se encuentran entre los hosts virtuales y las máquinas virtuales.
LXD te permite crear y administrar estos contenedores. LXD proporciona un servicio de hipervisor para gestionar todo el ciclo de vida de los contenedores. En este tutorial, configurarás LXD y lo usarás para ejecutar Nginx en un contenedor. Después, dirigirás el tráfico de internet al contenedor para que una página web de ejemplo sea accesible.
Prerrequisitos
Para completar este tutorial, necesitarás lo siguiente:
Un servidor con Ubuntu 20.04 . Para configurar un servidor, incluyendo un usuario sudo no root y un firewall, puede crear un Droplet de IsnHosting con Ubuntu 20.04 y luego seguir nuestra Guía de configuración inicial del servidor . Anote la dirección IP pública de su servidor. Más adelante la llamaremos your_server_ip.
Al menos 5 GB de almacenamiento en bloque. Para configurarlo, puede seguir la Guía rápida de volúmenes de almacenamiento en bloque de IsnHosting. En la configuración del almacenamiento en bloque, seleccione Manually Format & Mount[para permitir que LXD lo prepare según sea necesario]. Esto se utilizará para almacenar todos los datos relacionados con los contenedores.
Nota: A partir de Ubuntu 20.04, LXD está disponible oficialmente como paquete snap. Este nuevo formato de paquete ofrece varias ventajas. Un paquete snap se puede instalar en cualquier distribución de Linux compatible con este tipo de paquetes . Se recomienda usar un servidor con al menos 2 GB de RAM al ejecutar el paquete snap de LXD. La siguiente tabla resume las características del paquete snap de LXD:
Característica
paquete instantáneo
versiones LXD disponibles
2.0, 3.0, 4.0, 4.x
requisitos de memoria
Moderado, para el servicio SnapD . Servidor recomendado con 2 GB de RAM.
Consideraciones de actualización
Puede aplazar la actualización de LXD hasta 60 días
Capacidad de actualizar desde otro formato de paquete
Puede actualizar de deb a snap.
Sigue el resto de este tutorial para usar LXD desde el paquete snap en Ubuntu 20.04. Si, por el contrario, quieres usar el paquete deb de LXD, consulta nuestro tutorial ” Cómo instalar y usar LXD en Ubuntu 18.04″ .
Paso 1: Preparación del entorno para LXD
Antes de configurar y ejecutar LXD, deberá preparar el entorno de su servidor. Esto implica agregar el usuario sudo al lxdgrupo y configurar el backend de almacenamiento.
Cómo agregar su cuenta no root al lxdgrupo Unix
Al configurar su cuenta no root, agréguela al lxdgrupo con el siguiente comando. El addusercomando toma como argumentos la cuenta de usuario y el grupo Unix para agregar la cuenta de usuario al grupo Unix existente:
sudo adduser sammy lxd
Ahora aplica la nueva membresía:
su sammy
Introduzca su contraseña y presione ENTER.
Por último, confirma que tu usuario ahora está agregado al lxdgrupo:
id -nG
Recibirás un resultado como este:
sammy sudo lxd
Ahora está listo para continuar configurando LXD.
Preparación del backend de almacenamiento
Para comenzar, configurará el backend de almacenamiento.
El sistema de almacenamiento recomendado para LXD en Ubuntu es el sistema de archivos ZFS. ZFS también funciona muy bien con el almacenamiento en bloque de IsnHosting . Para habilitar la compatibilidad con ZFS en LXD, primero actualice la lista de paquetes y luego instale el zfsutils-linuxpaquete auxiliar:
Anote la ruta completa del archivo de su dispositivo de almacenamiento. La usará en el siguiente paso al configurar LXD.
Paso 2: Inicialización y configuración de LXD
LXD está disponible como paquete snap en Ubuntu 20.04. Viene preinstalado, pero debes configurarlo.
Primero, verifique que el paquete snap de LXD esté instalado. El comando snap listmuestra los paquetes snap instalados:
snap list
Ubuntu 20.04 preinstala LXD 4.0.3 y está siguiendo el 4.0/stablecanal. LXD 4.0 tiene soporte durante cinco años (hasta 2025). Solo recibirá actualizaciones de seguridad:
Output of the "snap list" command — Listing the installed snap packagesName Version Rev Tracking Publisher Notes
core18 20200724 1885 latest/stable canonical✓ base
lxd 4.0.3 16922 4.0/stable/… canonical✓ -
snapd 2.45.3.1 8790 latest/stable canonical✓ snapd
Para obtener más información sobre el paquete snap instalado en LXD, ejecute snap info lxd. Podrá ver las versiones disponibles, incluyendo la fecha de la última actualización.
Ahora configurarás LXD.
Configuración de opciones de almacenamiento para LXD
Inicie el proceso de inicialización de LXD utilizando el sudo lxd initcomando:
sudo lxd init
Primero, el programa le preguntará si desea habilitar la agrupación en clústeres de LXD. Para este tutorial, presione ENTERpara aceptar el valor predeterminado noo escriba noy luego presione ENTER. La agrupación en clústeres de LXD es un tema avanzado que permite alta disponibilidad para su configuración de LXD y requiere al menos tres servidores LXD ejecutándose en un clúster:
OutputWould you like to use LXD clustering? (yes/no) [default=no]: no
Las siguientes seis indicaciones abordan el pool de almacenamiento. Proporcione las siguientes respuestas:
Presione ENTERpara configurar un nuevo grupo de almacenamiento.
Presione ENTERpara aceptar el nombre del grupo de almacenamiento predeterminado.
Presione ENTERpara aceptar el zfsbackend de almacenamiento predeterminado.
Presione ENTERpara crear un nuevo grupo ZFS.
Escriba yespara utilizar un dispositivo de bloque existente.
Por último, escriba la ruta completa al nombre del dispositivo de almacenamiento en bloque (esto es lo que registró anteriormente. Debería ser algo como: )./dev/disk/by-id/device_name
Sus respuestas se verán así:
OutputDo you want to configure a new storage pool? (yes/no) [default=yes]: yes
Name of the new storage pool [default=default]: default
Name of the storage backend to use (btrfs, dir, lvm, zfs) [default=zfs]: zfs
Create a new ZFS pool? (yes/no) [default=yes]: yes
Would you like to use an existing block device? (yes/no) [default=no]: yes
Path to the existing block device: /dev/disk/by-id/scsi-0DO_Volume_volume-fra1-01
Ya has configurado el backend de almacenamiento para LXD. Siguiendo con initel script de LXD, configurarás algunas opciones de red.
Configuración de opciones de red para LXD
LXD ahora pregunta si desea conectarse a un servidor MAAS (Metal As A Server). MAAS es un software que hace que un servidor físico parezca una máquina virtual y se gestione como tal.
Estamos ejecutando LXD en modo independiente, por lo tanto, acepte el valor predeterminado y responda no:
OutputWould you like to connect to a MAAS server? (yes/no) [default=no]: no
Se le pedirá que configure un puente de red para los contenedores LXD. Esto habilita las siguientes funciones:
Cada contenedor obtiene automáticamente una dirección IP privada.
Cada contenedor puede comunicarse con los demás a través de la red privada.
Cada contenedor puede iniciar conexiones a Internet.
De forma predeterminada, cada contenedor permanece inaccesible desde internet; no es posible iniciar una conexión desde internet y acceder a un contenedor a menos que se habilite explícitamente. Aprenderá a permitir el acceso a un contenedor específico en el siguiente paso.
Cuando se le solicite crear un nuevo puente de red local, elija yes:
OutputWould you like to create a new local network bridge? (yes/no) [default=yes]: yes
Luego acepta el nombre predeterminado lxdbr0:
OutputWhat should the new bridge be called? [default=lxdbr0]: lxdbr0
Acepte la selección automatizada del rango de direcciones IP privadas para el puente:
OutputWhat IPv4 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: auto
What IPv6 address should be used? (CIDR subnet notation, “auto” or “none”) [default=auto]: auto
Finalmente, LXD plantea las siguientes preguntas diversas:
Cuando se le pregunte si desea administrar LXD a través de la red, presione ENTERo responda no:
OutputWould you like LXD to be available over the network? (yes/no) [default=no]: no
Cuando se le pregunte si desea actualizar automáticamente las imágenes de contenedores obsoletos, presione ENTERo responda yes:
OutputWould you like stale cached images to be updated automatically? (yes/no) [default=yes] yes
Cuando se le pregunte si desea ver y conservar la configuración YAML que acaba de crear, responda yessi así lo desea. De lo contrario, presione ENTERo responda no:
OutputWould you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: no
Se ejecutará un script en segundo plano. Es normal que no se reciba ninguna salida.
Ya has configurado tus opciones de red y almacenamiento para LXD. A continuación, crearás tu primer contenedor LXD.
Paso 2: Creación y configuración de un contenedor LXD
Ahora que ha configurado LXD correctamente, está listo para crear y administrar su primer contenedor. En LXD, los contenedores se administran mediante el comando lxcseguido de una acción, como list, launch, y .startstopdelete
Utilice lxc listpara ver los contenedores instalados disponibles:
lxc list
Dado que esta es la primera vez que el lxccomando se comunica con el hipervisor LXD, muestra información sobre cómo iniciar un contenedor. Finalmente, el comando muestra una lista vacía de contenedores. Esto es normal, ya que aún no hemos creado ninguno.
Output of the "lxd list" commandTo start your first container, try: lxc launch ubuntu:18.04
+------+-------+------+------+------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+-------+------+------+------+-----------+
Ahora cree un contenedor que ejecute Nginx. Para ello, primero use el lxc launchcomando para crear e iniciar un contenedor de Ubuntu 18.04 llamado webserver.
Crea el webservercontenedor. ” 18.04in” ubuntu:18.04es un acceso directo para Ubuntu 18.04. ubuntu:Es el identificador del repositorio preconfigurado de imágenes LXD. También puedes usar ubuntu:bionic:
lxc launch ubuntu:20.04 webserver
Nota : Puede encontrar la lista completa de imágenes de Ubuntu disponibles ejecutando [<sub> lxc image list ubuntu:y</sub> otras distribuciones de Linux ejecutando [<sub>y</sub>] lxc image list images:. Tanto [<sub> ubuntu:y</sub> images:son repositorios de imágenes de contenedor. Para cada imagen de contenedor, puede obtener más información con el comando [<sub>y</sub>] lxc image info ubuntu:20.04.
Como es la primera vez que crea un contenedor, este comando descarga la imagen del contenedor de internet y la almacena en caché. Verá este resultado una vez que el nuevo contenedor termine de descargarse:
OutputCreating webserver
Starting webserver
Con el webservercontenedor iniciado, use el lxc listcomando para mostrar información sobre él. Hemos añadido ` --columns ns4para` para mostrar solo las columnas de name`,` statey IPv4`dirección`. El comando predeterminado lxc listmuestra tres columnas más: la dirección IPv6, si el contenedor es persistente o efímero, y si hay instantáneas disponibles para cada contenedor.
lxc list --columns ns4
La salida muestra una tabla con el nombre de cada contenedor, su estado actual, su dirección IP y su tipo:
Output+-----------+---------+------------------------------------+
| NAME | STATE | IPV4 |
+-----------+---------+------------------------------------+
| webserver | RUNNING | your_webserver_container_ip (eth0) |
+-----------+---------+------------------------------------+
El servidor DHCP de LXD proporciona esta dirección IP y, en la mayoría de los casos, se mantendrá igual incluso al reiniciar el servidor. Sin embargo, en los siguientes pasos, creará iptablesreglas para reenviar conexiones desde internet al contenedor. Por lo tanto, debe indicarle al servidor DHCP de LXD que siempre asigne la misma dirección IP al contenedor.
El siguiente conjunto de comandos configurará el contenedor para obtener una asignación de IP estática. Primero, anulará la configuración de red del eth0dispositivo heredada del perfil LXD predeterminado. Esto le permite establecer una dirección IP estática, lo que garantiza la correcta comunicación del tráfico web hacia y desde el contenedor.
Específicamente, lxc config devicees un comando que configconfigura un dispositivo device. La primera línea contiene la subacción overridepara anular el dispositivo eth0del contenedor webserver. La segunda línea contiene la subacción para configurar el ipv4.addresscampo del eth0dispositivo del webservercontenedor con la dirección IP proporcionada inicialmente por el servidor DHCP.
Ejecute el primer configcomando:
lxc config device override webserver eth0
Recibirás un resultado como este:
OutputDevice eth0 overridden for webserver
Ahora configure la IP estática:
lxc config device set webserver eth0 ipv4.address your_webserver_container_ip
Si el comando es exitoso, no recibirá ninguna salida.
Reiniciar el contenedor:
lxc restart webserver
Ahora verifique el estado del contenedor:
lxc list
Deberías ver que el contenedor es RUNNINGy la IPV4dirección es tu dirección estática.
Está listo para instalar y configurar Nginx dentro del contenedor.
Paso 3: Configuración de Nginx dentro de un contenedor LXD
En este paso te conectarás al webservercontenedor y configurarás el servidor web.
Conéctese al contenedor con lxc shellel comando, que toma el nombre del contenedor e inicia un shell dentro del contenedor:
lxc shell webserver
Una vez dentro del contenedor, el indicador de shell se verá así:
[environment second]
Este shell, incluso si es un shell raíz, está limitado al contenedor. Todo lo que se ejecuta en él permanece en el contenedor y no puede escapar al servidor host.
Nota: Al introducir un shell en un contenedor, es posible que vea una advertencia como mesg: ttyname failed: No such device. Este mensaje se genera cuando el shell del contenedor intenta ejecutar el comando mesgdesde el archivo de configuración /root/.profile. Puede ignorarlo sin problema. Para evitarlo, puede eliminar el comando mesg n || truede /root/.profile.
Una vez dentro de su contenedor, actualice la lista de paquetes e instale Nginx:
apt update
apt install nginx
Con Nginx instalado, ahora editará la página web predeterminada de Nginx. En concreto, añadirá dos líneas de texto para que quede claro que este sitio está alojado en el webservercontenedor.
Usando nanosu editor preferido, abra el archivo /var/www/html/index.nginx-debian.html:
nano /var/www/html/index.nginx-debian.html
Añade las dos frases resaltadas al archivo:
/var/www/html/index.nginx-debian.html<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx on LXD container webserver!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx on LXD container webserver!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
...
Editó el archivo en dos partes y agregó específicamente el texto on LXD container webserver. Guarde el archivo y salga del editor de texto.
Ahora cierre la sesión del contenedor:
logout
Una vez que aparezca el mensaje predeterminado del servidor, use [nombre del servidor] curlpara comprobar que el servidor web del contenedor funciona correctamente. Para ello, necesitará la dirección IP del contenedor web, que obtuvo con el lxc listcomando anterior.
Utilice curlpara probar su servidor web:
curl http://your_webserver_container_ip
Recibirá la página de bienvenida HTML predeterminada de Nginx. Tenga en cuenta que incluye sus modificaciones:
Output<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx on LXD container webserver!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx on LXD container webserver!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
...
El servidor web funciona, pero solo se puede acceder a él desde el host usando la IP privada. En el siguiente paso, enrutará las solicitudes externas a este contenedor para que todo el mundo pueda acceder a su sitio web a través de internet.
Paso 4: Reenvío de conexiones entrantes al contenedor Nginx mediante LXD
Ahora que ha configurado Nginx, es hora de conectar el contenedor del servidor web a internet. Para comenzar, debe configurar el servidor para que reenvíe 80al webservercontenedor cualquier conexión que reciba en el puerto. Para ello, creará una iptablesregla para reenviar las conexiones de red. Puede obtener más información sobre IPTables en nuestros tutoriales ” Cómo funciona el firewall de IPtables” y “Fundamentos de IPtables: Reglas y comandos comunes del firewall” .
Este iptablescomando requiere dos direcciones IP: la dirección IP pública del servidor ( your_server_ip) y la dirección IP privada del webservercontenedor ( your_webserver_container_ip), que puede obtener mediante el lxc listcomando .
Ejecute este comando para crear una nueva regla de IPtables:
-t natespecifica que estamos usando la nattabla para la traducción de direcciones.
-I PREROUTINGespecifica que estamos agregando la regla a la cadena PREROUTING.
-i $IFACEespecifica la interfaz eth0, que es la interfaz de red pública predeterminada en el host para Droplets.
-p TCPdice que estamos usando el protocolo TCP.
-d $PUBLIC_IPEspecifica la dirección IP de destino para la regla.
--dport $PORT: especifica el puerto de destino (por ejemplo 80).
-j DNATdice que queremos realizar un salto a Destino NAT (DNAT).
--to-destination $CONTAINER_IP:$PORT dice que queremos que la solicitud vaya a la dirección IP del contenedor específico y al puerto de destino.
Nota: Puede reutilizar este comando para configurar reglas de reenvío. Restablezca las variables , y PORTal PUBLIC_IPprincipio de la línea. Simplemente cambie los valores resaltados.CONTAINER_IPIFACE
Ahora prueba que el servidor web sea accesible desde Internet.
Utilice el curlcomando desde su máquina local para probar las conexiones:
curl --verbose 'http://your_server_ip'
Verás los encabezados seguidos del contenido de la página web que creaste en el contenedor:
Output* Trying your_server_ip...
* Connected to your_server_ip (your_server_ip) port 80 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 200 OK
< Server: nginx/1.10.0 (Ubuntu)
...
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx on LXD container webserver!</title>
<style>
body {
...
Esto confirma que las solicitudes van al contenedor.
Por último, guardará la regla de firewall para que se vuelva a aplicar después de reiniciar.
Para ello, primero instale el iptables-persistentpaquete:
sudo apt install iptables-persistent
Al instalar el paquete, la aplicación le solicitará que guarde las reglas de firewall actuales. Acepte y guarde todas las reglas.
Al reiniciar el equipo, se cargará la regla del firewall. Además, el servicio Nginx del contenedor LXD se reiniciará automáticamente.
Has configurado LXD correctamente. En el paso final, aprenderás a detener y destruir el servicio.
Paso 5: Detención y retirada de contenedores mediante LXD
Puedes decidir que quieres desactivar el contenedor y eliminarlo. En este paso, lo detendrás y lo eliminarás.
Primero, detenga el contenedor:
lxc stop webserver
Utilice el lxc listcomando para verificar el estado:
lxc list
Verás que el estado del contenedor dice STOPPED:
Output+-----------+---------+------+------+------------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+-----------+---------+------+------+------------+-----------+
| webserver | STOPPED | | | PERSISTENT | 0 |
+-----------+---------+------+------+------------+-----------+
Para retirar el contenedor, utilice lxc delete:
lxc delete webserver
Al ejecutarlo lxc listnuevamente se muestra que no hay ningún contenedor ejecutándose:
lxc list
El comando generará el siguiente resultado:
+------+-------+------+------+------+-----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
+------+-------+------+------+------+-----------+
Utilice el lxc helpcomando para ver opciones adicionales.
Para eliminar la regla de firewall que enruta el tráfico al contenedor, primero ubique la regla en la lista de reglas con este comando, que asocia un número de línea con cada regla:
sudo iptables -t nat -L PREROUTING --line-numbers
Verás tu regla, precedida por un número de línea, de la siguiente manera:
OutputChain PREROUTING (policy ACCEPT)
num target prot opt source destination
1 DNAT tcp -- anywhere your_server_ip tcp dpt:http /* forward to the Nginx container */ to:your_container_ip
Utilice ese número de línea para eliminar la regla:
sudo iptables -t nat -D PREROUTING 1
Enumere nuevamente las reglas para garantizar la eliminación:
sudo iptables -t nat -L PREROUTING --line-numbers
Se elimina la regla:
OutputChain PREROUTING (policy ACCEPT)
num target prot opt source destination
Ahora guarde los cambios para que la regla no vuelva a aparecer cuando reinicie su servidor:
sudo netfilter-persistent save
Ahora puedes crear otro contenedor con tu propia configuración y agregar una nueva regla de firewall para reenviarle tráfico.
Conclusión
En este tutorial, instalaste y configuraste LXD. Luego, creaste un sitio web con Nginx, ejecutándose dentro de un contenedor LXD, y lo publicaste mediante IPtables.
Desde aquí, puedes configurar más sitios web, cada uno confinado en su propio contenedor, y usar un proxy inverso para dirigir el tráfico al contenedor correspondiente. El tutorial ” Cómo alojar varios sitios web con Nginx y HAProxy usando LXD en Ubuntu 16.04″ te guía en esta configuración.
Apt es una interfaz de línea de comandos para el sistema de empaquetado dpkg y es la forma preferida de gestionar software desde la línea de comandos en muchas distribuciones. Es el principal sistema de gestión de paquetes en Debian y distribuciones Linux basadas en Debian, como Ubuntu.
Mientras que una herramienta llamada “dpkg” constituye la capa de empaquetado subyacente, aptproporciona apt-cacheinterfaces intuitivas e implementa la gestión de dependencias. Esto permite a los usuarios gestionar grandes cantidades de software de forma eficiente y sencilla.
En esta guía, analizaremos el uso básico de apty apt-cachecómo pueden administrar su software. Practicaremos en un servidor en la nube Ubuntu 22.04, pero los mismos pasos y técnicas se aplican a cualquier otra distribución basada en Ubuntu o Debian.
Cómo actualizar la base de datos de paquetes con Apt
Apt opera con una base de datos de software conocido y disponible. Realiza instalaciones, búsquedas de paquetes y muchas otras operaciones consultando esta base de datos.
Por eso, antes de comenzar cualquier operación de empaquetado con apt, debemos asegurarnos de que nuestra copia local de la base de datos esté actualizada.
Actualice la base de datos local con apt update. Apt requiere privilegios administrativos para la mayoría de las operaciones:
sudo apt update
Verá una lista de los servidores de los que estamos recuperando información. Después de esto, su base de datos debería estar actualizada.
Cómo actualizar los paquetes instalados con Apt
Puede actualizar los paquetes de su sistema usando apt upgrade. Se le solicitará que confirme las actualizaciones y reinicie los servicios del sistema actualizados.
sudo apt upgrade
Cómo instalar nuevos paquetes con Apt
Si conoce el nombre de un paquete que necesita instalar, puede instalarlo usando apt install:
sudo apt install package1 package2 …
Puedes ver que es posible instalar varios paquetes a la vez, lo que es útil para adquirir todo el software necesario para un proyecto en un solo paso.
Apt instala no sólo el software solicitado, sino también cualquier software necesario para instalarlo o ejecutarlo.
Puedes instalar un programa llamado slescribiendo:
sudo apt install sl
Después de eso, podrás ejecutarlo slen la línea de comandos.
Cómo eliminar un paquete con Apt
Para eliminar un paquete de su sistema, ejecute apt remove:
sudo apt remove package_name
Este comando elimina el paquete, pero conserva los archivos de configuración por si lo vuelve a instalar más adelante. De esta forma, la configuración se mantendrá intacta, aunque el programa no esté instalado.
Si necesita limpiar los archivos de configuración y el programa, utilice apt purge:
sudo apt purge package_name
Esto desinstala el paquete y elimina cualquier archivo de configuración asociado con el paquete.
Para eliminar cualquier paquete que se instaló automáticamente para dar soporte a otro programa y que ya no sea necesario, escriba el siguiente comando:
sudo apt autoremove
También puede especificar un nombre de paquete después del autoremovecomando para desinstalar un paquete y sus dependencias.
Banderas de opciones comunes de Apt
Hay varias opciones adicionales que se pueden especificar mediante indicadores. Repasaremos algunas de las más comunes.
Para hacer un “ensayo” de un procedimiento para tener una idea de lo que hará una acción, puede pasar la -sbandera para “simular”:
sudo apt install -s htop
OutputReading package lists... Done
Building dependency tree... Done
Reading state information... Done
Suggested packages:
lm-sensors
The following NEW packages will be installed:
htop
0 upgraded, 1 newly installed, 0 to remove and 1 not upgraded.
Inst htop (3.0.5-7build2 Ubuntu:22.04/jammy [amd64])
Conf htop (3.0.5-7build2 Ubuntu:22.04/jammy [amd64])
En lugar de acciones reales, puede ver una sección Insty Confque especifica dónde se instalaría y configuraría el paquete si se eliminara el “-s”.
Si no desea que se le solicite que confirme sus opciones, también puede pasar la -ybandera para asumir automáticamente “sí” a las preguntas.
sudo apt remove -y htop
Si desea descargar un paquete, pero no instalarlo, puede ejecutar el siguiente comando:
sudo apt install -d packagename
Los archivos se conservarán en formato /var/cache/apt/archives.
Si desea suprimir la salida, puede pasar la -qqbandera al comando:
sudo apt remove -qq packagename
Cómo encontrar un paquete con Apt-Cache
La herramienta de empaquetado apt es en realidad un conjunto de herramientas complementarias relacionadas que se utilizan para administrar el software del sistema.
Mientras aptse utiliza para actualizar, instalar y eliminar paquetes, apt-cachese utiliza para consultar la base de datos de paquetes para obtener información sobre los paquetes.
Puede usar apt-cache searchpara buscar un paquete que se ajuste a sus necesidades. Tenga en cuenta que apt-cache no suele requerir privilegios de administrador:
apt-cache search what_you_are_looking_for
Por ejemplo, para encontrar htopuna versión mejorada del topmonitor del sistema, puede utilizar:
apt-cache search htop
Outputhtop - interactive processes viewer
aha - ANSI color to HTML converter
bashtop - Resource monitor that shows usage and stats
bpytop - Resource monitor that shows usage and stats
btop - Modern and colorful command line resource monitor that shows usage and stats
libauthen-oath-perl - Perl module for OATH One Time Passwords
pftools - build and search protein and DNA generalized profiles
También puedes buscar términos más genéricos. En este ejemplo, buscaremos software de conversión de MP3:
apt-cache search mp3 convert
Outputabcde - A Better CD Encoder
cue2toc - converts CUE files to cdrdao's TOC format
dir2ogg - audio file converter into ogg-vorbis format
easytag - GTK+ editor for audio file tags
ebook2cw - convert ebooks to Morse MP3s/OGGs
ebook2cwgui - GUI for ebook2cw
ffcvt - ffmpeg convert wrapper tool
. . .
Cómo ver la información del paquete con Apt-Cache
Para ver información sobre un paquete, incluida una descripción extendida, utilice la siguiente sintaxis:
apt-cache show package_name
Esto también proporcionará el tamaño de la descarga y las dependencias necesarias para el paquete.
Para ver si un paquete está instalado y verificar a qué repositorio pertenece, puede utilizar apt-cache policy:
apt-cache policy package_name
Conclusión
Ahora debería saber lo suficiente sobre apt-get y apt-cache para administrar la mayor parte del software en su servidor.
Si bien a veces es necesario ir más allá de estas herramientas y del software disponible en los repositorios, la mayoría de las operaciones de software pueden gestionarse mediante estas herramientas.
A continuación, podrá leer sobre la gestión de paquetes de Ubuntu y Debian en detalle.
Docker es una aplicación que simplifica la gestión de procesos de aplicaciones en contenedores . Los contenedores permiten ejecutar aplicaciones en procesos con recursos aislados. Son similares a las máquinas virtuales, pero son más portátiles, consumen menos recursos y dependen más del sistema operativo host.
Para obtener una introducción detallada a los diferentes componentes de un contenedor Docker, consulte El ecosistema de Docker: una introducción a los componentes comunes .
En este tutorial, instalarás y usarás Docker Community Edition (CE) en Ubuntu. Instalarás Docker, trabajarás con contenedores e imágenes, y subirás una imagen a un repositorio de Docker. Además, aprenderás a iniciar, detener y eliminar contenedores, así como a confirmar los cambios de un contenedor en una nueva imagen de Docker. Este tutorial también explica cómo instalar Docker con compatibilidad con GPU, errores comunes y cómo solucionarlos, y las mejores prácticas de seguridad.
Implemente directamente desde GitHub en minutos.
Prerrequisitos
Para seguir este tutorial, necesitarás lo siguiente:
Un servidor Ubuntu configurado siguiendo la guía de configuración inicial del servidor Ubuntu , incluido un usuario sudono root y un firewall.
Una cuenta en Docker Hub si desea crear sus propias imágenes y enviarlas a Docker Hub, como se muestra en los pasos 7 y 8.
Paso 1: Instalación de Docker
El paquete de instalación de Docker disponible en el repositorio oficial de Ubuntu podría no ser la última versión. Para asegurarnos de obtener la última versión, instalaremos Docker desde el repositorio oficial. Para ello, añadiremos una nueva fuente de paquete, añadiremos la clave GPG de Docker para garantizar que las descargas sean válidas y, a continuación, instalaremos el paquete.
Primero, actualice su lista existente de paquetes:
sudo apt update
A continuación, instale algunos paquetes de requisitos previos que permitan aptutilizar paquetes a través de HTTPS:
Al instalar Docker ahora, no solo obtendrá el servicio Docker (daemon), sino también la utilidad de línea de comandos o el cliente Docker. Más adelante en este tutorial, dockerveremos cómo usar el comando.docker
Paso 2: Ejecutar el comando Docker sin sudo (opcional)
De forma predeterminada, el dockercomando solo puede ser ejecutado por el usuario root o por un usuario del grupo Docker , que se crea automáticamente durante la instalación de Docker. Si intenta ejecutar el dockercomando sin prefijarlo con sudoo sin pertenecer al grupo Docker , obtendrá un resultado como este:
Outputdocker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.
Si desea evitar escribir sudocada vez que ejecuta el dockercomando, agregue su nombre de usuario al dockergrupo:
sudo usermod -aG docker ${USER}
Para aplicar la nueva membresía del grupo, cierre la sesión del servidor y vuelva a iniciarla, o escriba lo siguiente:
su - ${USER}
Se le pedirá que ingrese su contraseña de usuario para continuar.
Confirme que su usuario ahora está agregado al grupo Docker escribiendo:
groups
Outputsammy sudo docker
Si necesita agregar un usuario al dockergrupo con el que no ha iniciado sesión, declare ese nombre de usuario explícitamente usando:
sudo usermod -aG docker username
El resto de este artículo asume que está ejecutando el dockercomando como usuario del grupo Docker . Si no lo hace, anteponga “<nombre del usuario>” a los comandos sudo.
Exploremos el dockercomando a continuación.
Paso 3: Uso del comando Docker
Usar dockerconsiste en pasarle una cadena de opciones y comandos seguidos de argumentos. La sintaxis es la siguiente:
docker [option] [command] [arguments]
Para ver todos los subcomandos disponibles, escriba:
docker
A partir de la versión de Docker20.10.14La lista completa de subcomandos disponibles incluye:
Output attach Attach local standard input, output, and error streams to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container's filesystem
events Get real time events from the server
exec Run a command in a running container
export Export a container's filesystem as a tar archive
history Show the history of an image
images List images
import Import the contents from a tarball to create a filesystem image
info Display system-wide information
inspect Return low-level information on Docker objects
kill Kill one or more running containers
load Load an image from a tar archive or STDIN
login Log in to a Docker registry
logout Log out from a Docker registry
logs Fetch the logs of a container
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
ps List containers
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save one or more images to a tar archive (streamed to STDOUT by default)
search Search the Docker Hub for images
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
version Show the Docker version information
wait Block until one or more containers stop, then print their exit codes
Para ver las opciones disponibles para un comando específico, escriba:
docker docker-subcommand --help
Para ver información de todo el sistema sobre Docker, utilice:
docker info
Exploremos algunos de estos comandos. Empezaremos trabajando con imágenes.
Paso 4: Trabajar con imágenes de Docker
Los contenedores Docker se crean a partir de imágenes de Docker. Por defecto, Docker obtiene estas imágenes de Docker Hub , un registro de Docker gestionado por Docker, la empresa responsable del proyecto Docker. Cualquiera puede alojar sus imágenes de Docker en Docker Hub, por lo que la mayoría de las aplicaciones y distribuciones de Linux que necesite tendrán imágenes alojadas allí.
Para comprobar si puede acceder y descargar imágenes desde Docker Hub, escriba:
docker run hello-world
La salida indicará que Docker funciona correctamente:
OutputUnable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:bfea6278a0a267fad2634554f4f0c6f31981eea41c553fdf5a83e95a41d40c38
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
Inicialmente, Docker no pudo encontrar la hello-worldimagen localmente, por lo que la descargó de Docker Hub, el repositorio predeterminado. Una vez descargada, Docker creó un contenedor a partir de ella y la aplicación dentro del contenedor se ejecutó, mostrando el mensaje.
Puedes buscar imágenes disponibles en Docker Hub usando el dockercomando con el searchsubcomando. Por ejemplo, para buscar la imagen de Ubuntu, escribe:
docker search ubuntu
El script rastreará Docker Hub y devolverá una lista de todas las imágenes cuyo nombre coincida con la cadena de búsqueda. En este caso, el resultado será similar a este:
OutputNAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 14048 [OK]
websphere-liberty WebSphere Liberty multi-architecture images … 283 [OK]
ubuntu-upstart DEPRECATED, as is Upstart (find other proces… 112 [OK]
neurodebian NeuroDebian provides neuroscience research s… 88 [OK]
open-liberty Open Liberty multi-architecture images based… 51 [OK]
...
En la columna OFICIAL , OK indica una imagen creada y respaldada por la empresa responsable del proyecto. Una vez identificada la imagen que desea usar, puede descargarla a su computadora con el pullsubcomando.
Ejecute el siguiente comando para descargar la ubuntuimagen oficial a su computadora:
docker pull ubuntu
Verá el siguiente resultado:
OutputUsing default tag: latest
latest: Pulling from library/ubuntu
e0b25ef51634: Pull complete
Digest: sha256:9101220a875cee98b016668342c489ff0674f247f6ca20dfc91b91c0f28581ae
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
Tras descargar una imagen, puede ejecutar un contenedor con ella mediante el runsubcomando. Como vio en el hello-worldejemplo, si no se ha descargado una imagen al dockerejecutar el runsubcomando, el cliente Docker primero la descargará y luego ejecutará un contenedor con ella.
Para ver las imágenes que se han descargado en tu ordenador, escribe:
docker images
El resultado será similar al siguiente:
OutputREPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 1d622ef86b13 3 weeks ago 73.9MB
hello-world latest bf756fb1ae65 4 months ago 13.3kB
Como verá más adelante en este tutorial, las imágenes que utiliza para ejecutar contenedores se pueden modificar y usar para generar nuevas imágenes, que luego pueden cargarse ( el término técnico es “push “) en Docker Hub u otros registros de Docker.
Veamos cómo ejecutar contenedores con más detalle.
Paso 5: Ejecución de un contenedor Docker
El hello-worldcontenedor que ejecutaste en el paso anterior es un ejemplo de un contenedor que se ejecuta y finaliza tras emitir un mensaje de prueba. Los contenedores pueden ser mucho más útiles y pueden ser interactivos. Al fin y al cabo, son similares a las máquinas virtuales, solo que consumen menos recursos.
A modo de ejemplo, ejecutemos un contenedor con la imagen más reciente de Ubuntu. La combinación de las opciones -i y -t proporciona acceso interactivo al contenedor a través del shell:
docker run -it ubuntu
El símbolo del sistema debería cambiar para reflejar el hecho de que ahora está trabajando dentro del contenedor y debería adoptar este formato:
Outputroot@d9b100f2f636:/#
Anote el ID del contenedor en el símbolo del sistema. En este ejemplo, es d9b100f2f636. Necesitará ese ID más adelante para identificar el contenedor cuando desee eliminarlo.
Ahora puedes ejecutar cualquier comando dentro del contenedor. Por ejemplo, actualicemos la base de datos de paquetes dentro del contenedor. No necesitas prefijar ningún comando con sudo, ya que estás operando dentro del contenedor como usuario root :
Esto instala Node.js en el contenedor desde el repositorio oficial de Ubuntu. Al finalizar la instalación, verifique que Node.js esté instalado:
node -v
Verás el número de versión mostrado en tu terminal:
Outputv12.22.9
Cualquier cambio que realice dentro del contenedor sólo se aplicará a ese contenedor.
Para salir del contenedor, escriba exiten el aviso.
A continuación veamos cómo administrar los contenedores en nuestro sistema.
Paso 6: Administrar contenedores Docker
Después de usar Docker durante un tiempo, tendrás muchos contenedores activos (en ejecución) e inactivos en tu equipo. Para ver los activos , usa:
docker ps
Verá un resultado similar al siguiente:
OutputCONTAINER ID IMAGE COMMAND CREATED
En este tutorial, iniciaste dos contenedores: uno desde la hello-worldimagen y otro desde la ubuntuimagen. Ambos contenedores ya no se ejecutan, pero aún existen en tu sistema.
Para ver todos los contenedores (activos e inactivos), ejecute docker psel -ainterruptor:
docker ps -a
Verá un resultado similar a este:
OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1c08a7a0d0e4 ubuntu "bash" About a minute ago Exited (0) 7 seconds ago dazzling_taussig
587000e49d53 hello-world "/hello" 5 minutes ago Exited (0) 5 minutes ago adoring_kowalevski
Para ver el último contenedor que ha creado, pásele el -linterruptor:
docker ps -l
OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1c08a7a0d0e4 ubuntu "bash" 3 minutes ago Exited (0) 2 minutes ago dazzling_taussig
Para iniciar un contenedor detenido, utilice docker start, seguido del ID o el nombre del contenedor. Iniciemos el contenedor basado en Ubuntu con el ID de 1c08a7a0d0e4:
docker start 1c08a7a0d0e4
El contenedor se iniciará y podrás usar docker pspara ver su estado:
OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1c08a7a0d0e4 ubuntu "bash" 6 minutes ago Up 8 seconds dazzling_taussig
Para detener un contenedor en ejecución, use docker stop, seguido del ID o nombre del contenedor. En esta ocasión, usaremos el nombre que Docker le asignó al contenedor, que es dazzling_taussig:
docker stop dazzling_taussig
Una vez que haya decidido que ya no necesita un contenedor, elimínelo con el docker rmcomando, usando nuevamente el ID o el nombre del contenedor. Use el docker ps -acomando para encontrar el ID o el nombre del contenedor asociado a la hello-worldimagen y elimínelo.
docker rm adoring_kowalevski
Puedes crear un nuevo contenedor y asignarle un nombre con el --namemodificador. También puedes usarlo --rmpara crear un contenedor que se elimine automáticamente al detenerse. Consulta el docker run helpcomando para obtener más información sobre estas y otras opciones.
Los contenedores se pueden convertir en imágenes que puedes usar para crear nuevos contenedores. Veamos cómo funciona.
Paso 7: Confirmar cambios en un contenedor a una imagen de Docker
Al iniciar una imagen de Docker, puedes crear, modificar y eliminar archivos igual que con una máquina virtual. Los cambios que realices solo se aplicarán a ese contenedor. Puedes iniciarlo y detenerlo, pero una vez que lo destruyas con el docker rmcomando, los cambios se perderán definitivamente.
Esta sección le muestra cómo guardar el estado de un contenedor como una nueva imagen de Docker.
Tras instalar Node.js en el contenedor de Ubuntu, tendrás un contenedor que se ejecuta a partir de una imagen, pero este contenedor es diferente de la imagen que usaste para crearlo. Sin embargo, podrías reutilizar este contenedor de Node.js como base para nuevas imágenes más adelante.
Luego, confirme los cambios en una nueva instancia de imagen de Docker usando el siguiente comando.
docker commit -m "What you did to the image" -a "Author Name" container_id repository/new_image_name
El parámetro -m se utiliza para el mensaje de confirmación que te ayuda a ti y a otros a saber qué cambios realizaste, mientras que -a se usa para especificar el autor. container_idEs el que anotaste anteriormente en el tutorial al iniciar la sesión interactiva de Docker. A menos que hayas creado repositorios adicionales en Docker Hub, repositorysuele ser tu nombre de usuario de Docker Hub.
Por ejemplo, para el usuario sammy , con el ID de contenedor de d9b100f2f636, el comando sería:
docker commit -m "added Node.js" -a "sammy" d9b100f2f636 sammy/ubuntu-nodejs
Al confirmar una imagen, esta se guarda localmente en tu ordenador. Más adelante en este tutorial, aprenderás a subir una imagen a un registro de Docker como Docker Hub para que otros usuarios puedan acceder a ella.
Al enumerar nuevamente las imágenes de Docker, se mostrará la nueva imagen, así como la antigua de la que se derivó:
docker images
Verás un resultado como este:
OutputREPOSITORY TAG IMAGE ID CREATED SIZE
sammy/ubuntu-nodejs latest 7c1f35226ca6 7 seconds ago 179MB
...
En este ejemplo, ubuntu-nodejsse muestra la nueva imagen, derivada de la ubuntuimagen existente de Docker Hub. La diferencia de tamaño refleja los cambios realizados. En este ejemplo, el cambio fue la instalación de NodeJS. Así, la próxima vez que necesite ejecutar un contenedor en Ubuntu con NodeJS preinstalado, podrá usar la nueva imagen.
También puedes crear imágenes desde un archivo Dockerfile, lo que te permite automatizar la instalación de software en una nueva imagen. Sin embargo, esto queda fuera del alcance de este tutorial.
Ahora compartamos la nueva imagen con otros para que puedan crear contenedores a partir de ella.
Paso 8: Enviar imágenes de Docker a un repositorio de Docker
El siguiente paso lógico tras crear una imagen a partir de una existente es compartirla con algunos amigos, con todo el mundo en Docker Hub o en otro registro de Docker al que tengas acceso. Para subir una imagen a Docker Hub o a cualquier otro registro de Docker, debes tener una cuenta allí.
Para enviar su imagen, primero inicie sesión en Docker Hub.
docker login -u docker-registry-username
Se te pedirá que te autentiques con tu contraseña de Docker Hub. Si la especificaste correctamente, la autenticación debería ser correcta.
Nota: Si el nombre de usuario del registro de Docker es diferente del nombre de usuario local que usó para crear la imagen, deberá etiquetarla con el nombre de usuario del registro. Para el ejemplo del paso anterior, escriba:
docker tag sammy/ubuntu-nodejs docker-registry-username/ubuntu-nodejs
Inicia sesión con docker loginy repite el intento de envío. Luego, verifica que exista en la página del repositorio de Docker Hub.
Ahora puedes usarla para extraer la imagen a una nueva máquina y usarla para ejecutar un nuevo contenedor.docker pull sammy/ubuntu-nodejs
Instalación de Docker con soporte para GPU
Para instalar Docker con compatibilidad con GPU, deberá seguir un proceso ligeramente diferente al de la instalación estándar. Esto se debe a que la compatibilidad con GPU requiere controladores y configuraciones adicionales para que Docker pueda utilizar los recursos de la GPU. Estos son los pasos para instalar Docker con compatibilidad con GPU:
Asegúrese de que su sistema tenga una GPU NVIDIA compatible.
Instala el controlador NVIDIA para tu GPU. Puedes encontrar las instrucciones de instalación en el sitio web de NVIDIA .
Instale el nvidia-docker2paquete, que proporciona las herramientas necesarias para que Docker interactúe con la GPU NVIDIA.
Si sigue estos pasos y utiliza los recursos proporcionados, podrá instalar y utilizar con éxito Docker con soporte de GPU en su sistema.
Configuración de las mejores prácticas de seguridad de Docker
La seguridad de Docker Engine es crucial para garantizar que sus contenedores y el sistema host estén protegidos contra posibles vulnerabilidades. A continuación, se indican algunas prácticas recomendadas:
Utilice el principio de mínimo privilegio : asegúrese de que sus contenedores se ejecuten con los mínimos privilegios necesarios para realizar sus tareas.
Utilice un usuario que no sea root : ejecute sus contenedores como un usuario que no sea root para limitar la superficie de ataque en caso de una violación.
Mantenga su versión de Docker actualizada : actualice periódicamente su versión de Docker para asegurarse de tener los últimos parches de seguridad.
Usar Docker Content Trust : habilite Docker Content Trust para garantizar la integridad de las imágenes que extrae de Docker Hub.
Limitar la exposición de la red : exponga únicamente los puertos necesarios a la red para minimizar la superficie de ataque.
Uso de Docker Compose
Docker Compose es una herramienta para definir y ejecutar aplicaciones Docker multicontenedor. Permite definir los servicios que componen la aplicación y cómo interactúan entre sí. Estas son algunas ventajas de usar Docker Compose:
Implementación simplificada de aplicaciones : Docker Compose simplifica el proceso de implementación de aplicaciones multicontenedor.
Gestión sencilla de servicios : Docker Compose le permite iniciar, detener y escalar sus servicios fácilmente.
Control de versiones : los archivos de Docker Compose pueden controlarse por versiones, lo que facilita el seguimiento de los cambios en la configuración de su aplicación.
Eliminación de paquetes de Docker
Eliminar paquetes de Docker es esencial para mantener el sistema y garantizar que tenga instaladas las últimas versiones de Docker. A continuación, se indican algunos pasos a seguir:
Enumerar todos los paquetes Docker instalados : utilice el comando dpkg -l | grep dockerpara enumerar todos los paquetes Docker instalados.
Eliminar el paquete Docker : utilice el comando sudo apt remove docker-cepara eliminar el paquete Docker.
Eliminar dependencias de Docker : use el comando sudo apt autoremovepara eliminar cualquier dependencia que ya no sea necesaria.
Actualice su lista de paquetes : use el comando sudo apt updatepara actualizar su lista de paquetes después de eliminar los paquetes de Docker.
Las imágenes, contenedores, volúmenes o archivos de configuración personalizados de su host no se eliminan automáticamente. Para eliminar todas las imágenes, contenedores y volúmenes:
Si el demonio de Docker no se inicia, puede deberse a varias razones, como problemas de configuración, conflictos con otros servicios o limitaciones de recursos del sistema. Para solucionar este problema, puede que vea mensajes de error como:
OutputFailed to start Docker Application Container Engine.
o
Outputdocker.service: Main process exited, code=exited, status=1/FAILURE
Para resolver este problema:
Compruebe el estado del servicio Docker:sudo systemctl status docker
Revise los registros de Docker para detectar errores:sudo journalctl -u docker
Asegúrese de que el servicio Docker esté habilitado para iniciarse en el arranque:sudo systemctl enable docker
Reinicie el servicio Docker:sudo systemctl restart docker
Errores de permisos al ejecutar comandos de Docker
Los errores de permisos ocurren cuando el usuario que ejecuta comandos de Docker no tiene suficientes privilegios. Para solucionar este problema, puede observar mensajes de error como:
Outputdocker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.
Para resolver este problema:
Asegúrese de que el usuario sea parte del dockergrupo:sudo usermod -aG docker ${USER}
Cierre sesión y vuelva a iniciarla para aplicar los cambios de membresía del grupo
Alternativamente, utilice sudoantes de ejecutar los comandos de Docker:sudo docker <command>
Si sigue estos pasos, debería poder resolver errores comunes relacionados con el demonio Docker que no se inicia y errores de permisos al ejecutar comandos Docker.
Instalar los paquetes necesarios:sudo apt install apt-transport-https ca-certificates curl software-properties-common
Agregue la clave GPG de Docker:curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Agregue el repositorio de Docker:echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Actualice su lista de paquetes nuevamente:sudo apt update
Instalar Docker:sudo apt install docker-ce
¿Cómo verifico que Docker esté instalado en Ubuntu?
Para verificar que Docker esté instalado en Ubuntu, ejecute el siguiente comando:sudo systemctl status docker
Este comando le mostrará el estado del servicio Docker. Si Docker está instalado y en ejecución, debería ver un resultado que indique que el servicio está activo y en ejecución. A continuación, se muestra un ejemplo de lo que podría ver:
Detener el servicio Docker:sudo systemctl stop docker
Eliminar paquetes de Docker:sudo apt purge docker-ce
Eliminar dependencias de Docker:sudo apt autoremove
Eliminar el repositorio de Docker:sudo rm /etc/apt/sources.list.d/docker.list
Conclusión
En este tutorial, instalaste Docker, trabajaste con imágenes y contenedores, y subiste una imagen modificada a Docker Hub. Ahora que conoces los conceptos básicos, explora. Para configuraciones de Docker más avanzadas, considera los siguientes tutoriales:
Una forma de evitar errores de memoria insuficiente en las aplicaciones es añadir espacio de intercambio al servidor. En esta guía, explicaremos cómo añadir un archivo de intercambio a un servidor Ubuntu 22.04.
¿Qué es Swap?
El espacio de intercambio (swap) es una porción del almacenamiento del disco duro que el sistema operativo reserva para almacenar temporalmente los datos que ya no puede almacenar en la RAM. Esto permite aumentar la cantidad de información que el servidor puede almacenar en su memoria de trabajo, con algunas salvedades. El espacio de intercambio del disco duro se utiliza principalmente cuando ya no hay suficiente espacio en la RAM para almacenar los datos de las aplicaciones en uso.
La información escrita en el disco será significativamente más lenta que la almacenada en la RAM, pero el sistema operativo preferirá mantener los datos de las aplicaciones en ejecución en memoria y usar la memoria de intercambio (swap) para los datos más antiguos. En general, tener espacio de intercambio como respaldo cuando la RAM del sistema se agote puede ser una buena protección contra excepciones de falta de memoria en sistemas con almacenamiento no SSD disponible.
Paso 1: Verificación del sistema para obtener información de intercambio
Antes de comenzar, podemos comprobar si el sistema ya tiene espacio de intercambio disponible. Es posible tener varios archivos o particiones de intercambio, pero generalmente uno debería ser suficiente.
Podemos ver si el sistema tiene algún swap configurado escribiendo:
sudo swapon --show
Si no obtiene ningún resultado, significa que su sistema no tiene espacio de intercambio disponible actualmente.
Puedes verificar que no haya ningún intercambio activo usando la freeutilidad:
free -h
Output total used free shared buff/cache available
Mem: 981Mi 122Mi 647Mi 0.0Ki 211Mi 714Mi
Swap: 0B 0B 0B
Como puede ver en la fila Swap de la salida, no hay ningún swap activo en el sistema.
Paso 2: Verificar el espacio disponible en la partición del disco duro
Antes de crear nuestro archivo de intercambio, comprobaremos el uso actual del disco para asegurarnos de que tengamos suficiente espacio. Para ello, introduzca:
En este caso, el dispositivo /en la Mounted oncolumna es nuestro disco. Tenemos mucho espacio disponible (solo se utilizan 1,4 GB). Tu uso probablemente será diferente.
Aunque existen diversas opiniones sobre el tamaño adecuado del espacio de intercambio, en realidad depende de tus preferencias personales y de los requisitos de tu aplicación. Generalmente, un buen punto de partida es una cantidad igual o el doble de la RAM de tu sistema. Otra regla general es que cualquier cantidad superior a 4 GB de espacio de intercambio probablemente sea innecesaria si solo la usas como RAM de reserva.
Paso 3: Creación de un archivo de intercambio
Ahora que conocemos el espacio disponible en el disco duro, podemos crear un archivo de intercambio en nuestro sistema de archivos. Asignaremos un archivo del tamaño que queramos llamar en nuestro directorio swapfileraíz ( )./
La mejor manera de crear un archivo de intercambio es con el fallocateprograma. Este comando crea instantáneamente un archivo del tamaño especificado.
Dado que el servidor de nuestro ejemplo tiene 1 GB de RAM, crearemos un archivo de 1 GB en esta guía. Ajústelo según las necesidades de su servidor:
sudo fallocate -l 1G /swapfile
Podemos verificar que se reservó la cantidad correcta de espacio escribiendo:
Nuestro archivo ha sido creado con la cantidad correcta de espacio reservado.
Paso 4 – Habilitación del archivo de intercambio
Ahora que tenemos disponible un archivo del tamaño correcto, necesitamos convertirlo en espacio de intercambio.
Primero, necesitamos restringir los permisos del archivo para que solo los usuarios con privilegios de root puedan leer su contenido. Esto impide que los usuarios normales accedan al archivo, lo que tendría importantes consecuencias para la seguridad.
Haga que el archivo sólo sea accesible para root escribiendo:
Como puede ver, solo el usuario root tiene habilitadas las funciones de lectura y escritura.
Ahora podemos marcar el archivo como espacio de intercambio escribiendo:
sudo mkswap /swapfile
OutputSetting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=6e965805-2ab9-450f-aed6-577e74089dbf
Luego de marcar el archivo, podemos habilitar el archivo de intercambio, permitiendo que nuestro sistema comience a usarlo:
sudo swapon /swapfile
Verifique que el intercambio esté disponible escribiendo:
sudo swapon --show
OutputNAME TYPE SIZE USED PRIO
/swapfile file 1024M 0B -2
Podemos verificar freenuevamente la salida de la utilidad para corroborar nuestros hallazgos:
free -h
Output total used free shared buff/cache available
Mem: 981Mi 123Mi 644Mi 0.0Ki 213Mi 714Mi
Swap: 1.0Gi 0B 1.0Gi
Nuestro intercambio se ha configurado correctamente y nuestro sistema operativo comenzará a usarlo según sea necesario.
Paso 5 – Hacer que el archivo de intercambio sea permanente
Nuestros cambios recientes han habilitado el archivo de intercambio para la sesión actual. Sin embargo, si reiniciamos, el servidor no conservará la configuración de intercambio automáticamente. Podemos cambiar esto añadiendo el archivo de intercambio a nuestro /etc/fstabarchivo.
Haga una copia de seguridad del /etc/fstabarchivo en caso de que algo salga mal:
sudo cp /etc/fstab /etc/fstab.bak
Agregue la información del archivo de intercambio al final de su /etc/fstabarchivo escribiendo:
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
A continuación revisaremos algunas configuraciones que podemos actualizar para ajustar nuestro espacio de intercambio.
Paso 6 – Ajuste de la configuración de intercambio
Hay algunas opciones que puedes configurar y que tendrán un impacto en el rendimiento de tu sistema al trabajar con intercambio.
Ajuste de la propiedad de swappiness
Este swappinessparámetro configura la frecuencia con la que el sistema intercambia datos de la RAM al espacio de intercambio. Este valor, entre 0 y 100, representa un porcentaje.
Con valores cercanos a cero, el kernel no intercambiará datos con el disco a menos que sea absolutamente necesario. Recuerde que las interacciones con el archivo de intercambio son costosas, ya que tardan mucho más que las interacciones con la RAM y pueden causar una reducción significativa del rendimiento. Indicarle al sistema que no dependa demasiado del archivo de intercambio generalmente lo hará más rápido.
Los valores cercanos a 100 intentarán almacenar más datos en la memoria de intercambio para liberar más espacio de RAM. Dependiendo del perfil de memoria de sus aplicaciones o del uso que le dé al servidor, esto podría ser mejor en algunos casos.
Podemos ver el valor de swappiness actual escribiendo:
cat /proc/sys/vm/swappiness
Output60
Para una computadora de escritorio, un valor de swappiness de 60 no es un mal valor. Para un servidor, conviene acercarlo a 0.
Podemos establecer el swappiness a un valor diferente usando el sysctlcomando.
Por ejemplo, para establecer el swappiness a 10, podríamos escribir:
sudo sysctl vm.swappiness=10
Outputvm.swappiness = 10
Esta configuración se mantendrá hasta el próximo reinicio. Podemos configurar este valor automáticamente al reiniciar añadiendo la siguiente línea a nuestro /etc/sysctl.confarchivo:
sudo nano /etc/sysctl.conf
En la parte inferior puedes agregar: /etc/sysctl.conf
vm.swappiness=10
Guarde y cierre el archivo cuando haya terminado.
Ajuste de la configuración de presión de caché
Otro valor relacionado que podrías querer modificar es el vfs_cache_pressure. Esta configuración configura con qué frecuencia el sistema almacenará en caché la información de inodos y entradas de entrada sobre otros datos.
Básicamente, se trata de datos de acceso al sistema de archivos. Su consulta suele ser muy costosa y se solicita con mucha frecuencia, por lo que es excelente almacenarlos en caché. Puede ver el valor actual consultando procde nuevo el sistema de archivos:
cat /proc/sys/vm/vfs_cache_pressure
Output100
Con la configuración actual, nuestro sistema elimina la información de inodos de la caché demasiado rápido. Podemos configurarlo con un valor más conservador, como 50, escribiendo:
sudo sysctl vm.vfs_cache_pressure=50
Outputvm.vfs_cache_pressure = 50
Nuevamente, esto solo es válido para nuestra sesión actual. Podemos cambiarlo añadiéndolo a nuestro archivo de configuración, como hicimos con la configuración de intercambio:
sudo nano /etc/sysctl.conf
En la parte inferior, agregue la línea que especifica su nuevo valor: /etc/sysctl.conf
vm.vfs_cache_pressure=50
Guarde y cierre el archivo cuando haya terminado.
Conclusión
Seguir los pasos de esta guía le dará un respiro en casos que, de otro modo, provocarían excepciones de memoria insuficiente. El espacio de intercambio puede ser increíblemente útil para evitar algunos de estos problemas comunes.
Si se encuentra con errores OOM (sin memoria) o descubre que su sistema no puede utilizar las aplicaciones que necesita, la mejor solución es optimizar las configuraciones de sus aplicaciones o actualizar su servidor.
Ubuntu Server está diseñado principalmente para funcionar sin interfaz gráfica, lo que lo hace ligero y optimizado para su uso en servidores. Sin embargo, en ciertas situaciones, una GUI puede simplificar la administración del sistema, especialmente para usuarios que no están familiarizados con la línea de comandos. En este tutorial, te guiaré en el proceso de instalación de una GUI en Ubuntu Server .
Prerrequisitos
Antes de continuar con la instalación, asegúrese de tener lo siguiente:
El último servidor Ubuntu instalado .
Una cuenta de usuario con sudo privilegios .
Una conexión a Internet activa.
Instalación de una interfaz gráfica de usuario (GUI) en el servidor Ubuntu
Paso 1: Actualice su sistema
Antes de instalar cualquier software, es fundamental asegurarse de que su sistema esté actualizado. Ejecute los siguientes comandos para actualizar las listas de paquetes y actualizar los paquetes obsoletos:
sudo apt update
sudo apt upgrade -y
Esto garantiza que tenga instalados los últimos parches de seguridad y actualizaciones del sistema.
Paso 2: Elige un entorno de escritorio
Ubuntu ofrece diversos entornos de escritorio que se adaptan a diferentes necesidades y preferencias de rendimiento. Estos son algunos de los más populares:
GNOME: el entorno de escritorio predeterminado para Ubuntu Desktop.
Xfce (Xubuntu): ligero y eficiente en el uso de recursos.
LXDE (Lubuntu): Extremadamente liviano, ideal para hardware de bajas especificaciones.
KDE (Kubuntu): un entorno rico en características que podría utilizar más recursos.
En este tutorial, nos centraremos en la instalación de GNOME y Xfce, pero puedes elegir cualquiera de los otros reemplazando el nombre del paquete en los siguientes pasos.
Paso 3: Instalar el entorno de escritorio
Instalación de GNOME
Si prefiere la experiencia completa del escritorio Ubuntu, puede instalar el entorno de escritorio GNOME. Ejecute el siguiente comando:
sudo apt install ubuntu-desktop -y
Esto instalará el escritorio GNOME completo, junto con todas sus aplicaciones asociadas, que pueden consumir muchos recursos.
Instalación de Xfce
Si necesitas una opción más ligera, Xfce es una excelente opción. Para instalarlo, ejecuta:
sudo apt install xubuntu-core -y
Esto instala el entorno de escritorio Xfce sin aplicaciones innecesarias, lo que lo convierte en una opción más minimalista y eficiente para los servidores.
Instalación de otros escritorios
Puede instalar otros entornos de escritorio como LXDE o KDE ejecutando:
# For LXDE
sudo apt install lubuntu-core -y
# For KDE Plasma
sudo apt install kubuntu-desktop -y
Paso 4: Instalar un administrador de pantalla
Un administrador de pantalla se encarga de iniciar el entorno de escritorio. Ubuntu usa GDM (Administrador de Pantalla de GNOME) por defecto, pero puedes instalar otros como LightDM para una opción más ligera, especialmente si usas Xfce o LXDE.
Para instalar LightDM, ejecute:
sudo apt install lightdm -y
Durante la instalación, se le pedirá que seleccione un administrador de pantalla predeterminado. Si no está seguro, LightDM es una buena opción, especialmente para entornos ligeros como Xfce.
Paso 5: Habilite la GUI para que se inicie automáticamente
Una vez completada la instalación, deberá configurar su sistema para que inicie la GUI automáticamente.
Primero, verifique el objetivo predeterminado del sistema, que determina qué servicios se inician cuando se inicia el sistema:
systemctl get-default
Por defecto, debería devolver multi-user.target, que corresponde al modo no gráfico. Para cambiar al modo gráfico, ejecute:
sudo systemctl set-default graphical.target
Ahora, su servidor se iniciará en la interfaz gráfica automáticamente en el próximo inicio.
Paso 6: Reiniciar el sistema
Una vez que haya instalado el entorno de escritorio y lo haya configurado para que se inicie automáticamente, reinicie su sistema para aplicar los cambios:
sudo reboot
Después de reiniciar, debería aparecer la pantalla de inicio de sesión del entorno de escritorio que instaló (GNOME, Xfce, etc.).
Paso 7: Conectarse a la GUI (opcional)
Si administra su servidor de forma remota, puede usar una conexión de escritorio remoto para acceder a la interfaz gráfica de usuario. Estas son algunas opciones populares:
Consola en la nube : Tu proveedor de nube probablemente ya cuente con una función de consola que te permite conectarte a tu servidor. Si usas servidores Cherry , selecciona tu máquina virtual en el portal del cliente y haz clic en Consolepara acceder a la consola de tu servidor.
Luego puede iniciar sesión a través de la GUI y acceder a su escritorio:
VNC : Una opción popular para conexiones de escritorio remoto. Para instalar un servidor VNC, ejecute:
sudo apt install tightvncserver -y
RDP (Protocolo de Escritorio Remoto) : RDP es un protocolo de Microsoft para conexiones remotas, compatible con Ubuntu. Para instalar un servidor RDP, ejecute:
sudo apt install xrdp -y
Después de instalar su servidor de escritorio remoto preferido, configúrelo según sus necesidades y conéctese usando su máquina local.
Es posible que necesite configurar su firewall para permitir el acceso a su servidor VNC o RDP.
Paso 8: Administrar la GUI
Si alguna vez desea volver a un entorno no gráfico, puede cambiar el objetivo predeterminado a multi-user.target:
sudo systemctl set-default multi-user.target
Esto garantizará que su servidor arranque en la interfaz
de línea de comandos (CLI) de manera predeterminada.
En este tutorial, explicamos cómo instalar una interfaz gráfica de usuario (GUI) en Ubuntu Server. Esto simplifica las tareas para quienes prefieren una interfaz gráfica. Ya sea que elija GNOME, con sus numerosas funciones, o Xfce, un sistema ligero, ahora sabe cómo instalar, configurar y administrar una GUI en su servidor. Tenga en cuenta que usar una GUI consume más recursos del sistema y puede afectar el rendimiento, especialmente en servidores de producción.
Drupal es un popular sistema de gestión de contenido (CMS) utilizado para gestionar algunos de los blogs y sitios web más grandes de internet. Gracias a la estabilidad de su base, la adaptabilidad de la plataforma y su activa comunidad, Drupal sigue siendo una opción popular tras más de una década en el mercado.
En esta guía, explicaremos cómo instalar Drupal en un servidor Ubuntu 14.04. Usaremos Apache para nuestro sitio, ya que es la configuración recomendada por el equipo de Drupal.
Prerrequisitos
Antes de comenzar con esta guía, necesitará un servidor Ubuntu 14.04 con una configuración básica completa. Siga nuestra guía de configuración inicial del servidor Ubuntu 14.04 para configurar un usuario no root con privilegios de sudo.
También necesitará tener Apache, PHP y MySQL configurados en su servidor. Puede aprender a configurarlos siguiendo nuestra guía sobre cómo instalar LAMP en Ubuntu 14.04 .
Una vez que haya cumplido con los requisitos anteriores, continúe con esta guía.
Antes de obtener los archivos de Drupal e instalarlos en nuestro directorio web, debemos preparar nuestro sistema. Si bien Apache, PHP y MySQL ya están instalados, necesitamos realizar algunos cambios adicionales y ajustes en cada uno para nuestra instalación.
Configurar un usuario y una base de datos MySQL para Drupal
Lo primero que haremos es configurar un usuario y una base de datos MySQL para nuestra instalación de Drupal. Es importante configurar un usuario y una base de datos dedicados por razones de seguridad.
Para comenzar, inicie sesión en MySQL:
mysql -u root -p
Se le solicitará la contraseña del usuario root de MySQL que configuró durante la instalación de ese software.
Una vez autenticado, accederá a un mensaje de MySQL. Primero, cree una base de datos para su instalación de Drupal. drupalPara simplificar, la llamaremos:
CREATE DATABASE drupal;
A continuación, debe crear un usuario que Drupal pueda usar para conectarse a la base de datos. En esta guía, lo llamaremos usuario drupaluser. Seleccione una contraseña segura para reemplazar la del bloque a continuación:
CREATE USER drupaluser@localhost IDENTIFIED BY 'password';
Ahora tenemos una base de datos y un usuario, pero este aún no tiene permiso para realizar ninguna acción en la base de datos. Podemos solucionarlo otorgándole permisos. Drupal necesita diversos permisos para funcionar correctamente. A continuación, se muestra una buena selección que permitirá que el software funcione sin exponer nuestra base de datos innecesariamente:
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER,CREATE TEMPORARY TABLES,LOCK TABLES ON drupal.* TO drupaluser@localhost;
Su usuario ya tiene permiso para administrar la base de datos que creamos. Para implementar estos cambios ahora mismo, necesitamos vaciar la información de privilegios al disco:
FLUSH PRIVILEGES;
Ahora, podemos salir de nuestra sesión interactiva MySQL:
exit
Serás redirigido nuevamente a tu bashsesión.
Instalar módulos PHP y ajustar la configuración
A continuación, instalaremos algunos módulos PHP necesarios para la aplicación Drupal. Por suerte, se encuentran en los repositorios predeterminados de Ubuntu.
Actualice su caché de paquetes local e instálelos escribiendo:
También realizaremos algunos pequeños ajustes en nuestro archivo de configuración de PHP. Estos son recomendados por los desarrolladores de Drupal. Abra el archivo de configuración de Apache PHP con privilegios de sudo en su editor de texto:
sudo nano /etc/php5/apache2/php.ini
Busque la expose_phpdirectiva y la allow_url_fopendirectiva y configúrelas ambas en “Desactivado”:
. . .
expose_php = Off
. . .
allow_url_fopen = Off
. . .
Guarde y cierre el archivo cuando haya terminado.
Habilitar la funcionalidad de reescritura y archivos .htaccess en Apache
A continuación, debemos analizar Apache. Primero, queremos habilitar la función de reescritura. Esto permitirá que nuestro sitio Drupal modifique las URL a cadenas de texto legibles.
Los mod_rewritemódulos de Apache ya están instalados por defecto. Sin embargo, no están habilitados. Podemos activarlos escribiendo:
sudo a2enmod rewrite
Esto habilitará el módulo la próxima vez que se reinicie Apache. Antes de reiniciar Apache, debemos ajustar la configuración de nuestro host virtual para permitir el uso de un .htaccessarchivo. Este archivo contendrá las reglas de reescritura y se incluye por defecto en la instalación de Drupal.
Dentro del bloque “VirtualHost”, agregue un bloque de directorio que apunte a la raíz de nuestra web. Dentro de este bloque, establezca la AllowOverridedirectiva en “All”. También puede agregar una ServerNamedirectiva que apunte a su nombre de dominio y modificarla ServerAdminpara que refleje una dirección de correo electrónico válida:
Ahora solo necesitamos reiniciar el servidor web para implementar nuestros cambios en Apache y PHP:
sudo service apache2 restart
Instalar los archivos de Drupal
Ahora que nuestro sistema está listo, podemos instalar Drupal en nuestra raíz web.
De hecho, primero descomprimiremos los archivos en nuestro directorio personal y luego los copiaremos a la ubicación correspondiente. Esto nos dará acceso inmediato a los archivos originales en caso de que algo salga mal o se eliminen accidentalmente posteriormente.
Vaya a la página de descarga de Drupal y consulte la última versión en la sección “Versiones recomendadas”. Haga clic derecho en el tar.gzenlace de la versión que le interese y seleccione “Copiar dirección del enlace” o cualquier opción similar que ofrezca su navegador.
De vuelta en su servidor, cambie a su directorio de inicio y use wgetel enlace que copió para descargar el archivo del proyecto:
cd ~
wget http://ftp.drupal.org/files/projects/drupal-7.32.tar.gz
Es probable que el enlace tenga un número de versión diferente al final. Una vez descargado el archivo, extraiga el directorio de la aplicación escribiendo:
tar xzvf drupal*
Ahora, acceda a la estructura de directorios recién extraída y use la rsyncutilidad para copiar de forma segura todos los archivos al directorio raíz web de su servidor. En este comando, usamos el punto para especificar el directorio actual. Esto es necesario para copiar algunos archivos ocultos que necesitamos:
cd drupal*
sudo rsync -avz . /var/www/html
Ahora tienes la versión original de los archivos en un directorio dentro de tu carpeta de inicio por si necesitas consultarlos. Nos trasladaremos al directorio raíz web para personalizar nuestra instalación:
cd /var/www/html
Ajuste de los archivos de Drupal para mayor seguridad y facilidad de instalación
El script de instalación web requiere que realicemos algunos cambios en nuestro directorio de Drupal para completar el proceso correctamente. Debemos solucionar esto con antelación para no tener que alternar entre el navegador web y la línea de comandos.
Primero, necesitamos crear un nuevo directorio bajo el subárbol sites/defaultllamado files:
mkdir /var/www/html/sites/default/files
A continuación, debemos copiar el archivo de configuración predeterminada al nombre de archivo que Drupal utiliza para la configuración activa:
Este archivo de configuración activo requiere temporalmente permisos adicionales durante la instalación. Necesitamos otorgar permisos de escritura al propietario del grupo por el momento (próximamente asignaremos el propietario del grupo al usuario web). Lo eliminaremos una vez que la instalación se complete correctamente:
A continuación, necesitamos asignar la propiedad de grupo de nuestros archivos al usuario web, que en Ubuntu es www-data. Queremos otorgarle a toda la instalación de Drupal estas propiedades de propiedad:
sudo chown -R :www-data /var/www/html/*
Su servidor ahora está configurado adecuadamente para ejecutar el script de instalación basado en web.
Complete el procedimiento de instalación basado en la web
El resto de la instalación se realizará en su navegador web. Abra el navegador y navegue hasta el nombre de dominio o la dirección IP de su servidor:
http://server_domain_or_IP
Verá la página inicial del procedimiento de instalación de Drupal:
A menos que tenga alguna razón para no hacerlo, seleccione la instalación “Estándar” y haga clic en “Guardar y continuar”. Haga clic en los siguientes botones de continuar hasta llegar a la página de configuración de la base de datos. Complete los datos que utilizó al configurar la base de datos y el usuario.
Para esta guía, utilizamos una base de datos llamada drupal, un usuario de base de datos llamado drupalusery una contraseña de password. Debería haber seleccionado una contraseña diferente durante la creación del usuario. Haga clic en “Guardar y continuar” de nuevo cuando haya completado los datos de su base de datos:
Nota : Al hacer clic en “Guardar y continuar”, es posible que se le redirija a la misma página de configuración de la base de datos. Si esto ocurre, simplemente actualice la página. La base de datos se configurará y el perfil se instalará.
Verá un cuadro de información en la parte superior de la página que le indica que ahora puede cambiar los permisos del archivo de configuración. Lo haremos en breve. Por ahora, necesita configurar información básica sobre su sitio. Complete los campos con los valores adecuados para su sitio:
Haga clic en el botón “Guardar y continuar” por última vez para completar la instalación. Ahora puede visitar su sitio web accediendo a su nombre de dominio:
Ha completado exitosamente la instalación de Drupal.
Sin embargo, aún necesitamos revertir los permisos de nuestro archivo de configuración para que usuarios no autorizados no puedan realizar cambios. En su servidor, restrinja el acceso de escritura al archivo escribiendo:
Esto debería bloquear futuros cambios en el archivo de configuración.
Solución de problemas
Si la etapa final de la instalación de Drupal no se completa, revise sus registros de errores:
sudo tail /var/log/apache2/error.log
Si ves un error como este:
[Wed Nov 12 13:40:10.566144 2014] [:error] [pid 7178] [client 108.29.37.206:55238] PHP Fatal error: Call to undefined function field_attach_load() in /var/www/html/includes/entity.inc on line 316, referer: http://12.34.56.78/install.php?profile=standard&locale=en
sh: 1: /usr/sbin/sendmail: not found
Esto indica que la instalación no se completó correctamente. Existen varias causas y soluciones para este error, documentadas por Drupal:
https://www.drupal.org/node/481758
Algunas de las soluciones más probables incluyen editar el /etc/php5/apache2/php.iniarchivo para generar el max_execution_time:
sudo nano /etc/php5/apache2/php.ini
Archivo:
max_execution_time = 300
También puedes probar la instalación en un navegador distinto a Chrome, como Safari. La configuración de cookies del navegador puede interferir con la instalación.
De todas formas, una vez que implementes la solución, tendrás que eliminar la base de datos y /var/www/html/sites/default/settings.phpel archivo de Drupal existentes, reemplazarlos con copias predeterminadas y reiniciar la instalación. Si tienes datos o configuraciones que deban conservarse, haz copias de seguridad.
Para hacer esto, puede iniciar sesión en MySQL y DROP DATABASE drupal;luego seguir nuevamente la sección de base de datos anterior para crear la base de datos y otorgarle los privilegios.
También puedes ejecutarlo cp /var/www/html/sites/default/default.settings.php /var/www/html/sites/default/settings.phpde nuevo para reemplazar el archivo de configuración. Asegúrate de ejecutar el chmod 664 /var/www/html/sites/default/settings.phpcomando para restablecer los permisos correctos.
Luego visite su dirección IP nuevamente, posiblemente en un navegador diferente, e intente la instalación final nuevamente.
Conclusión
Ahora tienes una base sólida para crear tu sitio Drupal. Drupal es increíblemente flexible, lo que te permite personalizar la apariencia y la funcionalidad del sitio según tus necesidades y las de tus usuarios.
Para obtener ideas sobre cómo seguir, visita nuestra página de etiquetas de Drupal , donde encontrarás tutoriales que te ayudarán en tu proceso. También encontrarás una sección de preguntas y respuestas para obtener ayuda o contribuir a la comunidad.
En este artículo, nos centraremos en cómo instalar WordPress en Ubuntu 18.04. WordPress es una plataforma de gestión de contenido gratuita y de código abierto basada en PHP y MySQL. Es el sistema de gestión de blogs y contenido líder a nivel mundial, con una cuota de mercado superior al 60%, eclipsando a competidores como Joomla y Drupal. WordPress se lanzó por primera vez el 27 de mayo de 2003 y, hasta la fecha, ¡funciona con más de 60 millones de sitios web! Su potencia y popularidad han alcanzado tal nivel que algunas grandes marcas y empresas han alojado sus sitios en la plataforma. Entre ellas se encuentran Sony Music, Katy Perry, New York Post y TED.
¿Por qué WordPress es tan popular?
¿Por qué es tan popular WordPress? Analicemos brevemente algunos de los factores que han contribuido al enorme éxito de la plataforma.
Facilidad de uso
WordPress incluye un panel de control sencillo, intuitivo y fácil de usar. No requiere conocimientos de lenguajes de programación web como PHP, HTML5 y CSS3, y puedes crear un sitio web con solo unos clics. Además, la plataforma incluye plantillas, widgets y plugins gratuitos para ayudarte a empezar con tu blog o sitio web.
Rentabilidad
WordPress te ahorra muchísimo dinero a los desarrolladores para desarrollar tu sitio web. Solo tienes que obtener un tema gratuito de WordPress o comprar uno e instalarlo. Una vez instalado, tienes la libertad de implementar las funciones que prefieras y personalizar una gran variedad sin necesidad de programar mucho. Además, diseñar tu sitio web lleva mucho menos tiempo que programar desde cero.
Los sitios de WordPress son responsivos
La plataforma WordPress es intrínsecamente responsiva, por lo que no tendrás que preocuparte por si tus sitios se adaptan a múltiples dispositivos. ¡Esta ventaja también contribuye a que tu sitio tenga un mejor posicionamiento SEO en Google!
WordPress está preparado para SEO
WordPress está desarrollado con un código bien estructurado, limpio y consistente. Esto facilita la indexación de tu blog o sitio web por parte de Google y otros motores de búsqueda, lo que mejora tu posicionamiento. Además, puedes decidir qué páginas tienen mejor posicionamiento o usar plugins de SEO como el popular plugin de Yoast, que mejora el posicionamiento de tu sitio web en Google.
Fácil de instalar y actualizar.
Instalar WordPress en Ubuntu o cualquier otro sistema operativo es muy fácil. Existen numerosos scripts de código abierto que incluso automatizan este proceso. Muchas empresas de hosting ofrecen una función de instalación de WordPress con un solo clic para que puedas empezar a usarlo enseguida.
Instalar WordPress en Ubuntu
Antes de comenzar, actualicemos el sistema. Inicie sesión como usuario root y actualice el sistema para actualizar los repositorios.
apt update && apt upgrade
Salida
A continuación, instalaremos la pila LAMP para que WordPress funcione. LAMP es la abreviatura de Linux, Apache, MySQL y PHP.
Paso 1: Instalar Apache
Comencemos por instalar Apache. Para ello, ejecute el siguiente comando.
apt install apache2
Salida
Para confirmar que Apache está instalado en su sistema, ejecute el siguiente comando.
systemctl status apache2
Salida
Para verificar más, abra su navegador y vaya a la dirección IP de su servidor.
https://ip-address
Producción
Paso 2: Instalar MySQL
A continuación, instalaremos el motor de base de datos MariaDB para alojar nuestros archivos de WordPress. MariaDB es una bifurcación de código abierto de MySQL y la mayoría de las empresas de hosting lo utilizan en lugar de MySQL.
apt install mariadb-server mariadb-client
Salida Ahora aseguremos nuestro motor de base de datos MariaDB y prohibamos el inicio de sesión root remoto.
$ mysql_secure_installation
El primer paso le pedirá que cambie la contraseña de root para iniciar sesión en la base de datos. Puede cambiarla u omitirla si está seguro de que su contraseña es segura. Para omitir el cambio, escriba n. Por seguridad, se le pedirá que elimine los usuarios anónimos. Escriba Y. A continuación, desactive el inicio de sesión remoto de root para evitar que los hackers accedan a su base de datos. Sin embargo, para realizar pruebas, puede permitir el inicio de sesión remoto si está configurando un servidor virtual.
A continuación, elimine la base de datos de prueba. Finalmente, vuelva a cargar la base de datos para que los cambios surtan efecto.
Paso 3: Instalar PHP
Por último, instalaremos PHP como el último componente de la pila LAMP.
apt install php php-mysql
Salida Para confirmar que PHP está instalado, se creó un info.phparchivo en /var/www/html/la ruta
vim /var/www/html/info.php
Añade las siguientes líneas:
<?php
phpinfo();
?>
Guardar y salir. Abra su navegador y añada /info.phpla URL del servidor.
https://ip-address/info.php
Producción
Paso 4: Crear una base de datos de WordPress
Ahora es el momento de iniciar sesión en nuestra base de datos MariaDB como root y crear una base de datos para alojar nuestros datos de WordPress.
$ mysql -u root -p
Salida
Cree una base de datos para nuestra instalación de WordPress.
CREATE DATABASE wordpress_db;
Salida
A continuación, crea un usuario de base de datos para nuestra configuración de WordPress.
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'password';
Salida
Otorgar privilegios al usuario A continuación, otorgue al usuario permisos para acceder a la base de datos
GRANT ALL ON wordpress_db.* TO 'wp_user'@'localhost' IDENTIFIED BY 'password';
Salida Genial, ahora puedes salir de la base de datos.
FLUSH PRIVILEGES;
Exit;
Paso 5: Instalar WordPress CMS
Vaya a su directorio temporal y descargue el último archivo de WordPress
cd /tmp && wget https://wordpress.org/latest.tar.gz
Salida A continuación, descomprima el archivo tar, lo que generará una carpeta llamada “wordpress”.
tar -xvf latest.tar.gz
Salida Copiar la carpeta de wordpress a /var/www/html/la ruta.
cp -R wordpress /var/www/html/
Ejecute el siguiente comando para cambiar la propiedad del directorio ‘wordpress’.
Abre tu navegador y ve a la URL del servidor. En mi caso es…
https://server-ip/wordpress
Se le presentará un asistente de WordPress y una lista de credenciales necesarias para configurarlo correctamente. Complete el formulario como se muestra con las credenciales especificadas al crear la base de datos de WordPress en MariaDB. Omita el host de la base de datos y el prefijo de la tabla y haga clic en el botón “Enviar”. Si todos los datos son correctos, podrá continuar. Ejecute la instalación. Complete los datos adicionales necesarios, como el título del sitio, el nombre de usuario y la contraseña, y guárdelos en un lugar seguro para que no los olvide. Asegúrese de usar una contraseña segura. Desplácese hacia abajo y haga clic en “Instalar WordPress”. Si todo ha ido bien, recibirá una notificación de “Instalación correcta”, como se muestra.
Éxito
Haz clic en el botón “Iniciar sesión” para acceder a la página de inicio de sesión de tu nueva instalación de WordPress. Introduce tus credenciales de inicio de sesión y pulsa “Iniciar sesión”. ¡Listo! Ya está el panel de control de WordPress, donde puedes crear tu primer blog o sitio web. ¡Enhorabuena por haber llegado hasta aquí! Ahora puedes descubrir las distintas funciones, plugins y temas, y empezar a configurar tu primer blog o sitio web.