Поиск по сайту:

Как установить Shlink URL Shortener с Nginx на Ubuntu 20.04


На этой странице

  1. Предпосылки
  2. Начало работы
  3. Установить сервер LEMP
  4. Создать базу данных Shlink
  5. Скачать Шлинк
  6. Установить Шлинк
  7. Настройка Nginx для Shlink
  8. Заключение

Shlink — это самостоятельный сокращатель URL-адресов с открытым исходным кодом, написанный на PHP. Он используется для создания и управления короткими URL-адресами из командной строки. Это позволяет отслеживать все посещения ваших коротких URL-адресов, включая местоположение, браузер или реферер. Его можно интегрировать со сторонними инструментами с помощью API Shlink. Он предоставляет интерфейс командной строки для сокращения URL-адресов.

В этом уроке я покажу вам, как установить Shlink на Ubuntu 20.04.

Предпосылки

  • Сервер под управлением Ubuntu 20.04.
  • Действительное доменное имя, указанное с IP-адресом вашего сервера.
  • На сервере настроен пароль root.

Начиная

Сначала обновите системные пакеты до обновленной версии, выполнив следующую команду:

apt-get update -y

Как только все пакеты будут обновлены, вы можете перейти к следующему шагу.

Установить LEMP-сервер

Сначала установите Nginx, PHP, MariaDB и другие необходимые пакеты с помощью следующей команды:

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

После установки всех пакетов можно переходить к следующему шагу.

Создать базу данных Shlink

Shlink использует MariaDB в качестве базы данных. Итак, вам нужно будет создать базу данных и пользователя для Shlink. Сначала подключитесь к MariaDB с помощью следующей команды:

mysql

После подключения создайте базу данных и пользователя с помощью следующей команды:

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

Затем сбросьте привилегии и выйдите из MariaDB с помощью следующей команды:

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

Скачать Шлинк

Сначала загрузите последнюю версию Shlink с официальной страницы загрузки:

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

После завершения загрузки разархивируйте загруженный файл с помощью следующей команды:

unzip shlink2.7.1_php7.4_dist.zip

Затем переместите извлеченный каталог в корневой веб-каталог Nginx:

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

Затем установите правильное разрешение и право собственности с помощью следующей команды:

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

Установить Шлинк

Затем выполните следующую команду, чтобы начать установку:

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

Вам будет предложено выбрать базу данных, как показано ниже:

 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

Выберите любой вариант и нажмите Enter. Вам будет предложено указать имя базы данных, как показано ниже:

 Database name [shlink]:
 > 

Укажите имя вашей базы данных или нажмите Enter, чтобы выбрать значение по умолчанию. Вам будет предложено указать хост базы данных:

 Database host [localhost]:
 > 

Укажите хост вашей базы данных или нажмите Enter, чтобы выбрать значение по умолчанию. Вам будет предложено указать порт базы данных:

 Database port [3306]:
 > 

Укажите порт базы данных или нажмите Enter, чтобы выбрать порт по умолчанию. Вам будет предложено указать имя пользователя базы данных:

 Database username:
 > shlink

Укажите имя пользователя базы данных и нажмите Enter. Вам будет предложено ввести пароль пользователя базы данных:

 Database password:
 > password

Введите пароль пользователя базы данных и нажмите Enter. Вас попросят указать сокет Unix.

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

Оставьте его пустым и нажмите Enter. Вас попросят указать доменное имя:

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

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

Укажите свое доменное имя и нажмите Enter. Вам будет предложено выбрать схему:

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

Выберите вариант и нажмите Enter. Вам будет предложено проверить длинные URL-адреса:

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

Выберите вариант по умолчанию и нажмите Enter. Вам будет предложено указать длину сгенерированных шорткодов:

 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]:
 > 

Выберите значение по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:

 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]:
 > 

Выберите ответ по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:

 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):
 > 

Оставьте его пустым и нажмите Enter. Вы должны увидеть следующий вывод:

 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

Выберите любой вариант и нажмите Enter. Вы должны увидеть следующий вывод:

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

Выберите значения по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:

TRACKING
========

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

Выберите вариант по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:

 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):
 > 

Просто нажмите Enter. Вы должны увидеть следующий вывод:

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

Выберите вариант по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:

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

Выберите вариант по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:

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

Выберите вариант по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:

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

Выберите вариант по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:

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

Выберите вариант по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:

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

Укажите свое доменное имя и нажмите Enter. Вы должны увидеть следующий вывод:

 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

Укажите свое доменное имя и нажмите Enter. Вы должны увидеть следующий вывод:

 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

Укажите свое доменное имя и нажмите Enter. Вы должны увидеть следующий вывод:

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]:
 > 

Выберите вариант по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:

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

Выберите вариант по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:

 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) []:
 > 

Выберите вариант по умолчанию и нажмите Enter. Вы должны увидеть следующий вывод:

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!                                                                                                                                                            

Настройте Nginx для Shlink

Далее вам нужно будет создать файл виртуального хоста Nginx для Shlink. Вы можете создать его с помощью следующей команды:

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

Добавьте следующие строки:

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

}

Сохраните и закройте файл, затем проверьте Nginx на наличие ошибок с помощью следующей команды:

nginx -t

Вы должны получить следующий результат:

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

Затем перезапустите службу Nginx, чтобы применить изменения:

systemctl restart nginx

Вы также можете проверить статус Nginx с помощью следующей команды:

systemctl status nginx

Вы должны получить следующий результат:

? 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 ubunt4 systemd[1]: Starting A high performance web server and a reverse proxy server...
Jun 02 05:28:30 ubunt4 systemd[1]: Started A high performance web server and a reverse proxy server.

Теперь вы можете установить настроенный клиент Shlink, чтобы сократить URL-адрес.

Вы также можете сгенерировать короткий URL-адрес на своем сервере из командной строки:

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

Чтобы просмотреть все короткие URL-адреса, выполните следующую команду:

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

Чтобы отобразить любую справочную информацию, выполните следующую команду:

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

Заключение

Поздравляем! вы успешно установили сокращатель URL-адресов Shlink на Ubuntu 20.04. Теперь вы можете сократить URL-адрес с помощью интерфейса командной строки или веб-клиента.