Comment installer le raccourcisseur d’URL auto-hébergé YOURLS sur CentOS 8

YOURLS est un raccourcisseur d’URL gratuit, open-source et auto-hébergé écrit en PHP. Il est très similaire à TinyURL ou Bitly et te permet de gérer ton propre service de raccourcissement d’URL. Il te permet aussi d’ajouter une image de marque à tes URL courtes. Il offre un riche ensemble de fonctionnalités, notamment : lien privé et public, mots-clés d’URL personnalisés, rapports historiques de clics, interface Ajax, prise en charge de Jsonp et bien d’autres encore.

Dans ce tutoriel, nous allons te montrer comment installer YOURLS sur CentOS 8 avec Let’s Encrypt SSL.

Conditions préalables

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

Installer le serveur LEMP

Tout d’abord, tu dois installer Nginx, MariaDB, PHP et les extensions PHP requises dans ton serveur. Tu peux tous les installer avec la commande suivante :

dnf install nginx mariadb-server php php-fpm php-json php-common php-mysqlnd php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath git unzip wget -y

Une fois que tous les paquets sont installés, modifie le fichier de configuration de PHP-FPM /etc/php-fpm.d/www.conf et change l’utilisateur d’apache en nginx :

nano /etc/php-fpm.d/www.conf

Change les lignes suivantes :

user = nginx
group = nginx

Enregistre et ferme le fichier puis démarre le service Nginx, MariaDB, PHP-FPM et active leur démarrage au redémarrage du système avec la commande suivante :

systemctl start nginx
systemctl enable nginx
systemctl start mariadb
systemctl enable mariadb
systemctl start php-fpm
systemctl enable php-fpm

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Crée une base de données pour YOURLS

Ensuite, tu devras créer une base de données et un utilisateur pour YOURLS. 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 yourlsdb;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON yourlsdb.* TO 'yourlsuser'@'localhost' IDENTIFIED BY 'password';

Ensuite, supprime les privilèges et sors de MariaDB avec la commande suivante :

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> \q

À ce stade, MariaDB est installé et configuré.

Installer YOURLS

Tout d’abord, change le répertoire en racine web Nginx et télécharge la dernière version de YOURLS avec la commande suivante :

cd /var/www/html
git clone https://github.com/YOURLS/YOURLS.git

Ensuite, renomme le fichier de configuration de l’échantillon avec la commande suivante :

cd YOURLS/user/
cp config-sample.php config.php

Ensuite, modifie le fichier config.php et définis tes paramètres de base de données :

nano config.php

Change les lignes suivantes :

/** MySQL database username */
define( 'YOURLS_DB_USER', 'yourlsuser' );
 
/** MySQL database password */
define( 'YOURLS_DB_PASS', 'password' );
 
/** The name of the database for YOURLS
 ** Use lower case letters [a-z], digits [0-9] and underscores [_] only */
define( 'YOURLS_DB_NAME', 'yourlsdb' );
 
/** MySQL hostname.
 ** If using a non standard port, specify it like 'hostname:port', eg. 'localhost:9999' or '127.0.0.1:666' */
define( 'YOURLS_DB_HOST', 'localhost' );
 
/** MySQL tables prefix
 ** YOURLS will create tables using this prefix (eg `yourls_url`, `yourls_options`, ...)
 ** Use lower case letters [a-z], digits [0-9] and underscores [_] only */
define( 'YOURLS_DB_PREFIX', 'yourls_' );
 
