Ki jan yo enstale Shlink URL Shortener ak Nginx sou Ubuntu 20.04

Shlink se yon koòdone URL gratis, louvri-sous oto-akomode ekri nan PHP ki bay tou de yon REST ak yon koòdone CLI pou kominike avèk li pou jenere ak jere URL kout. Youn nan karakteristik prensipal yo ak kout URL se ke ou ka swiv tout vizit nan URL sa yo pwodwi tankou kote, navigatè, referans ak plis ankò. Anplis de sa, yon kliyan ofisyèl entènèt Shlink itilize REST API Shlink a epi li bay itilizatè a yon WebUI opsyonèl.

Nan fen gid la, ou pral konnen ki jan yo enstale Shlink URL Shortner sou sèvè Ubuntu ou 20.04 LTS Focal Fossa lè l sèvi avèk Nginx. Menm prensip la ap travay pou nouvo vèsyon an Ubentu 21.04 (Hirsute Hippo) sèvè.

Pre-requisites

  • OS rekòmande: Ubentu 20.04 – opsyonèl (Ubuntu 21.04 ak Linux Mint 20).
  • Kont itilizatè: Yon kont itilizatè ki gen aksè sudo oswa rasin.
  • Pake obligatwa: mariadb php7.4 oswa php8.0 enstale ak konfigirasyon.
  • Pakè adisyonèl: boukle wget dezip.

Tcheke epi ajou sistèm operasyon Ubuntu ou a.

sudo apt update && sudo apt upgrade -y

Apre sa, enstale pakè ki nesesè pou gid sa a:

sudo apt install curl wget unzip

reklam


Telechaje Shlink Achiv

Premye etap la se vizite paj Shlink Github la epi tcheke dènye vèsyon ki estab. Nan moman gid sa a, vèsyon ki estab aktyèl la se 2.7.1. Sepandan, sa a pral chanje nan lavni. Shlink vini nan 3 vèsyon pou PHP 7.4, PHP 8.0 ak kòd sous la.

Pou telechaje Shlink, 2.7.1, egzekite lòd sa a:

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

Kòd sous:

wget https://github.com/shlinkio/shlink/archive/refs/tags/v2.7.1.zip

Pou objektif gid la, li pral swiv egzanp download PHP 7.4 la. Pwochen etap la se sèvi ak la (dekonprime) kòmand pou ekstrè achiv la nan ou (/var/www/html) Anyè a.

sudo unzip shlink2.7.1_php7.4_dist.zip -d /var/www/html

Ou ta dwe chanje non katab la ekstrè pou fè lavi pi fasil lè w egzekite lòd sa a:

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

Anvan w kontinye, li konseye pou mete otorizasyon anyè a nan (www-done) itilizatè kòm kounye a li mete kòm (Rasin). Pou fè sa, tape epi antre sa ki annapre yo (chown) lòd:

sudo chown -R www-data:www-data /var/www/html/shlink/

Kreye nouvo baz done MariaDB ak itilizatè pou Shlink

Pwochen etap la se kreye yon nouvo baz done ak yon nouvo itilizatè devwe ak sèlman pèmisyon pou jwenn aksè nan baz done sa a. Li pa rekòmande pou itilize rasin oswa menm kont itilizatè a sou plizyè baz done si youn konpwomèt.

Gid la enstale MariaDB ak abitye ak tèminoloji ki anba a.

Antre nan konsole tèminal MariaDB/MySQL pa egzekite kòmand rasin lan:

sudo mysql -u root

Apre sa, kreye nouvo baz done pou Shlink lè l sèvi avèk lòd tèminal sa a:

CREATE DATABASE shlink;

Apre ou fin kreye baz done a, kreye yon nouvo kont itilizatè epi bay li aksè nan baz done Shlink la. Si w ap òganize Nginx, PHP ak MariaDB sou menm sèvè a, kenbe la (localhost). Si w ap itilize yon sèvè segondè pou òganize MariaDB sou entèn oswa ekstèn, antre nan (Adrès IP) an plas (localhost).

