Comment installer le raccourcisseur d’URL Shlink avec Nginx sur Ubuntu 20.04

Shlink est un raccourcisseur d’URL open-source et auto-hébergé écrit en PHP. Il permet de générer et de gérer des URL courtes à partir de la ligne de commande. Il te permet de suivre toutes les visites de tes URL courtes, y compris l’emplacement, le navigateur ou le référent. Il peut être intégré à des outils tiers à l’aide de l’API Shlink. Il fournit une interface en ligne de commande pour raccourcir les URL.

Dans ce tutoriel, je vais te montrer comment installer Shlink sur Ubuntu 20.04.

Conditions préalables

  • Un serveur exécutant Ubuntu 20.04.
  • Un nom de domaine valide pointé avec l’IP de ton serveur.
  • Un mot de passe root est configuré sur le serveur.

Pour commencer

Tout d’abord, mets les paquets système à la version mise à jour en exécutant la commande suivante :

apt-get update -y

Une fois que tous les paquets sont mis à jour, tu peux passer à l’étape suivante.

Installe le serveur LEMP

Tout d’abord, installe les paquets Nginx, PHP, MariaDB et les autres paquets requis en exécutant la commande suivante :

apt-get install nginx mariadb-server php-apcu php7.4 php7.4-fpm php7.4-mysql php7.4-gd php7.4-common php7.4-curl php7.4-intl php7.4-gmp php7.4-xml php-dev php-pear unzip -y

Une fois que tous les paquets sont installés, tu peux passer à l’étape suivante.

Créer la base de données Shlink

Shlink utilise MariaDB comme backend de base de données. Tu devras donc créer une base de données et un utilisateur pour Shlink. Tout d’abord, connecte-toi à MariaDB avec la commande suivante :

mysql

Une fois connecté, crée une base de données et un utilisateur avec la commande suivante :

MariaDB [(none)]> CREATE DATABASE shlink;
MariaDB [(none)]> GRANT ALL ON shlink.* TO 'shlink'@'localhost' IDENTIFIED BY 'password';

Ensuite, vide les privilèges et quitte la MariaDB avec la commande suivante :

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Télécharger Shlink

Tout d’abord, télécharge la dernière version de Shlink depuis leur page de téléchargement officielle :

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

Une fois le téléchargement terminé, décompresse le fichier téléchargé avec la commande suivante :

unzip shlink2.7.1_php7.4_dist.zip

Ensuite, déplace le répertoire extrait dans le répertoire racine du site Web de Nginx :

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

Ensuite, définis les autorisations et la propriété appropriées avec la commande suivante :

chown -R www-data:www-data /var/www/html/shlink/
chmod -R 755 /var/www/html/shlink/

Installe Shlink

Ensuite, exécute la commande suivante pour lancer l’installation :

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

Tu seras invité à sélectionner la base de données comme indiqué ci-dessous :

 Welcome to Shlink!!
 This tool will guide you through the installation process.

DATABASE
========

 Select database type [MySQL]:
  [0] MySQL
  [1] MariaDB
  [2] PostgreSQL
  [3] MicrosoftSQL
  [4] SQLite
 > 1

Choisis une option et appuie sur Entrée. Il te sera demandé de fournir le nom de la base de données comme indiqué ci-dessous :

 Database name [shlink]:
 > 

Indique ton nom de base de données ou appuie sur Entrée pour choisir la valeur par défaut. Il te sera demandé de fournir l’hôte de la base de données :

 Database host [localhost]:
 > 

Indique l’hôte de ta base de données ou appuie sur Entrée pour choisir la valeur par défaut. Il te sera demandé de fournir le port de la base de données :

 Database port [3306]:
 > 

Indique le port de ta base de données ou appuie sur Entrée pour choisir la valeur par défaut. Il te sera demandé de fournir ton nom d’utilisateur pour la base de données :

 Database username:
 > shlink

Indique le nom d’utilisateur de ta base de données et appuie sur Entrée. Tu devras fournir le mot de passe de l’utilisateur de la base de données :

 Database password:
 > password

Indique le mot de passe de l’utilisateur de ta base de données et appuie sur Entrée. Il te sera demandé de fournir le socket Unix.

 Unix socket (leave empty to not use a socket):
 > 

Laisse-le vide et appuie sur Entrée. Il te sera demandé de fournir le nom de domaine :

URL SHORTENER
=============

 Default domain for generated short URLs:
 > shlink.linuxbuz.com

Indique ton nom de domaine et appuie sur Entrée. Il te sera demandé de sélectionner le schéma :

 Select schema for generated short URLs [http]:
  [0] http
  [1] https
 > 0

Choisis une option et appuie sur Entrée. Il te sera demandé de valider les URL longues :

 Do you want to validate long urls by 200 HTTP status code on response? (yes/no) [yes]:
 > 

Choisis l’option par défaut et appuie sur Entrée. Il te sera demandé de fournir la longueur des shortcodes générés :

 What is the default length you want generated short codes to have? (You will still be able to override this on every created short URL) [5]:
 > 

Choisis la valeur par défaut et appuie sur Entrée. Tu devrais voir la sortie suivante :

 Do you want Shlink to resolve the short URL title based on the long URL 's title tag (if any)? Otherwise, it will be kept empty unless explicitly provided. (yes/no) [no]:
 > 