define( 'YOURLS_SITE', 'http://yourls.example.com' );
$yourls_user_passwords = array(
        'admin' => 'yourpassword',

Sauvegarde et ferme le fichier lorsque tu as terminé. Ensuite, crée un fichier .htaccess avec la commande suivante :

nano /var/www/html/YOURLS/.htaccess

Ajoute les lignes suivantes :

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /yourls-loader.php [L]
</IfModule>

Sauvegarde et ferme le fichier puis donne les autorisations et la propriété appropriées avec la commande suivante :

chown -R nginx:nginx /var/www/html/YOURLS
chmod -R 775 /var/www/html/YOURLS

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Configure Nginx pour YOURLS

Ensuite, crée un nouveau fichier de configuration d’hôte virtuel Nginx pour YOURLS :

nano /etc/nginx/conf.d/yourls.conf

Ajoute les lignes suivantes :

server {
  listen 80;
  server_name yourls.example.com;
  root /var/www/html/YOURLS;
  index index.php index.html index.htm;
  location / {
    try_files $uri $uri/ /yourls-loader.php$is_args$args;
  }

  location ~ \.php$ {
    include fastcgi.conf;

    fastcgi_index index.php;
    fastcgi_pass unix:/run/php-fpm/www.sock;
  }
}

Enregistre et ferme le fichier puis redémarre le service Nginx et PHP-FPM avec la commande suivante :

systemctl restart nginx
systemctl restart php-fpm

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

systemctl status nginx

Tu devrais obtenir la sortie suivante :

? nginx.service - The nginx HTTP and reverse proxy server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
  Drop-In: /usr/lib/systemd/system/nginx.service.d
           ??php-fpm.conf
   Active: active (running) since Tue 2020-10-20 09:37:40 EDT; 5min ago
  Process: 12864 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
  Process: 12862 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
  Process: 12860 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
 Main PID: 12871 (nginx)
    Tasks: 3 (limit: 12523)
   Memory: 5.5M
   CGroup: /system.slice/nginx.service
           ??12871 nginx: master process /usr/sbin/nginx
           ??12872 nginx: worker process
           ??12873 nginx: worker process

Oct 20 09:37:40 centos systemd[1]: Stopped The nginx HTTP and reverse proxy server.
Oct 20 09:37:40 centos systemd[1]: Starting The nginx HTTP and reverse proxy server...
Oct 20 09:37:40 centos nginx[12862]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
Oct 20 09:37:40 centos nginx[12862]: nginx: configuration file /etc/nginx/nginx.conf test is successful
Oct 20 09:37:40 centos systemd[1]: Started The nginx HTTP and reverse proxy server.

Configurer SELinux et le pare-feu

Par défaut, SELinux est activé dans CentOS 8. Tu devras donc le configurer pour ton site Web YOURLS.

Tu peux configurer SELinux à l’aide de la commande suivante :

setsebool httpd_can_network_connect on -P
chcon -R -u system_u -t httpd_sys_rw_content_t -r object_r /var/www/html/YOURLS

Ensuite, autorise les ports 80 et 443 à travers le pare-feu avec la commande suivante :

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

Une fois que tu as terminé, tu peux passer à l’étape suivante.

Accède à YOURLS

Maintenant, ouvre ton navigateur Web et accède à YOURLS en utilisant l’URL http://yourl s.example.com/admin. Tu devrais voir la page suivante :

YOURLS

Clique sur le bouton Installer YOURLS. Tu devrais voir la page suivante :

YOURLS Installateur

clique sur la « Page d’administration de YOURLS« . Tu devrais voir la page de connexion de YOURLS :

Connexion

Indique ton nom d’utilisateur et ton mot de passe d’administrateur que tu as définis dans le fichier config.php puis clique sur le bouton Connexion. Tu devrais voir le tableau de bord de YOURLS sur la page suivante :

Tableau de bord d'administration de YOURLS

Sécurise YOURLS avec Let’s Encrypt SSL

Ensuite, tu devras installer l’utilitaire Certbot dans ton système pour télécharger et installer Let’s Encrypt SSL pour ton site Web YOURLS.

Tu peux installer le client Certbot avec la commande suivante :

wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

Ensuite, obtiens et installe un certificat SSL pour ton site Web YOURLS avec la commande suivante :

certbot-auto --nginx -d yourls.example.com

La commande ci-dessus va d’abord installer toutes les dépendances requises sur ton serveur. Une fois installé, il te sera demandé de fournir une adresse e-mail et d’accepter les conditions de service comme indiqué ci-dessous :

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to

cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y

Obtaining a new certificate
Performing the following challenges:
http-01 challenge for yourls.example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/yourls.conf

Choisis si tu veux rediriger le trafic HTTP vers HTTPS ou non comme indiqué ci-dessous :

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for

new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Tape 2 et appuie sur Entrée pour continuer. Une fois l’installation terminée avec succès, tu devrais obtenir le résultat suivant :

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/yourls.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://yourls.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=yourls.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/yourls.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/yourls.example.com/privkey.pem
   Your cert will expire on 2020-06-11. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again with the "certonly" option. To non-interactively renew *all*
   of your certificates, run "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Tu peux maintenant accéder au site Web de YOURLS en toute sécurité en utilisant l’URL https://yourl s.example.com.

Conclusion

Félicitations ! Tu as réussi à installer YOURLS avec Nginx et Let’s Encrypt SSL sur CentOS 8. Tu peux maintenant héberger ton propre raccourcisseur d’URL facilement avec YOURLS. N’hésite pas à me demander si tu as des questions.

Vous aimerez aussi...