One place for hosting & domains

      Debian

      Cómo instalar y usar Docker en Debian 9


      finid escribió una versión anterior de este tutorial.

      Introducción

      Docker es una aplicación que simplifica el proceso de administración de procesos de aplicación en contenedores. Los contenedores le permiten ejecutar sus aplicaciones en procesos con aislamiento de recursos. Son similares a las máquinas virtuales, pero los contenedores son más portátiles, más flexibles con los recursos y más dependientes del sistema operativo host.

      Para hallar una introducción detallada a los distintos componentes de un contenedor de Docker, consulte El ecosistema de Docker: Introducción a los componentes comunes.

      A través de este tutorial, instalará y usará Docker Community Edition (CE) en Debian 9. Instalará el propio Docker, trabajará con contenedores e imágenes, e introducirá una imagen en un repositorio Docker.

      Requisitos previos

      Para completar este tutorial, necesitará lo siguiente:

      Paso 1: Instalar Docker

      Es posible que la versión del paquete de instalación de Docker disponible en el repositorio oficial de Debian no sea la más reciente. Para asegurarnos de contar con la versión más reciente, instalaremos Docker desde el repositorio oficial de Docker. Para hacerlo, agregaremos una nueva fuente de paquetes y la clave GPG de Docker para garantizar que las descargas sean válidas, y luego instalaremos el paquete.

      Primero, actualice su lista de paquetes existente:

      A continuación, instale algunos paquetes de requisitos previos que permitan a apt usar paquetes a través de HTTPS:

      • sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common

      Luego, añada la clave de GPG para el repositorio oficial de Docker en su sistema:

      • curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

      Agregue el repositorio de Docker a las fuentes de APT:

      • sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

      A continuación, actualice el paquete de base de datos con los paquetes de Docker del repositorio recién agregado:

      Asegúrese de estar a punto de realizar la instalación desde el repositorio de Docker en lugar del repositorio predeterminado de Debian:

      • apt-cache policy docker-ce

      Si bien el número de versión de Docker puede ser distinto, verá un resultado como el siguiente:

      Output of apt-cache policy docker-ce

      docker-ce:
        Installed: (none)
        Candidate: 18.06.1~ce~3-0~debian
        Version table:
           18.06.1~ce~3-0~debian 500
              500 https://download.docker.com/linux/debian stretch/stable amd64 Packages
      

      Observe que docker-ce no está instalado, pero la opción más viable para la instalación es del repositorio de Docker para Debian 9 (stretch).

      Por último, instale Docker:

      • sudo apt install docker-ce

      Con esto, Docker quedará instalado, el demonio se iniciará y el proceso se habilitará para ejecutarse en el inicio. Compruebe que funcione:

      • sudo systemctl status docker

      El resultado debe ser similar al siguiente, y mostrar que el servicio está activo y en ejecución:

      Output

      ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2018-07-05 15:08:39 UTC; 2min 55s ago Docs: https://docs.docker.com Main PID: 21319 (dockerd) CGroup: /system.slice/docker.service ├─21319 /usr/bin/dockerd -H fd:// └─21326 docker-containerd --config /var/run/docker/containerd/containerd.toml

      La instalación de Docker ahora le proporcionará no solo el servicio de Docker (demonio) sino también la utilidad de línea de comandos docker o el cliente de Docker. Más adelante, exploraremos la forma de usar el comando docker en este tutorial.

      Paso 2 : Ejecutar el comando Docker sin sudo (opcional)

      Por defecto, el comando docker solo puede ser ejecutado por el usuario root o un usuario del grupo docker, que se crea automáticamente durante el proceso de instalación de Docker. Si intenta ejecutar el comando docker sin sudo como prefijo o sin formar parte del grupo docker, obtendrá un resultado como este:

      Output

      docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?. See 'docker run --help'.

      Si desea evitar escribir sudo al ejecutar el comando docker, agregue su nombre de usuario al grupo docker:

      • sudo usermod -aG docker ${USER}

      Para aplicar la nueva membresía de grupo, cierre la sesión del servidor y vuelva a iniciarla o escriba lo siguiente:

      Para continuar, se le solicitará ingresar la contraseña de su usuario.

      Confirme que ahora su usuario se agregó al grupo docker escribiendo lo siguiente:

      Output

      sammy sudo docker

      Si debe agregar al grupo docker un usuario con el que no inició sesión, declare dicho nombre de usuario de forma explícita usando lo siguiente:

      • sudo usermod -aG docker username

      Para el resto de este artículo, se supone que ejecutará el comando docker como usuario del grupo docker. Si elige no hacerlo, incluya sudo al principio de los comandos.

      A continuación, exploremos el comando docker.

      Paso 3: Usar el comando docker

      El uso de docker consiste en pasar a este una cadena de opciones y comandos seguida de argumentos. La sintaxis adopta esta forma:

      • docker [option] [command] [arguments]

      Para ver todos los subcomandos disponibles, escriba lo siguiente:

      A partir de Docker 18, en la lista completa de subcomandos disponibles se incluye lo siguiente:

      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

      Si desea ver las opciones disponibles para un comando específico, escriba lo siguiente:

      • docker docker-subcommand --help

      Para ver información sobre Docker relacionada con todo el sistema, utilice lo siguiente:

      Exploremos algunos de estos comandos. Comenzaremos trabajando con imágenes.

      Paso 4: Trabajar con imágenes de Docker

      Los contenedores de Docker se construyen con 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 en Docker Hub, de modo que la mayoría de las aplicaciones y las distribuciones de Linux que necesitará tendrán imágenes alojadas allí.

      Para verificar si puede acceder a imágenes y descargarlas de Docker Hub, escriba lo siguiente:

      El resultado indicará que Docker funciona de forma correcta:

      Output

      Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 9db2ca6ccae0: Pull complete Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc 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 imagen de hello-world a nivel local. Por ello la descargó de Docker Hub, el repositorio predeterminado. Una vez que se descargó la imagen, Docker creó un contenedor a partir de ella y de la aplicación dentro del contenedor ejecutado, y mostró el mensaje.

      Puede buscar imágenes disponibles en Docker Hub usando el comando docker con el subcomando search. Por ejemplo, para buscar la imagen de Ubuntu, escriba lo siguiente:

      El script rastreará Docker Hub y mostrará una lista de todas las imágenes cuyo nombre coincida con la cadena de búsqueda. En este caso, el resultado será similar a lo siguiente:

      Output

      NAME DESCRIPTION STARS OFFICIAL AUTOMATED ubuntu Ubuntu is a Debian-based Linux operating sys… 8320 [OK] dorowu/ubuntu-desktop-lxde-vnc Ubuntu with openssh-server and NoVNC 214 [OK] rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 170 [OK] consol/ubuntu-xfce-vnc Ubuntu container with "headless" VNC session… 128 [OK] ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS with ansible 95 [OK] ubuntu-upstart Upstart is an event-based replacement for th… 88 [OK] neurodebian NeuroDebian provides neuroscience research s… 53 [OK] 1and1internet/ubuntu-16-nginx-php-phpmyadmin-mysql-5 ubuntu-16-nginx-php-phpmyadmin-mysql-5 43 [OK] ubuntu-debootstrap debootstrap --variant=minbase --components=m… 39 [OK] nuagebec/ubuntu Simple always updated Ubuntu docker images w… 23 [OK] tutum/ubuntu Simple Ubuntu docker images with SSH access 18 i386/ubuntu Ubuntu is a Debian-based Linux operating sys… 13 1and1internet/ubuntu-16-apache-php-7.0 ubuntu-16-apache-php-7.0 12 [OK] ppc64le/ubuntu Ubuntu is a Debian-based Linux operating sys… 12 eclipse/ubuntu_jdk8 Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, … 6 [OK] darksheer/ubuntu Base Ubuntu Image -- Updated hourly 4 [OK] codenvy/ubuntu_jdk8 Ubuntu, JDK8, Maven 3, git, curl, nmap, mc, … 4 [OK] 1and1internet/ubuntu-16-nginx-php-5.6-wordpress-4 ubuntu-16-nginx-php-5.6-wordpress-4 3 [OK] pivotaldata/ubuntu A quick freshening-up of the base Ubuntu doc… 2 1and1internet/ubuntu-16-sshd ubuntu-16-sshd 1 [OK] ossobv/ubuntu Custom ubuntu image from scratch (based on o… 0 smartentry/ubuntu ubuntu with smartentry 0 [OK] 1and1internet/ubuntu-16-healthcheck ubuntu-16-healthcheck 0 [OK] pivotaldata/ubuntu-gpdb-dev Ubuntu images for GPDB development 0 paasmule/bosh-tools-ubuntu Ubuntu based bosh-cli 0 [OK] ...

      En la columna de OFFICIAL,** OK** indica una imagen creada y avalada por la empresa responsable del proyecto. Una vez que identifique la imagen que desearía usar, puede descargarla a su computadora usando el subcomando pull.

      Ejecute el siguiente comando para descargar la imagen oficial de ubuntu a su ordenador:

      Verá el siguiente resultado:

      Output

      Using default tag: latest latest: Pulling from library/ubuntu 6b98dfc16071: Pull complete 4001a1209541: Pull complete 6319fc68c576: Pull complete b24603670dc3: Pull complete 97f170c87c6f: Pull complete Digest: sha256:5f4bdc3467537cbbe563e80db2c3ec95d548a9145d64453b06939c4592d67b6d Status: Downloaded newer image for ubuntu:latest

      Una vez descargada una imagen, puede ejecutar un contenedor usando la imagen descargada con el subcomando run. Como pudo ver en el ejemplo de hello-world, si no se descargó una imagen al ejecutarse docker con el subcomando run, el cliente de Docker descargará primero la imagen y luego ejecutará un contenedor utilizándola.

      Para ver las imágenes descargadas a su computadora, escriba lo siguiente:

      El resultado debe tener un aspecto similar al siguiente:

      Output

      REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 16508e5c265d 13 days ago 84.1MB hello-world latest 2cb0d9787c4d 7 weeks ago 1.85kB

      Como verá más adelante en este tutorial, las imágenes que utilice para ejecutar contenedores pueden modificarse y utilizarse para generar nuevas imágenes que se pueden cargar posteriormente (“introducir” es el término técnico) a Docker Hub o a otros registros de Docker.

      Veamos en mayor profundidad la forma de ejecutar los contenedores.

      Paso 5: Ejecutar un contenedor de Docker

      El contenedor hello-world que ejecutó en el paso anterior es un ejemplo de un contenedor que se ejecuta y se cierra tras emitir un mensaje de prueba. Los contenedores pueden ofrecer una utilidad mucho mayor y ser interactivos. Después de todo, son similares a las máquinas virtuales, aunque más flexibles con los recursos.

      Como ejemplo, ejecutemos un contenedor usando la imagen más reciente de Ubuntu. La combinación de los conmutadores -i y -t le proporcionan un acceso interactivo del shell al contenedor:

      Su símbolo del sistema debe cambiar para reflejar el hecho de que ahora trabaja dentro del contenedor y debe adoptar esta forma:

      Output

      root@d9b100f2f636:/#

      Tenga en cuenta el ID del contenedor en el símbolo del sistema. En este ejemplo, es d9b100f2f636. Más adelante, necesitará ese ID de contenedor para identificar el contenedor cuando desee eliminarlo.

      Ahora puede ejecutar cualquier comando dentro del contenedor. Por ejemplo, actualicemos la base de datos del paquete dentro del contenedor. No es necesario prefijar ningún comando con sudo, ya que realiza operaciones dentro del contenedor como el usuario root:

      Luego, instale cualquier aplicación en él. Probemos con Node.js:

      Con esto, se instala Node.js en el contenedor desde el repositorio oficial de Ubuntu. Cuando finalice la instalación, verifique que Node.js esté instalado:

      Verá el número de versión en su terminal:

      Output

      v8.10.0

      Cualquier cambio que realice dentro del contenedor solo se aplica a este.

      Para cerrar el contenedor, escriba exit a línea de comandos.

      A continuación, veremos la forma de administrar los contenedores en nuestro sistema.

      Paso 6: Administrar contenedores de Docker

      Después de usar Docker durante un tiempo, tendrá muchos contenedores activos (en ejecución) e inactivos en su computadora. Para ver *los *activos, utilice lo siguiente:

      Verá una salida similar a la siguiente:

      Output

      CONTAINER ID IMAGE COMMAND CREATED

      A través de este tutorial, inició dos contenedores: uno de la imagen hello-world y otro de la imagen ubuntu. Ambos contenedores ya no están en ejecución, pero aún existen en su sistema.

      Para ver todos los contenedores, activos e inactivos, ejecute docker ps con el conmutador -a:

      Visualizará un resultado similar a esto:

      d9b100f2f636        ubuntu              "/bin/bash"         About an hour ago   Exited (0) 8 minutes ago                           sharp_volhard
      01c950718166        hello-world         "/hello"            About an hour ago   Exited (0) About an hour ago                       festive_williams
      
      

      Para ver el último contenedor que creó, páselo al conmutador -l:

      • CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
      • d9b100f2f636 ubuntu "/bin/bash" About an hour ago Exited (0) 10 minutes ago sharp_volhard

      Para iniciar un contenedor detenido, utilice docker start, seguido del o el nombre ID del contenedor. Iniciemos el contenedor basado en Ubuntu con el ID de d9b100f2f636:

      • docker start d9b100f2f636

      El contenedor se iniciará y podrá usar docker ps para ver su estado:

      CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
      d9b100f2f636        ubuntu              "/bin/bash"         About an hour ago   Up 8 seconds                            sharp_volhard
      
      

      Para detener un contenedor en funcionamiento, utilice docker stop, seguido del ID o nombre del contenedor. Esta vez usaremos el nombre que Docker asignó al contenedor, que es sharp_volhard:

      • docker stop sharp_volhard

      Una vez que decidida que ya no necesita un contenedor, elimínelo con el comando docker rm y use nuevamente el ID o el nombre del contenedor. Utilice el comando docker ps -a para encontrar el ID o nombre del contenedor asociado con la imagen hello-world y elimínelo.

      • docker rm festive_williams

      Puede iniciar un nuevo contenedor y darle un nombre usando el conmutador --name. También podrá usar el conmutador de --rm para crear un contenedor que se elimine de forma automática cuando se detenga. Consulte el comando docker run help para obtener más información sobre estas y otras opciones.

      Los contenedores pueden convertirse en imágenes que podrá usar para crear contenedores nuevos. Veamos cómo funciona esto.

      Paso 7: Confirmar cambios aplicados a una imagen de Docker en un contenedor

      Cuando inicie una imagen de Docker, podrá crear, modificar y eliminar archivos del mismo modo que con una máquina virtual. Los cambios que realice solo se aplicarán al contenedor en cuestión. Podrá iniciarlo y detenerlo, pero una vez que lo destruya con el comando docker rm, los cambios se perderán por completo.

      En esta sección verá la forma de guardar el estado de un contenedor como una nueva imagen de Docker.

      Después de instalar Node.js dentro del contenedor de Ubuntu, dispondrá de un contenedor que se ejecuta a partir de una imagen, pero este es diferente de la imagen que utilizó para crearlo. Sin embargo, quizá desee reutilizar este contenedor Node.js como base de nuevas imágenes posteriormente.

      Luego, confirme los cambios en una nueva instancia de imagen de Docker utilizando el siguiente comando:

      • docker commit -m "What you did to the image" -a "Author Name" container_id repository/new_image_name

      El conmutador -m es para el mensaje de confirmación que le permite a usted y a otros a saber qué cambios realizaron, mientras que -a se utiliza para especificar el autor. El container_id es el que observó anteriormente en el tutorial cuando inició la sesión interactiva de Docker. A menos que haya creado repositorios adicionales en Docker Hub, repository generalmente corresponde a su nombre de usuario de Docker Hub.

      Por ejemplo, para el usuario** sammy**, con el ID de contenedor d9b100f26f636, el comando sería el siguiente:

      • docker commit -m "added Node.js" -a "sammy" d9b100f2f636 sammy/ubuntu-nodejs

      Cuando *confirme *una imagen, la nueva imagen se guardará a nivel local en su computadora. Más adelante, en este tutorial, aprenderá a introducir una imagen en un registro de Docker como Docker Hub para que otros puedan acceder a ella.

      Listar las imágenes de Docker de nuevo mostrará la nueva imagen, así como la anterior de la que se derivó:

      Verá resultados como este:

      Output

      REPOSITORY TAG IMAGE ID CREATED SIZE sammy/ubuntu-nodejs latest 7c1f35226ca6 7 seconds ago 179MB ubuntu latest 113a43faa138 4 weeks ago 81.2MB hello-world latest e38bc07ac18e 2 months ago 1.85kB

      En este ejemplo ubuntu-nodejs es la nueva imagen, derivada de la imagen ubuntu existente de Docker Hub. La diferencia de tamaño refleja los cambios realizados. En este ejemplo, el cambio fue la instalación de NodeJS. Por ello, la próxima vez que deba ejecutar un contenedor usando Ubuntu con NodeJS preinstalado, podrá usar simplemente la nueva imagen.

      También podrá crear imágenes de un Dockerfile, lo cual le permitirá automatizar la instalación de software en una nueva imagen. Sin embargo, eso queda fuera del alcance de este tutorial.

      Ahora, compartiremos la nueva imagen con terceros para que puedan crear contenedores a partir de ella.

      Paso 8: Introducir imágenes de Docker en un repositorio de Docker

      El siguiente paso lógico después de crear una nueva imagen a partir de una imagen existente es compartirla con algunos de sus amigos, con todo el mundo en Docker Hub, o en otro registro de Docker al que tenga acceso. Para introducir una imagen a Docker Hub o a cualquier otro registro de Docker, deberá tener una cuenta en el sistema.

      En esta sección verá cómo introducir una imagen de Docker en Docker Hub. Para aprender a crear su propio registro privado de Docker, consulte Cómo configurar un registro de Docker privado en Ubuntu 14.04.

      Para introducir su imagen, primero inicie sesión en Docker Hub.

      • docker login -u docker-registry-username

      Se le solicitará autenticarse usando su contraseña de Docker Hub. Si especificó la contraseña correcta, la autenticación tendrá éxito.

      Nota: Si su nombre de usuario de registro de Docker es diferente del nombre de usuario local que usó para crear la imagen, deberá etiquetar su imagen con su nombre de usuario de registro. Para el ejemplo que se muestra en el último paso, deberá escribir lo siguiente:

      • docker tag sammy/ubuntu-nodejs docker-registry-username/ubuntu-nodejs

      Luego podrá introducir su propia imagen usando lo siguiente:

      • docker push docker-registry-username/docker-image-name

      Para introducir la imagen ubuntu-nodejs en el repositorio de sammy, el comando sería el siguiente:

      • docker push sammy/ubuntu-nodejs

      El proceso puede tardar un tiempo en completarse cuando se suben las imágenes, pero una vez que finalice el resultado será el siguiente:

      Output

      The push refers to a repository [docker.io/sammy/ubuntu-nodejs] e3fbbfb44187: Pushed 5f70bf18a086: Pushed a3b5c80a4eba: Pushed 7f18b442972b: Pushed 3ce512daaf78: Pushed 7aae4540b42d: Pushed ...

      Una vez que introduce una imagen en un registro, esta debe aparecer en el panel de su cuenta, como se muestra en la siguiente captura:

      Nuevo listado de imágenes de Docker en Docker Hub

      Si un intento de introducción produce un error de este tipo, es probable que no haya iniciado sesión:

      Output

      The push refers to a repository [docker.io/sammy/ubuntu-nodejs] e3fbbfb44187: Preparing 5f70bf18a086: Preparing a3b5c80a4eba: Preparing 7f18b442972b: Preparing 3ce512daaf78: Preparing 7aae4540b42d: Waiting unauthorized: authentication required

      Inicie sesión con docker login y repita el intento de introducción. Luego, compruebe que exista en su página de repositorios de Docker Hub.

      Ahora podrá usar ​​​​​​​docker ​​​​​​pull sammy​​​/ubuntu-nodejs​​​​​​​​​​​​ para introducir la imagen en una nueva máquina y usarla para ejecutar un nuevo contenedor.

      Conclusión

      A través de este tutorial, instaló Docker, trabajó con imágenes y contenedores e introdujo una imagen modificada en Docker Hub. Ahora que conoce los aspectos básico, explore los otros tutoriales de Docker de la Comunidad de DigitalOcean.



      Source link

      Cómo instalar Node.js en Debian 9


      Introducción

      Node.js es una plataforma de JavaScript para programación general que permite a los usuarios crear aplicaciones de red de forma rápida. Al aprovechar JavaScript tanto en frontend como en backend, Node.js hace que el desarrollo sea más uniforme e integrado.

      En esta guía, le mostraremos la manera de comenzar a trabajar con Node.js en un servidor Debian 9.

      Requisitos previos

      En esta guía, se supone que utiliza Debian 9. Antes de comenzar, debe tener configurada en su sistema una cuenta de usuario no root con privilegios sudo. Puede aprender a hacerlo siguiendo la configuración inicial de servidores para Debian 9.

      Instalación de la versión Distro-Stable para Debian

      Debian contiene una versión de Node.js en sus repositorios predeterminados. En el momento en que se redactó este artículo se encontraba disponible la versión 4.8.2, que caducará a fines de abril de 2018. Si le gusta experimentar el lenguaje usando una opción estable y suficiente, puede resultar útil realizar la instalación desde los repositorios. Sin embargo, se recomienda que para los casos de uso de desarrollo y producción instale una versión más reciente con un PPA. Analizaremos la forma realizar la instalación desde un PPA en el siguiente paso.

      Para obtener la versión distro-stable de Node.js, puede utilizar el administrador de paquetes apt. Primero, actualice su índice de paquetes locales:

      A continuación, instale el paquete Node.js desde los repositorios:

      Si el paquete de los repositorios se ajusta a sus necesidades, será todo lo que necesita para configurar Node.js.

      Para comprobar la versión de Node.js que instaló después de estos pasos iniciales, escriba lo siguiente:

      Debido a un conflicto con otro paquete, el ejecutable de los repositorios de Debian se llama nodejs en vez de node. Téngalo en cuenta al ejecutar el software.

      Cuando determine la versión de Node.js que instaló desde los repositorios de Debian, podrá decidir si desea trabajar con diferentes versiones, archivos de paquetes o administradores de versiones. A continuación, veremos estos elementos junto con métodos de instalación más flexibles y sólidos.

      Instalación con un PPA

      Para trabajar con una versión más reciente de Node.js, puede agregar el _PPA _(archivo de paquetes personal) actualizado por NodeSource. En este habrá versiones de Node.js más actualizadas que en los repositorios oficiales de Debian y podrá elegir entre Node.js v4.x (la versión compatible a largo plazo más antigua, que se admitirá hasta finales de abril de 2018), Node.js v6.x (admitida hasta abril de 2019), Node.js v8.x (la versión actual de LTS, admitida hasta diciembre de 2019) y Node.js v10.x (la versión más reciente, admitida hasta abril de 2021).

      Primero, actualizaremos el índice de paquetes locales e instalaremos curl, con el cual accederá al PPA:

      • sudo apt update
      • sudo apt install curl

      A continuación, instalaremos el PPA para poder acceder a su contenido. Desde su directorio principal, utilice curl para recuperar la secuencia de comandos de instalación de su versión preferida y asegúrese de sustituir 10.x por la cadena de su versión elegida (si es distinta):

      • cd ~
      • curl -sL https://deb.nodesource.com/setup_10.x -o nodesource_setup.sh

      Puede inspeccionar el contenido de esta secuencia de comandos con nano o su editor de texto preferido:

      Ejecute la secuencia de comandos en sudo:

      • sudo bash nodesource_setup.sh

      El PPA se agregará a su configuración y su caché de paquetes locales se actualizará de forma automática. Después de ejecutar la secuencia de comandos de configuración, puede instalar el paquete Node.js de la misma manera que antes:

      Para comprobar la versión de Node.js que instaló después de estos pasos iniciales, escriba lo siguiente:

      Output

      v10.9.0

      El paquete nodejs contiene el binario nodejs y npm, por lo que no tendrá que instalar npm por separado.

      npm utiliza un archivo de configuración en su directorio de inicio para hacer un seguimiento de las actualizaciones. Se creará la primera vez que ejecute npm. Ejecute este comando para verificar que npm esté instalado y crear el archivo de configuración:

      Output

      6.2.0

      Para que algunos paquetes de npm funcionen (por ejemplo, aquellos para los cuales de sebe compilar código de fuente), deberá instalar el paquete build-essential:

      • sudo apt install build-essential

      Ahora dispondrá de las herramientas necesarias para trabajar con paquetes npm para los que se deba compilar código desde la fuente.

      Instalación con NVM

      Una alternativa a la instalación de Node.js a través de apt es utilizar una herramienta llamada nvm, que significa “Node.js Version Manager”. En vez de funcionar en el nivel del sistema operativo, nvm funciona en el nivel de un directorio independiente dentro de su directorio de inicio. Esto significa que puede instalar varias versiones autónomas de Node.js sin que afecte a todo el sistema.

      Controlar su entorno con nvm le permite acceder a las versiones más recientes de Node.js, además de conservar y administrar versiones anteriores. Sin embargo, es una herramienta distinta de apt y las versiones de Node.js que administra con ella con distintas de las que maneja con apt.

      Para descargar la secuencia de comandos de instalación de nvm de la página de GitHub del proyecto, puede utilizar curl. Tenga en cuenta que el número de versión puede diferir del que se resalta aquí:

      • curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh -o install_nvm.sh

      Inspeccione la secuencia de comandos de instalación con nano:

      Ejecute la secuencia de comandos con bash:

      Instalará el software en un subdirectorio de su directorio de inicio en ~/.nvm. También agregará las líneas necesarias a su archivo ~/. profile para utilizarlo.

      Para obtener acceso a la funcionalidad nvm, deberá cerrar sesión e iniciarla de nuevo u obtener el archivo ~/. profile para que su sesión actual registre los cambios:

      Con nvm instalado, puede instalar versiones aisladas de Node.js. Para obtener información sobre las versiones de Node.js disponibles, escriba lo siguiente:

      Output

      ... v8.11.1 (Latest LTS: Carbon) v9.0.0 v9.1.0 v9.2.0 v9.2.1 v9.3.0 v9.4.0 v9.5.0 v9.6.0 v9.6.1 v9.7.0 v9.7.1 v9.8.0 v9.9.0 v9.10.0 v9.10.1 v9.11.0 v9.11.1 v10.0.0 v10.1.0 v10.2.0 v10.2.1 v10.3.0 v10.4.0 v10.4.1 v10.5.0 v10.6.0 v10.7.0 v10.8.0 v10.9.0

      Como puede ver, la versión LTS actual en el momento en que se redactó este artículo era la 8.11.1. Puede instalarla escribiendo lo siguiente:

      Normalmente, nvm aplicará un cambio para utilizar la versión más reciente instalada. Puede indicar a nvm que utilice la versión que acaba de descargar escribiendo lo siguiente:

      Cuando instale Node.js utilizando nvm, el ejecutable se llamará node. Puede ver la versión que el shell utiliza actualmente escribiendo lo siguiente:

      Output

      v8.11.1

      Si dispone de varias versiones de Node.js, puede ver cuál está instalada escribiendo lo siguiente:

      Si desea establecer como predeterminada una de las versiones, escriba lo siguiente:

      Esta versión se seleccionará de forma automática cuando se genere una nueva sesión. También puede hacer referencia a ella con el alias, como se muestra:

      Cada versión de Node.js hará un seguimiento de sus propios paquetes y cuenta con npm para administrarlos.

      También puede contar con paquetes de instalación de npm en el directorio /node_modules del proyecto de Node.js. Utilice la siguiente sintaxis para instalar el módulo express:

      Si desea instalar el módulo de manera general para que otros programas que utilizan la misma versión de Node.js puedan emplearlo, puede agregar el indicador -g:

      Con esto, el paquete se instalará aquí:

      ~/.nvm/versions/node/node_version/lib/node_modules/express
      

      Instalar el módulo de forma general le permitirá ejecutar comandos de la línea de comandos, pero deberá vincular el paquete a su esfera local para poder solicitarlo desde un programa:

      Puede obtener más información sobre las opciones disponibles con nvm escribiendo lo siguiente:

      Eliminación de Node.js

      Puede desinstalar Node.js utilizando apt o nvm según la versión a la que desee orientarse. Para eliminar versiones instaladas desde los repositorios o del PPA, deberá utilizar la herramienta apt en el nivel del sistema.

      Para eliminar cualquiera de estas versiones, escriba lo siguiente:

      Con este comando se eliminarán el paquete y los archivos de configuración.

      Para desinstalar una versión de Node.js que haya habilitado utilizando nvm, primero determine si la versión que desea eliminar es o no la que se encuentra activa:

      Si esto no sucede, puede ejecutar lo siguiente:

      • nvm uninstall node_version

      Con este comando se desinstalará la versión seleccionada de Node.js.

      Si la versión que desea eliminar es la que se encuentra, primero debe desactivar nvm para habilitar sus cambios:

      Ahora podrá desinstalar la versión actual con el comando uninstall anterior, que eliminará todos los archivos asociados con la versión deseada de Node.js, a excepción de aquellos en caché que se puedan utilizar para la reinstalación.

      Conclusión

      Hay varias formas de configurar y ejecutar Node.js en su servidor de Debian 9. Sus circunstancias determinarán cuál de los métodos anteriores es el mejor para usted. Si bien utilizar la versión en paquete del repositorio de Debian es una opción para experimentar, la instalación desde un PPA y el uso de npm o nvm ofrece mayor flexibilidad.



      Source link

      Cómo instalar el servidor web de Apache en Debian 9


      Introducción

      El servidor HTTP Apache es el más usado del mundo. Ofrece muchas características potentes, entre las que se incluyen módulos que se cargan de forma dinámica, una sólida compatibilidad con medios y amplia integración con otras herramientas de software populares.

      En esta guía, explicaremos la forma de instalar el servidor web de Apache en su servidor de Debian 9.

      Requisitos previos

      Antes de comenzar a aplicar esta guía, debe tener un usuario no root normal con privilegios sudo configurado en su servidor. Además, deberá habilitar un firewall básico para que bloquee los puertos que no sean esenciales. Para aprender a configurar una cuenta normal de usuario y un firewall para su servidor, siga nuestra guía de configuración inicial para servidores de Debian 9.

      Cuando disponga de una cuenta, inicie sesión como usuario no root para comenzar.

      Paso 1: Instalar Apache

      Apache está disponible dentro de los repositorios de software predeterminados de Debian, lo que permite instalarlo utilizando herramientas convencionales de administración de paquetes.

      Comencemos actualizando el índice de paquetes locales para que reflejen los últimos cambios anteriores:

      A continuación, instale el paquete apache2:

      Una vez confirmada la instalación, apt instalará Apache y todas las dependencias necesarias.

      Paso 2: Ajustar el firewall

      Antes de probar Apache, es necesario modificar los ajustes de firewall para permitir el acceso externo a los puertos web predeterminados. Suponiendo que siguió las instrucciones de los requisitos previos, debería tener un firewall UFW configurado para que restrinja el acceso a su servidor.

      Durante la instalación, Apache se registra con UFW para proporcionar algunos perfiles de aplicación que pueden utilizarse para habilitar o deshabilitar el acceso a Apache a través del firewall.

      Enumere los perfiles de aplicación ufw escribiendo lo siguiente:

      Verá una lista de los perfiles de aplicación:

      Output

      Available applications: AIM Bonjour CIFS . . . WWW WWW Cache WWW Full WWW Secure . . .

      Los perfiles de Apache comienzan con WWW:

      • WWW: este perfil abre solo el puerto 80 (tráfico web normal no cifrado).
      • WWW Cache: este perfil abre solo el puerto 8080 (algunas veces se utiliza para proxies web y de caché).
      • WWW Full: este perfil abre el puerto 80 (tráfico web normal no cifrado) y el puerto 443 (tráfico cifrado de TLS/SSL).
      • WWW Secure: este perfil abre solo el puerto 443 (tráfico cifrado de TLS/SSL).

      Se recomienda habilitar el perfil más restrictivo, que de todos modos permitirá el tráfico que configuró. Debido a que en esta guía aún no configuramos SSL para nuestro servidor, solo deberemos permitir el tráfico en el puerto 80:

      Puede verificar el cambio escribiendo lo siguiente:

      Debería ver el tráfico HTTP permitido en el resultado que se muestra:

      Output

      Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere WWW ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) WWW (v6) ALLOW Anywhere (v6)

      Como puede ver, el perfil se activó para permitir el acceso al servidor web.

      Paso 3: Comprobar su servidor web

      Al final del proceso de instalación, Debian 9 inicia Apache. El servidor web ya debería estar en funcionamiento.

      Realice una verificación con el sistema systemd init para saber si se encuentra en ejecución el servicio escribiendo lo siguiente:

      • sudo systemctl status apache2

      Output

      ● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2018-09-05 19:21:48 UTC; 13min ago Main PID: 12849 (apache2) CGroup: /system.slice/apache2.service ├─12849 /usr/sbin/apache2 -k start ├─12850 /usr/sbin/apache2 -k start └─12852 /usr/sbin/apache2 -k start Sep 05 19:21:48 apache systemd[1]: Starting The Apache HTTP Server... Sep 05 19:21:48 apache systemd[1]: Started The Apache HTTP Server.

      Como puede ver en este resultado, parece que el servicio se inició correctamente. Sin embargo, la mejor forma de comprobarlo es solicitar una página de Apache.

      Puede acceder a la página de destino predeterminada de Apache para confirmar que el software funcione correctamente mediante su dirección IP: Si no conoce la dirección IP de su servidor, puede obtenerla de varias formas desde la línea de comandos.

      Intente escribir esto en la línea de comandos de su servidor:

      Obtendrá algunas direcciones separadas por espacios. Puede probar cada una de ellas en su navegador web para ver si funcionan.

      Una alternativa es usar la herramienta curl, que debería proporcionarle su dirección IP pública tal como se ve desde otra ubicación en Internet.

      Primero, instale curl utilizando apt:

      Luego, utilice curl para recuperar icanhazip.com mediante IPv4:

      Cuando tenga la dirección IP de su servidor, introdúzcala en la barra de direcciones de su navegador:

      http://your_server_ip
      

      Debería ver la página web predeterminada de Apache de Debian 9:

      Página predeterminada de Apache

      Esta página indica que Apache funciona correctamente. También incluye información básica sobre archivos y ubicaciones de directorios importantes de Apache.

      Paso 4: Administrar el proceso de Apache

      Ahora el servidor web funciona, repasemos algunos comandos de administración básicos.

      Para detener su servidor web, escriba lo siguiente:

      • sudo systemctl stop apache2

      Para iniciar el servidor web cuando se detenga, escriba lo siguiente:

      • sudo systemctl start apache2

      Para detener y luego iniciar el servicio de nuevo, escriba lo siguiente:

      • sudo systemctl restart apache2

      Si solo realiza cambios de configuración, Apache a menudo puede recargarse sin cerrar conexiones. Para hacerlo, utilice este comando:

      • sudo systemctl reload apache2

      Por defecto, Apache está configurado para iniciarse automáticamente cuando el servidor lo hace. Si no es lo que quiere, deshabilite este comportamiento escribiendo lo siguiente:

      • sudo systemctl disable apache2

      Para volver a habilitar el servicio de modo que se cargue en el inicio, escriba lo siguiente:

      • sudo systemctl enable apache2

      Ahora, Apache debería iniciarse de forma automática cuando el servidor lo haga de nuevo.

      Paso 5: Configurar hosts virtuales (recomendado)

      Al emplear el servidor web Apache, puede utilizar _hosts virtuales _(similares a bloques de servidor de Nginx) para encapsular detalles de configuración y alojar más de un dominio desde un único servidor. Configuraremos un dominio llamado example.com, pero debería cambiarlo por su propio nombre de dominio. Consulte nuestra Introducción a DNS de DigitalOcean para hallar más información sobre la configuración de un nombre de dominio con DigitalOcean.

      Por defecto, Apache en Debian 9 tiene habilitado un bloque de servidor que está configurado para proporcionar documentos del directorio /var/www/html. Si bien esto funciona bien para un solo sitio, puede ser difícil de manejar si aloja varios. En vez de modificar /var/www/html, crearemos una estructura de directorio dentro de /var/www para nuestro sitio example.com y dejaremos /var/www/html como directorio predeterminado que se abastecerá si una solicitud de cliente no coincide con otros sitios.

      Cree el directorio para example.com, utilizando el indicador -p para crear cualquier directorio principal necesario:

      sudo mkdir -p /var/www/example.com/html
      

      A continuación, asigne la propiedad del directorio con la variable de entorno $USER:

      • sudo chown -R $USER:$USER /var/www/example.com/html

      Los permisos de sus root web deberían ser correctos si no modificó su valor unmask, pero puede comprobarlo escribiendo lo siguiente:

      • sudo chmod -R 755 /var/www/example.com

      A continuación, cree una página de ejemplo index.html utilizando nano o su editor favorito:

      • nano /var/www/example.com/html/index.html

      Dentro de ella, agregue el siguiente ejemplo de HTML:

      /var/www/example.com/html/index.html

      <html>
          <head>
              <title>Welcome to Example.com!</title>
          </head>
          <body>
              <h1>Success!  The example.com virtual host is working!</h1>
          </body>
      </html>
      

      Guarde y cierre el archivo cuando termine.

      Para que Apache proporcione este contenido, es necesario crear un archivo de host virtual con las directivas correctas. En lugar de modificar el archivo de configuración predeterminado situado en /etc/apache2/sites-available/000-default.conf directamente, crearemos uno nuevo en /etc/apache2/sites-available/example.com.conf:

      • sudo nano /etc/apache2/sites-available/example.com.conf

      Péguelo en el siguiente bloque de configuración, similar al predeterminado, pero actualizado para nuestro nuevo directorio y nombre de dominio:

      /etc/apache2/sites-available/example.com.conf

      <VirtualHost *:80>
          ServerAdmin admin@example.com
          ServerName example.com
          ServerAlias www.example.com
          DocumentRoot /var/www/example.com/html
          ErrorLog ${APACHE_LOG_DIR}/error.log
          CustomLog ${APACHE_LOG_DIR}/access.log combined
      </VirtualHost>
      

      Tenga en cuenta que cambiamos DocumentRoot por nuestro nuevo directorio y ServerAdmin por un correo electrónico al que pueda acceder el administrador del sitio example.com. También agregamos dos directivas: ServerName, que establece el dominio de base que debería coincidir para esta definición de host virtual, y ServerAlias, que define más nombres que deberían coincidir como si fuesen el nombre de base.

      Guarde y cierre el archivo cuando termine.

      Habilitaremos el archivo con la herramienta a2ensite:

      • sudo a2ensite example.com.conf

      Deshabilite el sitio predeterminado definido en 000-default.conf:

      • sudo a2dissite 000-default.conf

      A continuación, realizaremos una prueba para ver que no haya errores de configuración:

      • sudo apache2ctl configtest

      Debería ver el siguiente resultado:

      Output

      Syntax OK

      Reinicie Apache para implementar sus cambios:

      • sudo systemctl restart apache2

      Con esto, Apache debería ser el servidor de su nombre de dominio. Puede probar esto visitando http://example.com. Allí, debería ver algo como lo siguiente:

      Ejemplo de host virtual de Apache

      Paso 6: Familiarizarse con archivos y direcciones importantes de Apache

      Ahora que sabe administrar el propio servicio de Apache, debe tomarse unos minutos para familiarizarse con algunos directorios y archivos importantes.

      Contenido

      • /var/www/html: el contenido web real, que por defecto solo consta de la página predeterminada de Apache que vio antes, se proporciona desde el directorio /var/www/html. Esto se puede cambiar modificando los archivos de configuración de Apache.

      Configuración del servidor

      • /etc/apache2: el directorio de configuración de Apache. En él se encuentran todos los archivos de configuración de Apache.
      • /etc/apache2/apache2.conf: el archivo principal de configuración de Apache. Esto se puede modificar para realizar cambios en la configuración general de Apache. Este archivo administra la carga de muchos de los demás archivos del directorio de configuración.
      • /etc/apache2/ports.conf: este archivo especifica los puertos en los que Apache escuchará. Por defecto, Apache escucha en el puerto 80. De forma adicional, lo hace en el 443 cuando se habilita un módulo que proporciona capacidades SSL.
      • /etc/apache2/sites-available/: el directorio en el que se pueden almacenar hosts por sitio. Apache no utilizará los archivos de configuración de este directorio a menos que estén vinculados al directorio sites-enabled. Normalmente, toda la configuración de bloques de servidor se realiza en este directorio y luego se habilita al vincularse al otro directorio con el comando a2ensite.
      • /etc/apache2/sites-enabled/: el directorio donde se almacenan hosts virtuales por sitio habilitados. Normalmente, se crean vinculando los archivos de configuración del directorio sites-available con a2ensite. Apache lee los archivos de configuración y los enlaces de este directorio cuando se inicia o se vuelve a cargar para compilar una configuración completa.
      • /etc/apache2/conf-available/ y /etc/apache2/conf-enabled/: estos directorios tienen la misma relación que los directorios sites-available y sites-enabled, pero se utilizan para almacenar fragmentos de configuración que no pertenecen a un host virtual. Los archivos del directorio conf-available pueden habilitarse con el comando a2enconf y deshabilitarse con el comando a2disconf.
      • /etc/apache2/mods-available/ y /etc/apache2/mods-enabled/: estos directorios contienen los módulos disponibles y habilitados, respectivamente. Los archivos que terminan en .load contienen fragmentos para cargar módulos específicos, mientras que los archivos que terminan en .conf contienen la configuración de estos módulos. Los módulos pueden habilitarse y deshabilitarse con los comandos a2enmod y a2dissmod.

      Registros del servidor

      • /var/log/apache2/access.log: por defecto, cada solicitud enviada a su servidor web se asienta en este archivo de registro a menos que Apache esté configurado para no hacerlo.
      • /var/log/apache2/error.log: por defecto, todos los errores se registran en este archivo. La directiva LogLevel de la configuración de Apache especifica el nivel de detalle de los registros de error.

      Conclusión

      Ahora que ha instaló su servidor web, dispone de varias opciones respecto del tipo de contenido que puede ofrecer y de las tecnologías que puede utilizar para crear una experiencia más completa.

      Si desea construir una pila de aplicaciones más completa, puede consultar este artículo sobre cómo configurar una pila LAMP en Debian 9.



      Source link