GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Cómo instalar el acortador de URL Shlink con Nginx en Ubuntu 20.04

Shlink es un acortador de URL gratuito, de código abierto y autohospedado escrito en PHP que proporciona una interfaz REST y CLI para interactuar con él para generar y administrar URL cortas. Una de las características principales y el acortamiento de URL es que puede realizar un seguimiento de todas las visitas a estas URL generadas, como la ubicación, el navegador, la referencia y mucho más. Además, un cliente web oficial de Shlink utiliza la API REST de Shlink y proporciona al usuario una WebUI opcional.

Al final de la guía, sabrá cómo instalar Shlink URL Shortner en su servidor Ubuntu 20.04 LTS Focal Fossa usando Nginx . El mismo principio funcionará para la versión más reciente del servidor Ubuntu 21.04 (Hirsute Hippo).

Requisitos previos

  • SO recomendado: Ubuntu 20.04:opcional (Ubuntu 21.04 y Linux Mint 20).
  • Cuenta de usuario: Una cuenta de usuario con sudo o acceso root.
  • Paquetes requeridos: mariadb php7.4 o php8.0 instalado y configurado.
  • Paquetes adicionales: curl wget descomprimir.

Verifique y actualice su sistema operativo Ubuntu.

sudo apt update && sudo apt upgrade -y

A continuación, instale los paquetes necesarios para esta guía:

sudo apt install curl wget unzip

Descargar archivo Shlink

El primer paso es visitar la página de Shlink Github y ver la última versión estable. En el momento de esta guía, la versión estable actual es 2.7.1. Sin embargo, esto cambiará en el futuro. Shlink viene en 3 versiones para PHP 7.4, PHP 8.0 y el código fuente.

Para descargar Shlink, 2.7.1, ejecute el siguiente comando:

PHP 7.4:

wget https://github.com/shlinkio/shlink/releases/download/v2.7.1/shlink2.7.1_php7.4_dist.zip

PHP 8.0:

wget https://github.com/shlinkio/shlink/releases/download/v2.7.1/shlink2.7.1_php8.0_dist.zip

Código fuente:

wget https://github.com/shlinkio/shlink/archive/refs/tags/v2.7.1.zip

A los efectos de la guía, seguirá el ejemplo de descarga de PHP 7.4. El siguiente paso es usar el (descomprimir) comando para extraer el archivo a su (/var/www/html) directorio.

sudo unzip shlink2.7.1_php7.4_dist.zip -d /var/www/html

Debe cambiar el nombre de la carpeta extraída para facilitarle la vida ejecutando el siguiente comando:

sudo mv /var/www/html/shlink2.7.1_php7.4_dist/ /var/www/html/shlink

Antes de continuar, se recomienda configurar los permisos del directorio para (www-data) usuario como actualmente está establecido como (raíz) . Para hacer esto, escriba e ingrese lo siguiente (chown) comando:

sudo chown -R www-data:www-data /var/www/html/shlink/

Crear nueva base de datos MariaDB y usuario para Shlink

El siguiente paso es crear una nueva base de datos y un nuevo usuario dedicado solo con permiso para acceder a esta base de datos. No se recomienda usar la raíz o la misma cuenta de usuario en varias bases de datos si una está comprometida.

La guía instaló MariaDB y se familiarizó con la terminología a continuación.

Ingrese a la consola de terminal de MariaDB/MySQL ejecutando el comando raíz:

sudo mysql -u root

Luego, cree la nueva base de datos para Shlink usando el siguiente comando de terminal:

CREATE DATABASE shlink;

Después de crear la base de datos, cree una nueva cuenta de usuario y concédale acceso a la base de datos de Shlink. Si aloja Nginx, PHP y MariaDB en el mismo servidor, mantenga el (localhost) . Si usa un servidor secundario para alojar MariaDB en un servidor interno o externo, ingrese la (dirección IP) en su lugar (localhost) .

GRANT ALL ON shlink.* TO 'shlinkuser'@'localhost' IDENTIFIED BY 'password';

Para realizar cambios en vivo, debe eliminar los privilegios:

