Гид по технологиям

Установка Shlink на Ubuntu 20.04

• 5 min read • DevOps • Обновлено 23 Nov 2025
Установка Shlink на Ubuntu 20.04
Установка Shlink на Ubuntu 20.04

Логотип Shlink и пример короткой ссылки

О чём эта инструкция

Shlink — это open-source URL-укоротитель на PHP. Он позволяет генерировать короткие ссылки, отслеживать визиты (локация, браузер, реферер) и интегрироваться через API. В этой статье описан процесс установки на Ubuntu 20.04 с Nginx и MariaDB, плюс дополнительные рекомендации по безопасности, SSL и эксплуатации.

Важно: инструкция предполагает, что у вас есть сервер с Ubuntu 20.04 и доступ root или sudo.

Короткий обзор шагов

  1. Обновить систему
  2. Установить LEMP (Nginx, PHP 7.4-FPM, MariaDB) и зависимости
  3. Создать БД и пользователя для Shlink
  4. Скачать и развернуть дистрибутив Shlink
  5. Запустить встроенный установщик
  6. Настроить Nginx и опционально SSL
  7. Проверить работу и настроить бэкап/безопасность

Требования

  • Сервер с Ubuntu 20.04
  • Домен, указывающий на IP сервера
  • Пароль root или учетная запись с sudo
  • Рекомендуется минимально 1 CPU и 512–1024 МБ ОЗУ для небольших проектов

Быстрые команды подготовки

Обновите пакеты перед началом:

apt-get update -y
apt-get upgrade -y

Установите необходимые утилиты (обновлено с учётом оригинальной инструкции):

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

Примечание: если PHP 7.4 недоступен в вашем зеркале, используйте соответствующий репозиторий или примените более новую версию PHP, совместимую с Shlink.

Создание базы данных Shlink

Подключитесь к MariaDB и создайте базу и пользователя:

mysql

Внутри клиента выполните:

CREATE DATABASE shlink;
GRANT ALL ON shlink.* TO 'shlink'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
EXIT;

Важно: замените ‘password’ на надёжный пароль. Для production используйте менеджер секретов и ограничьте доступ по хостам.

Скачивание и развертывание 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
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/

Важно: сохраняйте пути и права аккуратно. Веб-процесс должен иметь доступ к файлам и ограничения записи там, где это необходимо.

Запуск установщика Shlink

Выполните инсталлятор от имени www-data:

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

Инсталлятор предложит ввести параметры: тип СУБД, имя базы, хост, порт, пользователя, пароль, домен по умолчанию, схему (http/https), поведение редиректа, параметры трекинга и дополнительные опции. В примере использованы значения по умолчанию. Примеры интерактивных подсказок сохранены ниже:

 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

Далее указывайте настройки согласно созданной базе данных. Если вы хотите использовать Unix socket — укажите путь, иначе оставьте пустым.

В процессе инсталляции будут созданы схемы, загружен GeoLite2 при наличии ключа (опционально) и сгенерированы прокси/кеш.

Установка завершится сообщением примерно такого вида:

 [OK] Installation complete!

Конфигурация Nginx для Shlink

Создайте конфигурацию виртуального хоста, например в /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
systemctl restart nginx
systemctl status nginx

Ожидаемый вывод проверки конфигурации:

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

Включение HTTPS (рекомендуется)

Для production обязательно включите HTTPS. Простой путь — certbot вместе с плагином для Nginx:

apt-get install certbot python3-certbot-nginx -y
certbot --nginx -d shlink.example.com

Certbot автоматически обновит конфигурацию Nginx и создаст задания на обновление сертификатов. После выдачи сертификата проверьте, что в интерфейсе Shlink указан корректный домен с https, если вы хотите генерировать ссылки по https.

Фаервол и безопасность

Разрешите только нужные порты:

ufw allow OpenSSH
ufw allow 'Nginx Full'
ufw enable