GRANT ALL ON shlink.* TO 'shlinkuser'@'localhost' IDENTIFIED BY 'password';

Pou fè chanjman yo viv, ou bezwen vide privilèj yo:

FLUSH PRIVILEGES;

Pou sòti nan tèminal MariaDB egzekite lòd sa a:

EXIT;

reklam


Enstale PHP 7.4 Dènye Vèsyon ak Ekstansyon

Kòm yon pati nan kondisyon yo, PHP 7.4 oswa 8.0 obligatwa. Shlink bezwen sèten ekstansyon pou lojisyèl an fonksyone lè l sèvi avèk PHP. Li ideyal pou asire w PHP ajou. PPA koutim pa Ondrej, mentè a ak PHP pou Debian, trè rekòmande.

Anba a, gid la pral ajoute repozitwa a epi enstale ekstansyon PHP ki nesesè pou PHP 7.4. Si ou vle enstale PHP 8.0, chanje 7.4 a 8.0 oswa vizite ofisyèl nou an Ki jan yo enstale PHP 8.0 sou Ubuntu 20.04 Tutorial.

Enstale PHP PPA koutim pa ondrey:

sudo apt install software-properties-common && sudo add-apt-repository ppa:ondrej/php -y

Apre ou fin ajoute repozitwa a, egzekite lòd sa a pou mete ajou oswa enstale dènye lojisyèl PHP 7.4 la:

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

Pou asire w PHP 7.4 ap kouri kòrèkteman apre enstalasyon an oswa aktyalizasyon, antre sa ki annapre yo:

sudo systemctl status php7.4-fpm

Egzanp pwodiksyon:

PHP-FPM 7.4 kouri sou Ubuntu 20.04 enstale Shlink

Enstale Shlink

Koulye a, ou ka kontinye ak enstale PHP Shlink script enstalasyon an kòm (www-itilizatè) pa egzekite kòmand PHP sa a nan tèminal Ubuntu ou a:

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

Touswit, ou pral jwenn tèt ou gade nan yon nouvo ekran ki pral mande w antre nan detay yo baz done.

ki jan yo enstale shlink ak ubuntu ak nginx

Baz done

Nan gid la, ou pral chwazi MariaDB; sepandan, si ou prefere ale tounen epi mete kanpe yon lòt lojisyèl baz done opsyonèl, ou ka sètènman fè sa.

Dapre pi ba a, yon egzanp pou kreye Shlink mete kanpe lè l sèvi avèk MariaDB:

ki jan yo enstale shlink ak ubuntu ak nginx

Opsyon yo te antre nan rezime:

  • Chwazi kalite baz done: 1 (MariaDB)
  • Non baz done: shlink
  • Pò baz done: 3306
  • Non itilizatè baz done: shlinkuser
  • Modpas baz done:
  • priz Unix:

URL Shortner

Nan pwochen ekran an, w ap jwenn yon lòt paj opsyon. Isit la, w ap jwenn espesifik HTTP oswa HTTPS, non domèn, ak kèk opsyon URL Shlink. Egzanp paramèt anba a:

ki jan yo enstale shlink ak ubuntu ak nginx