FLUSH PRIVILEGES;

Para salir de la terminal de MariaDB, ejecute el siguiente comando:

EXIT;

Instalar la última versión y extensiones de PHP 7.4

Como parte de los requisitos, se requiere PHP 7.4 u 8.0. Shlink necesita ciertas extensiones para que el software funcione con PHP. Es ideal para asegurarse de que PHP esté actualizado. Se recomienda encarecidamente el PPA personalizado de Ondrej, el mantenedor y PHP para Debian.

A continuación, la guía agregará el repositorio e instalará las extensiones PHP requeridas para PHP 7.4. Si desea instalar PHP 8.0, cambie el 7.4 a 8.0 o visite nuestro tutorial oficial sobre cómo instalar PHP 8.0 en Ubuntu 20.04 .

Instale el PHP PPA personalizado de ondrey:

sudo apt install software-properties-common && sudo add-apt-repository ppa:ondrej/php -y

Después de agregar el repositorio, ejecute el siguiente comando para actualizar o instalar el software PHP 7.4 más reciente:

sudo apt install php7.4-apcu php7.4-fpm php7.4-mysql php7.4-gd php7.4-common php7.4-curl php7.4-intl php7.4-gmp php7.4-xml php7.4-json -y

Para asegurarse de que PHP 7.4 se ejecute correctamente después de la instalación o actualización, ingrese lo siguiente:

sudo systemctl status php7.4-fpm

Salida de ejemplo:

Instalando Shlink

Ahora puede continuar con la instalación del script de instalación de PHP Shlink como (www-user) ejecutando el siguiente comando PHP en su terminal de Ubuntu:

sudo -u www-data php7.4 /var/www/html/shlink/bin/install

Inmediatamente, se encontrará mirando una nueva pantalla que le pedirá que ingrese los detalles de la base de datos.

Base de datos

En la guía, elegirá MariaDB; sin embargo, si prefiere regresar y configurar otro software de base de datos opcional, ciertamente puede hacerlo.

Como se muestra a continuación, un ejemplo de cómo crear una configuración de Shlink usando MariaDB:

Las opciones ingresadas en resumen:

  • Seleccione el tipo de base de datos: 1 (MariaDB)
  • Nombre de la base de datos: encogerse
  • Puerto de la base de datos: 3306
  • Nombre de usuario de la base de datos: shlinkuser
  • Contraseña de la base de datos:
  • Socket Unix:

Acortador de URL

En la siguiente pantalla, encontrarás otra página de opciones. Aquí encontrará HTTP o HTTPS específicos, el nombre de dominio y algunas opciones de URL de Shlink. Configuración de ejemplo a continuación:

