Shlink je bezplatný, open-source hostovaný zkracovač adres URL napsaný v PHP, který poskytuje rozhraní REST i CLI pro interakci s ním za účelem generování a správy krátkých URL. Jednou z hlavních funkcí a zkrácení URL je, že můžete sledovat všechny návštěvy těchto generovaných URL, jako je umístění, prohlížeč, referrer a mnoho dalšího. Oficiální webový klient Shlink navíc používá rozhraní REST API Shlink a poskytuje uživateli volitelné webové uživatelské rozhraní.
Na konci průvodce budete vědět, jak nainstalovat Shlink URL Shortner na váš server Ubuntu 20.04 LTS Focal Fossa pomocí Nginx . Stejný princip bude fungovat pro server novější verze Ubuntu 21.04 (Hirsute Hippo).
Předpoklady
- Doporučený operační systém: Ubuntu 20.04 – volitelné (Ubuntu 21.04 a Linux Mint 20).
- Uživatelský účet: Uživatelský účet s přístupem sudo nebo root.
- Požadované balíčky: mariadb php7.4 nebo php8.0 nainstalované a nakonfigurované.
- Další balíčky: curl wget unzip.
Zkontrolujte a upgradujte svůj operační systém Ubuntu.
sudo apt update && sudo apt upgrade -y
Dále nainstalujte požadované balíčky pro tuto příručku:
sudo apt install curl wget unzip
Stáhnout archiv Shlink
Prvním krokem je navštívit stránku Shlink Github a podívat se na nejnovější stabilní verzi. V době vydání této příručky je aktuální stabilní verze 2.7.1. To se však v budoucnu změní. Shlink se dodává ve 3 verzích pro PHP 7.4, PHP 8.0 a zdrojový kód.
Chcete-li stáhnout Shlink, 2.7.1, spusťte následující příkaz:
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
Zdrojový kód:
wget https://github.com/shlinkio/shlink/archive/refs/tags/v2.7.1.zip
Pro účely průvodce bude následovat příklad stažení PHP 7.4. Dalším krokem je použití (rozbalení) příkaz k rozbalení archivu do vašeho (/var/www/html) adresář.
sudo unzip shlink2.7.1_php7.4_dist.zip -d /var/www/html
Extrahovanou složku byste měli přejmenovat, abyste si usnadnili život provedením následujícího příkazu:
sudo mv /var/www/html/shlink2.7.1_php7.4_dist/ /var/www/html/shlink
Než budete pokračovat, doporučujeme nastavit oprávnění adresáře na (www-data) uživatel jako aktuálně je nastaven jako (root) . Chcete-li to provést, zadejte a zadejte následující (chown) příkaz:
sudo chown -R www-data:www-data /var/www/html/shlink/
Vytvořte novou databázi MariaDB a uživatele pro Shlink
Dalším krokem je vytvoření nové databáze a vyhrazeného nového uživatele s pouze oprávněním pro přístup k této databázi. Nedoporučuje se používat root nebo stejný uživatelský účet na více databázích, pokud je jedna kompromitována.
Průvodce nainstaloval MariaDB a seznámil se s níže uvedenou terminologií.
Vstupte do terminálové konzoly MariaDB/MySQL provedením příkazu root:
sudo mysql -u root
Dále vytvořte novou databázi pro Shlink pomocí následujícího příkazu terminálu:
CREATE DATABASE shlink;
Po vytvoření databáze vytvořte nový uživatelský účet a udělte mu přístup do databáze Shlink. Pokud hostujete Nginx, PHP a MariaDB na stejném serveru, ponechte (localhost) . Pokud používáte sekundární server k hostování MariaDB na interním nebo externím serveru, zadejte (IP adresa) na místě (localhost) .
GRANT ALL ON shlink.* TO 'shlinkuser'@'localhost' IDENTIFIED BY 'password';
Chcete-li provést změny, musíte vyprázdnit oprávnění:
FLUSH PRIVILEGES;
Terminál MariaDB ukončíte provedením následujícího příkazu:
EXIT;
Nainstalujte nejnovější verzi a rozšíření PHP 7.4
V rámci požadavků je vyžadováno PHP 7.4 nebo 8.0. Shlink potřebuje určitá rozšíření, aby software fungoval pomocí PHP. Je to ideální pro ujištění se, že PHP je aktuální. Důrazně doporučujeme vlastní PPA od Ondřeje, správce a PHP pro Debian.
Níže průvodce přidá úložiště a nainstaluje rozšíření PHP požadovaná pro PHP 7.4. Pokud chcete nainstalovat PHP 8.0, změňte 7.4 na 8.0 nebo navštivte náš oficiální Výukový program Jak nainstalovat PHP 8.0 na Ubuntu 20.04 .
Nainstalujte vlastní PHP PPA od ondrey:
sudo apt install software-properties-common && sudo add-apt-repository ppa:ondrej/php -y
Po přidání úložiště spusťte následující příkaz pro aktualizaci nebo instalaci nejnovějšího softwaru PHP 7.4:
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
Abyste se ujistili, že PHP 7.4 po instalaci nebo aktualizaci běží správně, zadejte následující:
sudo systemctl status php7.4-fpm
Příklad výstupu:
Instalace Shlink
Nyní můžete pokračovat v instalaci instalačního skriptu PHP Shlink jako (www-user) provedením následujícího příkazu PHP ve vašem terminálu Ubuntu:
sudo -u www-data php7.4 /var/www/html/shlink/bin/install
Okamžitě zjistíte, že se díváte na novou obrazovku, která vás požádá o zadání údajů o databázi.
Databáze
V průvodci si vyberete MariaDB; pokud se však chcete vrátit a nastavit jiný volitelný databázový software, určitě to můžete udělat.
Jak je uvedeno níže, příklad vytvoření Shlink nastaveného pomocí MariaDB:
Souhrnně zadané možnosti:
- Vyberte typ databáze: 1 (MariaDB)
- Název databáze: shlink
- Port databáze: 3306
- Uživatelské jméno databáze: shlinkuser
- Heslo databáze:
- Socket Unix:
- Socket Unix:
Zkratka adres URL
Na další obrazovce najdete další stránku možností. Zde najdete konkrétní HTTP nebo HTTPS, název domény a některé možnosti Shlink URL. Příklad nastavení níže:
Souhrnně zadané možnosti:
- Výchozí doména pro generované krátké adresy URL:
- Vyberte schéma pro generované krátké adresy URL: HTTPS (Pokud nepoužíváte SSL, použijte HTTP)
- Chcete ověřit dlouhé adresy URL 200 stavovým kódem HTTP v odpovědi? (ano/ne): ano
- Jaká je výchozí délka, kterou mají mít vygenerované krátké kódy? (Stále to budete moci přepsat u každé vytvořené krátké adresy URL): 5
- Chcete, aby Shlink přeložil název krátké adresy URL na základě značky názvu dlouhé adresy URL (pokud existuje)? V opačném případě zůstane prázdný, pokud to není výslovně uvedeno. (ano/ne): ano
- Poskytněte licenční klíč GeoLite2. (Chcete-li použít výchozí, ponechejte prázdné, ale důrazně doporučujeme pořídit si vlastní. Přejděte na https://shlink.io/documentation/geolite-license-key, kde zjistíte, jak jej získat): licenční klíč
Pokud byste chtěli používat GeoLite2, budete si muset vytvořit účet u MaxMind a vytvořit klíč. Návod, jak to udělat, lze nalézt v dokumentaci MaxMind GeoLite2. Po dokončení vyměňte a zadejte svůj klíč v nastavení Shlink.
Následně budete mít možnost nastavit přesměrování 301 nebo 302. Musíte použít 301, jinak vaše SEO, jak naznačuje software, může být skutečně různými způsoby zranitelné.
Sledování
Po nastavení 301 jako trvalého přesměrování je další stránka, kterou uvidíte, sledování. Většina výchozích nastavení je v pořádku, a pokud jste v EU nebo máte návštěvníky z EU, musíte svá data anonymizovat, což pro vás naštěstí může udělat Shlink.
Příklad nastavení níže:
Souhrnně zadané možnosti:
- Chcete sledovat osiřelé návštěvy? (návštěvy základní adresy URL, neplatné krátké adresy URL nebo jiné „nenalezené“ adresy URL): ano
- Zadejte název parametru, který budete moci použít k deaktivaci sledování u konkrétního požadavku na krátké adresy URL (ponechte prázdné a tato funkce nebude povolena):
- Chcete úplně zakázat sledování návštěv?: ne
- Chcete zakázat sledování IP adres návštěvníků?: ne
- Chcete zakázat sledování „uživatelských agentů“ návštěvníků?: ano
- Chcete, aby byly vzdálené IP adresy návštěvníků před uložením do databáze anonymizovány?: ano
- Chcete zakázat sledování „uživatelských agentů“ návštěvníků? :ne
- Chcete deaktivovat sledování „odkazů“ návštěvníků? (ano/ne) :ne
Přesměrování
Nastavení přesměrování je poměrně snadné. Nejlepší možností je propojit vše zpět na vaši domovskou stránku pro případné chyby 404 / nenalezeno, které se mohou na vašem webu vyskytnout. Příklad níže:
Souhrnně zadané možnosti:
- Vlastní adresa URL, na kterou se má uživatel přesměrovat, když uživatel narazí na základní adresu URL Shlink (Pokud nezadáte žádnou hodnotu, zobrazí se uživateli výchozí stránka „404 nenalezeno“): https://www.example.com
- Vlastní adresa URL, na kterou se má uživatel přesměrovat, když narazí na neplatnou krátkou adresu URL (Pokud nezadáte žádnou hodnotu, zobrazí se uživateli výchozí stránka „404 nenalezeno“): https://www.example.com
- Vlastní adresa URL, na kterou se má uživatel přesměrovat, když uživatel zadá jinou než neplatnou krátkou adresu URL nenalezenou adresu URL (Pokud nezadáte žádnou hodnotu, zobrazí se uživateli výchozí stránka „404 nenalezeno“): https://www.example.com
Aplikace
V možnostech aplikace můžete povolit bezpečnostní kontrolu, která nyní umožní smazat krátké adresy URL po určitém počtu návštěv spolu s nastavením cesty, ze které bude Shlink obsluhován, pokud ne kořenovou cestou:
Souhrnně zadané možnosti:
- Chcete povolit bezpečnostní kontrolu, která neumožní smazání krátkých adres URL po určitém počtu návštěv?: ano
- Jaký je počet návštěv, z nichž systém nedovolí smazat krátké adresy URL?: 15
- Jaká je cesta, ze které bude shlink obsluhován? (Pokud plánujete poskytovat shlink z kořenového adresáře domény, ponechte prázdné):
Všimněte si, že 15 můžete upravit na něco většího nebo menšího v závislosti na vašem webu, zejména pokud jde o provoz.
Integrace
Shlink má pouze jednu integraci:Redis, kterou můžete nakonfigurovat níže v jedné nebo clusterové instanci. Doporučuje se používat pro Redis jeden server, dokud se dobře seznámíte s klastrováním, shardováním a replikací Redis, protože je to docela hloubka a průměrný malý až střední web by to neměl potřebovat, pokud není zatížen velkým provozem.
V průvodci jsme ji nechali prázdnou, ale pokud ji chcete použít na localhost, zadejte 127.0.1.1:6379.
Gratulujeme, nainstalovali jste Shlink na Ubuntu 20.04.
Příklad bloku serveru Nginx
Chcete-li používat Shlink s Nginx, budete muset nakonfigurovat blok serveru. Můžete to udělat zkopírováním a vložením následující konfigurace s úpravou tak, aby vyhovovala vašim potřebám s HTTPS nebo ne:
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;
}
}
Před restartováním serveru Nginx proveďte zkušební provoz zadáním následujícího kódu:
sudo nginx -t
Měli byste obdržet následující výstup:
nginx: the configuration file /etc/nginx/my-server.conf syntax is ok
nginx: configuration file /etc/nginx/my-server.conf test is successful
Pokud je vše v pořádku, restartujte server Nginx, jak je uvedeno níže:
sudo systemctl restart nginx
Vytvořit krátké odkazy
Chcete-li vytvořit krátké odkazy pomocí Shlink, musíte nejprve vytvořit klíč API spuštěním příkazu PHP:
sudo -u www-data php7.4 /var/www/shlink/html/bin/cli api-key:generate
Jakmile budete mít svůj klíč API, musíte navštívit Shlink.io a zaregistrovat svůj server.
Zadejte název serveru, adresu URL serveru a klíč API jako příklad níže:
Nyní můžete přidat krátké odkazy pomocí webového rozhraní Shlink, pokud chcete. Pamatujte, že jsou uloženy na vašem serveru:
Nejběžnější možností je použití terminálových příkazů pro generování krátkých URL.
Chcete-li to provést, spusťte následující příkaz:
sudo -u www-data /var/www/html/shlink/bin/cli short-url:generate
Chcete-li vypsat krátké adresy URL, které se vygenerují, použijte následující příkaz:
sudo -u www-data /var/www/html/shlink/bin/cli short-url:list
Chcete-li vyhledat pomoc, spusťte následující příkaz:
sudo -u www-data php /var/www/html/shlink/bin/cli
Příklad výstupu:
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.