Opsyon yo te antre nan rezime:

  • Domèn par défaut pou URL kout ki te pwodwi:
  • Chwazi chema pou URL kout ki te pwodwi yo: T (Itilize HTTP si w pa itilize SSL)
  • Ou vle valide URL long pa 200 kòd estati HTTP sou repons? (Wi Non): repons lan se wi
  • Ki longè default ou vle pwodwi kòd kout yo genyen? (Ou ap toujou kapab pase sou desizyon sa a sou chak URL kout kreye): 5
  • Èske w vle Shlink rezoud tit URL kout la ki baze sou tag tit URL long la (si genyen)? Sinon, li pral rete vid sof si li klèman bay. (Wi Non): repons lan se wi
  • Bay yon kle lisans GeoLite2. (Kite vid pou itilize yon sèl default, men li rekòmande pou jwenn pwòp ou a. Ale nan https://shlink.io/documentation/geolite-license-key pou konnen kijan pou jwenn li): kle lisans

Si w ta renmen itilize GeoLite2, w ap bezwen kreye yon kont nan MaxMind epi kreye yon kle. Ou ka jwenn yon gid pou fè sa nan MaxMind GeoLite2 a dokiman. Yon fwa fè, ranplase epi antre kle ou nan konfigirasyon Shlink la.

Apre sa, w ap gen opsyon pou mete 301 oswa 302 re-direksyon. Ou dwe itilize 301, oswa lòt SEO ou a, jan lojisyèl an sijere, tout bon ka fè mal nan divès fason.

ki jan yo enstale shlink ak ubuntu ak nginx

Swiv

Apre ou fin mete 301 kòm redireksyon pèmanan ou, pwochen paj ou pral wè ap swiv. Pifò nan paramèt default yo byen, epi si w se nan Inyon Ewopeyen an oswa si w gen vizitè Inyon Ewopeyen an, ou dwe anonimize done w yo ki Chans pou Shlink ka fè pou ou.

Egzanp paramèt anba a:

ki jan yo enstale shlink ak ubuntu ak nginx

Opsyon yo te antre nan rezime:

  • Èske ou vle swiv vizit òfelen? (vizit nan URL debaz la, URL kout envalid oswa lòt URL "pa jwenn"): repons lan se wi
  • Bay yon non paramèt ke ou pral kapab itilize pou enfim swiv sou demann espesifik nan URL kout (kite vid epi karakteristik sa a pa pral aktive):
  • Èske ou vle konplètman enfim swiv vizit?: pa gen okenn
  • Èske ou vle enfim swiv adrès IP vizitè yo?: pa gen okenn
  • Èske ou vle enfim swiv "Ajan Itilizatè" vizitè yo?: repons lan se wi
  • Èske ou vle adrès IP aleka vizitè yo dwe anonimize anvan pèsiste yo nan baz done a?: repons lan se wi
  • Èske ou vle enfim swiv "Ajan itilizatè" vizitè yo?: non
  • Èske ou vle enfim swiv "Referans" vizitè yo? (Wi Non): non

redireksyon

Redireksyon konfigirasyon se jistis fasil. Opsyon ki pi bon se konekte tout bagay tounen nan paj lakay ou pou nenpòt erè 404 / pa jwenn ki ka rive sou sit entènèt ou a. Egzanp anba a:

ki jan yo enstale shlink ak ubuntu ak nginx

Opsyon yo te antre nan rezime:

  • URL Custom pou redireksyon lè yon itilizatè frape URL baz Shlink la (Si yo pa bay okenn valè, itilizatè a pral wè yon paj default "404 pa jwenn"): https://www.example.com
  • URL Custom pou redireksyon lè yon itilizatè frape yon URL kout ki pa valab (Si yo pa bay okenn valè, itilizatè a pral wè yon paj default "404 pa jwenn"): https://www.example.com
  • URL Custom pou redireksyon lè yon itilizatè frape yon URL ki pa jwenn lòt pase yon URL kout ki pa valab (Si yo pa bay okenn valè, itilizatè a pral wè yon paj default "404 pa jwenn"): https://www.example.com

aplikasyon

Nan opsyon aplikasyon yo, ou ka pèmèt yon chèk sekirite, ki pral kounye a pèmèt URL kout yo dwe efase apre yon sèten kantite vizit, ansanm ak fikse chemen kote Shlink pral sèvi si se pa chemen rasin lan:

ki jan yo enstale shlink ak ubuntu ak nginx

Opsyon yo te antre nan rezime:

  • Èske ou vle pèmèt yon chèk sekirite ki pa pral pèmèt URL kout yo dwe efase apre li resevwa yon kantite vizit espesifik?: repons lan se wi
  • Ki kantite vizit sistèm lan p ap pèmèt yo efase URL kout?: 15
  • Ki chemen kote shlink pral sèvi? (Kite vid si w gen plan pou sèvi shlink soti nan rasin domèn nan):

Remake byen, ou ka modifye 15 nan yon bagay ki pi gwo oswa pi piti depann sou sit ou a, sitou alantou trafik.

Entègrasyon

Shlink gen yon sèl entegrasyon: Redis, ki ou ka konfigirasyon anba a nan yon egzanp sèl oswa gwoup. Li rekòmande pou sèvi ak yon sèl sèvè pou Redis jiskaske ou trè abitye ak Redis clustering, sharding ak replikasyon kòm li se byen an pwofondè, ak mwayèn sit entènèt la ti ak mwayen pa ta dwe bezwen sa a sof si resevwa chaj trafik gwo.

ki jan yo enstale shlink ak ubuntu ak nginx

Nan gid la, nou kite li vid, men si ou ta sèvi ak li sou localhost la, tape 127.0.1.1:6379.

Felisitasyon, ou te enstale Shlink sou Ubuntu 20.04.

ki jan yo enstale shlink ak ubuntu ak nginx

reklam


Egzanp blòk sèvè Nginx

Pou itilize Shlink ak Nginx, w ap bezwen konfigirasyon blòk sèvè w la. Ou ka fè sa lè w kopye epi kole konfigirasyon sa a ak modifye li pou satisfè bezwen w yo ak HTTPS oswa ou pa:

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;
   }

}