Choisis la réponse par défaut et appuie sur Entrée. Tu devrais voir le résultat suivant :

 Provide a GeoLite2 license key. (Leave empty to use default one, but it is strongly recommended to get your own. Go to https://shlink.io/documentation/geolite-license-key to know how to get it):
 > 

Laisse-le vide et appuie sur Entrée. Tu devrais voir le résultat suivant :

 What kind of redirect do you want your short URLs to have? [All visits will always be tracked. Not that good for SEO.]:
  [302] All visits will always be tracked. Not that good for SEO.
  [301] Best option for SEO. Redirect will be cached for a short period of time, making some visits not to be tracked.
 > 301

Choisis n’importe quelle option et appuie sur Entrée. Tu devrais voir le résultat suivant :

 How long (in seconds) do you want your redirects to be cached by visitors? [30]:
 > 

Choisis les valeurs par défaut et appuie sur Entrée. Tu devrais voir le résultat suivant :

TRACKING
========

 Do you want track orphan visits? (visits to the base URL, invalid short URLs or other "not found" URLs) (yes/no) [yes]:
 > 

Choisis l’option par défaut et appuie sur Entrée. Tu devrais voir le résultat suivant :

 Provide a parameter name that you will be able to use to disable tracking on specific request to short URLs (leave empty and this feature won't be enabled):
 > 

Appuie sur Entrée. Tu devrais voir le résultat suivant :

 Do you want to completely disable visits tracking? (yes/no) [no]:
 > 

Choisis l’option par défaut et appuie sur Entrée. Tu devrais voir le résultat suivant :

 Do you want to disable tracking of visitors' IP addresses? (yes/no) [no]:
 > 

Choisis l’option par défaut et appuie sur Entrée. Tu devrais voir le résultat suivant :

 Do you want visitors' remote IP addresses to be anonymized before persisting them to the database? (yes/no) [yes]:
 > 

Choisis l’option par défaut et appuie sur Entrée. Tu devrais voir le résultat suivant :

 Do you want to disable tracking of visitors' "User Agents"? (yes/no) [no]:
 > 

Choisis l’option par défaut et appuie sur Entrée. Tu devrais voir le résultat suivant :

 Do you want to disable tracking of visitors' "Referrers"? (yes/no) [no]:
 > 

Choisis l’option par défaut et appuie sur Entrée. Tu devrais voir le message suivant :

REDIRECTS
=========

 Custom URL to redirect to when a user hits Shlink's base URL (If no value is provided, the user will see a default "404 not found" page):
 > http://shlink.linuxbuz.com

Indique ton nom de domaine et appuie sur Entrée. Tu devrais voir le résultat suivant :

 Custom URL to redirect to when a user hits an invalid short URL (If no value is provided, the user will see a default "404 not found" page):
 > http://shlink.linuxbuz.com

Indique ton nom de domaine et appuie sur Entrée. Tu devrais voir le message suivant :

 Custom URL to redirect to when a user hits a not found URL other than an invalid short URL (If no value is provided, the user will see a default "404 not found" page):
 > http://shlink.linuxbuz.com

Indique ton nom de domaine et appuie sur Entrée. Tu devrais voir le message suivant :

APPLICATION
===========

 Do you want to enable a safety check which will not allow short URLs to be deleted after receiving a specific amount of visits? (yes/no) [yes]:
 > 

Choisis l’option par défaut et appuie sur Entrée. Tu devrais voir le résultat suivant :

 What is the amount of visits from which the system will not allow short URLs to be deleted? [15]:
 > 

Choisis l’option par défaut et appuie sur Entrée. Tu devrais voir le résultat suivant :

 What is the path from which shlink is going to be served? (Leave empty if you plan to serve shlink from the root of the domain) []:
 > 

Choisis l’option par défaut et appuie sur Entrée. Tu devrais voir le résultat suivant :

INTEGRATIONS
============

 Provide a comma-separated list of redis server URIs which will be used for shared caching purposes under shlink multi-instance contexts (Leave empty if you don't want to use redis cache):
 > 

 Custom configuration properly generated!

Initializing database... Success!
Updating database... Success!
Generating proxies... Success!
Downloading GeoLite2 db file... Success!

                                                                                                                        
 [OK] Installation complete!                                                                                                                                                            

Configurer Nginx pour Shlink

Ensuite, tu devras créer un fichier d’hôte virtuel Nginx pour Shlink. Tu peux le créer avec la commande suivante :

nano /etc/nginx/conf.d/shlink.conf

Ajoute les lignes suivantes :

server {
   listen 80;
   server_name shlink.example.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/php7.4-fpm.sock;
     fastcgi_index index.php;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
     include fastcgi_params;
   }

}

Sauvegarde et ferme le fichier puis vérifie que Nginx n’a pas d’erreur avec la commande suivante :

nginx -t

Tu devrais obtenir le résultat suivant :

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

Ensuite, redémarre le service Nginx pour appliquer les modifications :

systemctl restart nginx

Tu peux aussi vérifier l’état de Nginx avec la commande suivante :

systemctl status nginx

Tu devrais obtenir le résultat suivant :

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2021-06-02 05:28:30 UTC; 4s ago
       Docs: man:nginx(8)
    Process: 25639 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 25653 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 25655 (nginx)
      Tasks: 2 (limit: 2353)
     Memory: 2.6M
     CGroup: /system.slice/nginx.service
             ??25655 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ??25656 nginx: worker process

Jun 02 05:28:29 ubuntu2004 systemd[1]: Starting A high performance web server and a reverse proxy server...
Jun 02 05:28:30 ubuntu2004 systemd[1]: Started A high performance web server and a reverse proxy server.

Tu peux maintenant installer le client Shlink pour raccourcir l’URL.

Tu peux aussi générer l’URL courte sur ton serveur à partir de la ligne de commande :

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

Pour répertorier toutes les URL courtes, exécute la commande suivante :

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

Pour afficher les informations d’aide, exécute la commande suivante :

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

Conclusion

Félicitations ! Tu as installé avec succès le raccourcisseur d’URL Shlink sur Ubuntu 20.04. Tu peux maintenant raccourcir des URL en utilisant l’interface CLI ou le client Web.

Vous aimerez aussi...