Las opciones ingresadas en resumen:

  • Dominio predeterminado para URL cortas generadas:
  • Seleccione el esquema para las URL cortas generadas: HTTPS (Utilice HTTP si no utiliza SSL)
  • ¿Desea validar direcciones URL largas con un código de estado HTTP 200 en respuesta? (sí/no): si
  • ¿Cuál es la longitud predeterminada que desea que tengan los códigos cortos generados? (Todavía podrá anular esto en cada URL corta creada): 5
  • ¿Desea que Shlink resuelva el título de la URL corta en función de la etiqueta de título de la URL larga (si corresponde)? En caso contrario, se mantendrá vacío salvo disposición expresa. (sí/no): si
  • Proporcione una clave de licencia de GeoLite2. (Déjelo en blanco para usar uno predeterminado, pero se recomienda encarecidamente obtener uno propio. Vaya a https://shlink.io/documentation/geolite-license-key para saber cómo obtenerlo): clave de licencia

Si desea utilizar GeoLite2, deberá crear una cuenta en MaxMind y crear una clave. Puede encontrar una guía para hacer esto en la documentación de MaxMind GeoLite2. Una vez hecho esto, reemplace e ingrese su clave en la configuración de Shlink.

A continuación, tendrá la opción de configurar la redirección 301 o 302. Debe usar 301, o de lo contrario su SEO, como sugiere el software, puede verse afectado de varias maneras.

Seguimiento

Después de configurar 301 como su redirección permanente, la siguiente página que verá es el seguimiento. La mayoría de las configuraciones predeterminadas están bien, y si se encuentra en la UE o tiene visitantes de la UE, debe anonimizar sus datos, lo que afortunadamente Shlink puede hacer por usted.

Configuración de ejemplo a continuación:

Las opciones ingresadas en resumen:

  • ¿Quiere hacer un seguimiento de las visitas de los huérfanos? (visitas a la URL base, URL cortas no válidas u otras URL "no encontradas"): si
  • Proporcione un nombre de parámetro que podrá usar para inhabilitar el seguimiento en una solicitud específica a URL cortas (déjelo en blanco y esta función no estará habilitada):
  • ¿Desea desactivar por completo el seguimiento de visitas?: no
  • ¿Desea desactivar el seguimiento de las direcciones IP de los visitantes?: no
  • ¿Desea deshabilitar el seguimiento de los "User Agents" de los visitantes?: si
  • ¿Desea anonimizar las direcciones IP remotas de los visitantes antes de almacenarlas en la base de datos?: si
  • ¿Desea desactivar el seguimiento de los "agentes de usuario" de los visitantes? :no
  • ¿Desea inhabilitar el seguimiento de los "remitentes" de los visitantes? (sí/no) :no

Redirecciones

La configuración de redirección es bastante fácil. La mejor opción es vincular todo a su página de inicio para cualquier error 404/no encontrado que pueda ocurrir en su sitio web. Ejemplo a continuación:

Las opciones ingresadas en resumen:

  • URL personalizada para redirigir cuando un usuario accede a la URL base de Shlink (si no se proporciona ningún valor, el usuario verá una página predeterminada "404 no encontrado"): https://www.ejemplo.com
  • URL personalizada para redirigir cuando un usuario accede a una URL corta no válida (si no se proporciona ningún valor, el usuario verá una página predeterminada "404 no encontrado"): https://www.ejemplo.com
  • URL personalizada para redirigir cuando un usuario accede a una URL no encontrada que no sea una URL corta no válida (si no se proporciona ningún valor, el usuario verá una página predeterminada "404 no encontrado"): https://www.ejemplo.com

Solicitud

En las opciones de la aplicación, puede habilitar una verificación de seguridad, que ahora permitirá que las URL cortas se eliminen después de una cierta cantidad de visitas, además de configurar la ruta desde la cual se servirá Shlink si no la ruta raíz:

Las opciones ingresadas en resumen:

  • ¿Desea habilitar una verificación de seguridad que no permita que se eliminen las URL cortas después de recibir una cantidad específica de visitas?: si
  • ¿Cuál es la cantidad de visitas de las que el sistema no permitirá eliminar URLs cortas?: 15
  • ¿Cuál es la ruta desde la que se servirá shlink? (Deje en blanco si planea servir shlink desde la raíz del dominio):

Tenga en cuenta que puede modificar el 15 a algo más grande o más pequeño dependiendo de su sitio, principalmente en torno al tráfico.

Integraciones

Shlink solo tiene una integración:Redis, que puede configurar a continuación en una instancia única o de clúster. Se recomienda usar un solo servidor para Redis hasta que esté muy familiarizado con la agrupación en clústeres, la fragmentación y la replicación de Redis, ya que es bastante profundo, y el sitio web promedio pequeño a mediano no debería necesitar esto a menos que reciba grandes cargas de tráfico.

En la guía, lo dejamos en blanco, pero si lo usara en el servidor local, escriba 127.0.1.1:6379.

Felicitaciones, ha instalado Shlink en Ubuntu 20.04.

Ejemplo de bloque de servidor Nginx

Para usar Shlink con Nginx, deberá configurar su bloque de servidor. Puede hacerlo copiando y pegando la siguiente configuración y modificándola para adaptarla a sus necesidades con HTTPS o no:

server {
   listen 80;
   listen [::]:80;
   server_name www.linuxcapable.com

   root /var/www/html/shlink/public;
   error_log /var/log/nginx/shlink.error;
   access_log /var/log/nginx/shlink.access;

   index index.php index.html index.htm index.nginx-debian.html;

   location / {
     # try to serve file directly, fallback to app.php
     try_files $uri /index.php$is_args$args;
   }

   # redirect some entire folders
     rewrite ^/(vendor|translations|build)/.* /index.php break;

   location ~ \.php$ {
     fastcgi_split_path_info ^(.+\.php)(/.+)$;
     fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
     fastcgi_index index.php;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     include fastcgi_params;
   }

}

Antes de reiniciar su servidor Nginx, realice una ejecución en seco ingresando el siguiente código:

sudo nginx -t

Debería recibir el siguiente resultado:

nginx: the configuration file /etc/nginx/my-server.conf syntax is ok
nginx: configuration file /etc/nginx/my-server.conf test is successful

Si todo está bien, reinicie su servidor Nginx como se muestra a continuación:

sudo systemctl restart nginx

Crear enlaces cortos

Para crear enlaces cortos con Shlink, primero debe crear una clave API ejecutando el comando PHP:

sudo -u www-data php7.4 /var/www/shlink/html/bin/cli api-key:generate

Una vez que tenga su clave API, debe visitar Shlink.io para registrar su servidor.

Ingrese el nombre del servidor, la URL del servidor y la clave API como el ejemplo a continuación:

Ahora puede agregar enlaces cortos usando WebUI de Shlink si lo prefiere. Recuerde que estos se almacenan en su servidor:

La opción más común es usar los comandos de la terminal para generar URL cortas.

Para hacer esto, ejecute el siguiente comando:

sudo -u www-data /var/www/html/shlink/bin/cli short-url:generate

Para enumerar las URL cortas que se generan, use el siguiente comando:

sudo -u www-data /var/www/html/shlink/bin/cli short-url:list

Para buscar ayuda, ejecute el siguiente comando:

sudo -u www-data php /var/www/html/shlink/bin/cli

Salida de ejemplo:

Usage:
  command [options] [arguments]

Options:
  -h, --help            Display this help message
  -q, --quiet           Do not output any message
  -V, --version         Display this application version
      --ansi            Force ANSI output
      --no-ansi         Disable ANSI output
  -n, --no-interaction  Do not ask any interactive question
  -v|vv|vvv, --verbose  Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug

Available commands:
  help                Displays help for a command
  list                Lists commands
 api-key
  api-key:disable     Disables an API key.
  api-key:generate    Generates a new valid API key.
  api-key:list        Lists all the available API keys.
 db
  db:create           Creates the database needed for shlink to work. It will do nothing if the database already exists
  db:migrate          Runs database migrations, which will ensure the shlink database is up to date.
 short-url
  short-url:delete    Deletes a short URL
  short-url:generate  Generates a short URL for provided long URL and returns it
  short-url:list      List all short URLs
  short-url:parse     Returns the long URL behind a short code
  short-url:visits    Returns the detailed visits information for provided short code
 tag
  tag:create          Creates one or more tags.
  tag:delete          Deletes one or more tags.
  tag:list            Lists existing tags.
  tag:rename          Renames one existing tag.
 visit
  visit:locate        Resolves visits origin locations.

Ubuntu
  1. Cómo instalar WordPress con Nginx en Ubuntu 18.04

  2. Cómo instalar phpMyAdmin con Nginx en Ubuntu 18.04

  3. Cómo instalar MediaWiki con Nginx en Ubuntu 16.04

  4. Cómo instalar Grav CMS con Nginx en Ubuntu 16.04

  5. Cómo instalar el acortador de URL Shlink con Nginx en Ubuntu 20.04

Cómo instalar el acortador de URL Polr en Ubuntu 20.04

Cómo instalar Nginx con ModSecurity en Ubuntu 15.04

Cómo instalar WordPress 5.x con Nginx en Ubuntu 18.04 / Ubuntu 16.04

Cómo instalar el acortador de URL Shlink en el servidor Ubuntu 20.04

Cómo instalar el acortador de URL Shlink en el servidor Ubuntu 18.04

Cómo instalar Nextcloud 13 en Ubuntu 16.04 con Nginx