Anvan rekòmanse sèvè Nginx ou a, fè yon kouri sèk lè w antre kòd sa a:

sudo nginx -t

Ou ta dwe resevwa pwodiksyon sa a:

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

Si tout bagay anfòm, rekòmanse sèvè Nginx ou a jan pi ba a:

sudo systemctl restart nginx

Kreye Lyen Kout

Pou kreye lyen kout ak Shlink, premye bezwen kreye yon kle API pa egzekite kòmand PHP:

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

Yon fwa ou gen kle API ou, ou bezwen vizite Shlink.io pou anrejistre sèvè w la.

ki jan yo enstale shlink ak ubuntu ak nginx

Antre non sèvè a, URL sèvè a ak kle API a kòm egzanp ki anba a:

ki jan yo enstale shlink ak ubuntu ak nginx

Koulye a, ou ka ajoute lyen kout lè l sèvi avèk WebUI Shlink a si ou prefere. Sonje sa yo estoke sou sèvè w la:

ki jan yo enstale shlink ak ubuntu ak nginx

Opsyon ki pi komen se itilize kòmandman tèminal yo pou jenere URL kout.

Pou fè sa, egzekite lòd sa a:

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

Pou lis URL kout yo ki te pwodwi, lè l sèvi avèk lòd sa a:

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

Pou chèche èd, kouri lòd sa a:

sudo -u www-data php /var/www/html/shlink/bin/cli

Egzanp pwodiksyon:

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.

reklam


Kòmantè ak konklizyon

Ou te aprann kijan pou enstale Shlink sou Ubuntu 20.04 ak telechaje achiv la, ekstrè, mete kanpe yon baz done ak itilizatè ak MariaDB, kouri atravè enstale Shlink la, Kreye oswa Modifye blòk sèvè Nginx epi anfen, aprann kijan pou kreye URL kout nan leson patikilye sa a. .

An jeneral, Shlink se pwobableman youn nan pi bon opsyon URL kounye a epi yo ta dwe konsidere si ou prefere kenbe URL kout nan domèn pwòp ou a ak kontwòl. Pou plis enfòmasyon, vizite a dokiman ofisyèl soti nan Shlink.

Si ou gen kesyon, santi yo lib yo kite yon kòmantè anba a.

Leave a Comment