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

О чём эта инструкция
Shlink — это open-source URL-укоротитель на PHP. Он позволяет генерировать короткие ссылки, отслеживать визиты (локация, браузер, реферер) и интегрироваться через API. В этой статье описан процесс установки на Ubuntu 20.04 с Nginx и MariaDB, плюс дополнительные рекомендации по безопасности, SSL и эксплуатации.
Важно: инструкция предполагает, что у вас есть сервер с Ubuntu 20.04 и доступ root или sudo.
Короткий обзор шагов
- Обновить систему
- Установить LEMP (Nginx, PHP 7.4-FPM, MariaDB) и зависимости
- Создать БД и пользователя для Shlink
- Скачать и развернуть дистрибутив Shlink
- Запустить встроенный установщик
- Настроить Nginx и опционально SSL
- Проверить работу и настроить бэкап/безопасность
Требования
- Сервер с 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.comCertbot автоматически обновит конфигурацию 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 настроено
- Бэкап БД настроен
Мини-методология по обновлениям
- Тестируйте обновление в staging.
- Бэкапьте базу и файлы.
- Обновляйте Shlink и зависимости в off-peak окно.
- Проверяйте логи и поведение коротких ссылок.
Таблица основных команд (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
Спасибо за чтение.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента