Installation de lstu qui sera esi.link
lstu signifie « Let's Shorten That Url ». C'est un raccourcisseur d'url. Le plus connu étant TinyUrl. Il y a ensuite eu goo.gl par exemple qui mémorise bien gentiment les urls raccourcies. Chaque réseau social a également ce type de service. Dès lors qu'un service raccourci une url, il la connait, c'est sans doute une bonne idée de prendre un peu d'indépendance.
Prendre son indépendance.
C'est ce que propose Framasoft avec son service huit.re « La perle des raccourcisseurs d'url » (ça ne s'invente pas) basé sur lstu justement.
Voyons voir un peu plus en détails comment l'installer. La procédure d'installation de lstu est assez sommaire, elle mérite un complément d'infos.
Je commence par créer un utilisateur lstu
histoire que ce ne soit pas root
qui fasse tourner le script. C'est aussi mieux de séparer les pouvoirs. Je
retirerai son shell à lstu un peu plus tard.
Je suis ensuite la procédure proposée par Luc Didry le développeur de lstu.
Installation de Carton (une sorte de gestionnaire de « paquets » pour perl)
cpan Carton
Comme ce sera une sorte de service web, je décide d'installer la chose dans
/var/www
. Je crée un répertoire pour l'occasion et je l'attribue à lstu. Je
peux ensuite y cloner le repository git et installer lstu comme indiqué
ci-dessous.
git clone https://git.framasoft.org/luc/lstu.git
cd lstu
carton install
cp lstu.conf.template lstu.conf
vim lstu.conf
Avant de lancer le script, je passe en revue le fichier de configuration afin de l'adapter à mes besoins et mes paramètres. Il reste ensuite à « lancer le script » avec la commande suivante.
carton exec hypnotoad script/lstu
lstu fonctionne localement. Le tuto officiel, s'arrête plus ou moins là.
— Oui mais ce que je veux c'est que le service soit dispo à l'adresse
example.org
et pas en 127.0.0.1:8080
!
Pour ce faire, il faut configurer apache (ou nginx si tu préfères mais dans la suite, ça parle de apache) pour qu'il fasse le lien entre le « service web » et l'application perl qui tourne derrière. Il faut donc lier le service avec le nom de domaine et le rendre disponible sur le port 80 en configurant le reverse proxy.
Mise en place du reverse proxy
Supposons qu'il y a déjà un serveur web fonctionnel sur le machine et que ce soit Apache2.
Avant toute chose, rendre les modules mod_proxy et mod_proxy_http disponibles afin que le serveur web puisse jouer ce rôle de reverse proxy c'est-à-dire permettre de rediriger une requête web vers un service local (ou interne). Pour rendre les modules dispo, cette commande suffit
a2enmod proxy_http
Il faut ensuite configurer le virtual host correspondant au nom de domaine
que l'on veut utiliser pour rediriger le service. Pour ce faire, ajoutez un
fichier example.org.conf
dans /etc/apache2/sites-available
à l'allure
suivante (en passant, n'oubliez pas de rediriger le nom de domaine vers l'IP du
serveur hébergeant le service lstu):
<VirtualHost *:80>
ServerName http://example.org
ServerAdmin webmaster@elsewhere
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080
ProxyPassReverse / http:/example.org
LogLevel info
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# Local reverse proxy authorization override
# Most unix distribution deny proxy by default
<Proxy http://127.0.0.1:8080/*>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
Après avoir demandé à apache de tenir compte de ce nouveau site (via
a2ensite example.org
), reloader le serveur.
Lancement via systemd
Je ne reprends pas ici la manière de faire pour permettre de lancer un script
au démarrage à la Sys V puisque le futur semble être systemd (un peu de
doc et de pages de manuel comme mise en
bouche ou pour les détails un peu plus tard).
Avec systemd, il faut ajouter un fichier lstu.service
dans
/lib/systemd/system
.
Ce fichier aura la forme suivante:
[Unit]
Description=lstu, Let's Shorten That Url
Documentation=https://github.com/ldidry/lstu
[Service]
User=lstu
Type=forking
WorkingDirectory=/var/www/example.org
ExecStart=/usr/local/bin/carton exec hypnotoad script/lstu
[Install]
WantedBy=multi-user.target
Ce fichier demande à systemd de lancer lstu. Il reste à demander à systemd de lancer le service au boot de la machine.
systemctl enable /lib/systemd/system/lstu.service
Relooking de la page
Pour changer un peu le style de la page, c'est dans les répertoires templates et public que ça se passe. La mise en page utilise Twitter Bootstrap.
Il suffit de modifier un peu le fichier templates/layouts/default.html.ep
et
l'on obtient un résultat déjà très concluant.
Pour tester le service, c'est là esi.link.
Quant à moi, il me reste à retirer le shell de l'utilisateur lstu.
Et à la fin de la rédaction de cette page, je viens de tomber sur ce lien un peu plus détaillé également.
Crédit photo chez DeviantArt par EastMonke. Un bon gros lien bien gros, bien gras qui devient un joli petit lien.