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.