Ограничьте доступ к базе данных по сети, если это возможно. Используйте сильные пароли и ротацию ключей.

Команды CLI Shlink — шпаргалка

Генерация короткой ссылки из консоли:

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

Список всех коротких ссылок:

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

Справка по CLI:

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

Тестирование и проверка

  • Откройте https://ваш-домен и убедитесь, что страница приложения доступна.
  • Сгенерируйте короткую ссылку и проверьте редирект.
  • Проверьте логи Nginx и Shlink на наличие ошибок: /var/log/nginx/shlink.error

Частые проблемы и их решение

  • Ошибка подключения к БД: проверьте host, порт, пользователя и пароль. Проверьте, слушает ли MariaDB на нужном порту.
  • 502 Bad Gateway: проверьте статус php7.4-fpm и путь сокета (/var/run/php/php7.4-fpm.sock).
  • Права доступа: убедитесь, что www-data владеет файлами и имеет права на запись в runtime/ и cache/ если требуется.

Рекомендации по безопасности

  • Используйте HTTPS и HSTS.
  • Храните пароли в секретном менеджере.
  • Ограничьте доступ к админ-интерфейсам по IP, если возможно.
  • Обновляйте PHP, Nginx и Shlink по мере выхода обновлений.
  • Регулярно делайте бэкапы базы данных.

Резервные и отказоустойчивые опции

  • Для повышения доступности используйте внешний Redis для shared caching в многосервисной среде.
  • Регулярно экспортируйте базу данных и храните бэкапы вне сервера.

Модель принятия решений: когда использовать Shlink и когда нет

  • Подходит, если нужно быстро и автономно укорачивать ссылки и собирать простую аналитику.
  • Не подходит, если вам нужна сложная enterprise-анализ или интеграции с большими системами без доработок.

Роли и чек-листы

Администратор:

  • Проверить установку пакетов
  • Настроить firewall
  • Выполнить SSL
  • Настроить бэкап базы

Разработчик:

  • Настроить CI для деплоя конфигураций
  • Интегрировать API Shlink в приложение
  • Тестировать поведение редиректов

Оператор:

  • Мониторить логи и метрики
  • Обновлять зависимости
  • Проверять бэкапы и восстановление

Критерии приёмки

  • Shlink отвечает по HTTPS на заданном домене
  • Можно создать короткую ссылку через CLI и через веб-интерфейс
  • Редирект работает корректно и трекится в БД
  • Есть рабочий бэкап и план восстановления

Чек-лист после установки

  • Nginx запущен и настроен
  • PHP-FPM работает (php7.4-fpm)
  • MariaDB доступна и БД создана
  • Shlink установлен и инициализирован
  • SSL установлен и перенаправление на HTTPS настроено
  • Бэкап БД настроен

Мини-методология по обновлениям

  1. Тестируйте обновление в staging.
  2. Бэкапьте базу и файлы.
  3. Обновляйте Shlink и зависимости в off-peak окно.
  4. Проверяйте логи и поведение коротких ссылок.

Таблица основных команд (cheat sheet)

  • Обновление системы: apt-get update && apt-get upgrade -y
  • Установка пакетов: apt-get install
  • Запуск инсталлятора: sudo -u www-data php7.4 /var/www/html/shlink/bin/install
  • Генерация ссылки: sudo -u www-data php7.4 /var/www/html/shlink/bin/cli short-url:generate
  • Справка CLI: sudo -u www-data php7.4 /var/www/html/shlink/bin/cli

Заключение

Поздравляем — вы установили Shlink на Ubuntu 20.04. Теперь можно генерировать короткие ссылки через CLI или веб-интерфейс, отслеживать посещения и интегрировать сервис через API. Не забудьте включить HTTPS, настроить бэкапы и мониторинг для стабильной работы в production.

Ключевые рекомендации:

  • Всегда используйте HTTPS
  • Храните учётные данные безопасно
  • Тестируйте обновления в staging

Спасибо за чтение.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро