Установка Polr на Ubuntu 20.04 с Apache и Let's Encrypt
Кратко
Кратко: этот пошаговый гид показывает, как установить и настроить Polr — самохостящийся PHP-шифтер ссылок — на сервере Ubuntu 20.04 с Apache и бесплатным SSL от Let’s Encrypt. Включены подготовка базы данных, установка зависимостей, конфигурация Apache, защита HTTPS, проверка работоспособности, а также рекомендации по безопасности и отладке.
TL;DR
- Установите Apache, MariaDB и PHP.
- Создайте базу данных и пользователя для Polr.
- Загрузите Polr, установите Composer-зависимости, настройте права.
- Создайте виртуальный хост Apache и включите rewrite.
- Получите SSL с помощью Certbot и включите перенаправление на HTTPS.
Важно: перед началом убедитесь, что домен указывает на IP сервера, а у вас есть root-доступ.

О чем этот гайд
Этот материал рассчитан на системных администраторов и разработчиков, которые хотят самостоятельно разместить открытое решение для сокращения ссылок. Он покрывает базовую установку на Ubuntu 20.04 с Apache и автоматическим SSL от Let’s Encrypt. Небольшие отличия могут потребоваться для других дистрибутивов или при использовании Docker/Nginx.
Требования
- Сервер с Ubuntu 20.04.
- Действующий домен, указывающий на IP сервера (A-запись).
- Доступ root или админ-права sudo.
Подготовка системы
Сначала обновите пакеты до актуального состояния:
apt-get update -yПосле обновления пакетов переходите к установке сервисов.
Установка Apache, MariaDB и PHP
Установите Apache, MariaDB, PHP и необходимые расширения:
apt-get install apache2 mariadb-server php libapache2-mod-php libapache2-mod-wsgi php-gd php-curl php-xml php-xmlrpc php-curl php-imagick php-mbstring php-zip php-intl -yПримечание: для продакшена проверьте версии PHP, которые поддерживает текущая версия Polr, и при необходимости используйте PPA для более новых версий PHP.
Создание базы данных для Polr
Polr использует MariaDB/MySQL. Войдите в MariaDB и создайте базу и пользователя:
mysqlВ консоли MariaDB выполните:
MariaDB [(none)]> CREATE DATABASE polrdb;
MariaDB [(none)]> GRANT ALL ON polrdb.* TO 'polr' IDENTIFIED BY 'password';Не забудьте заменить ‘password’ на надёжный пароль.
Затем сбросьте привилегии и выйдите:
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;Установка Composer
Composer нужен для установки PHP-зависимостей.
curl -sS https://getcomposer.org/installer | phpОжидаемый вывод:
All settings correct for using Composer
Downloading...
Composer (version 2.1.3) successfully installed to: /root/composer.phar
Use it: php composer.phar
Переместите двоичный файл в системное место:
mv composer.phar /usr/local/bin/composerПроверьте версию:
composer -VОтклик может предупреждать про запуск от root — это нормально, но по безопасности рекомендовано использовать отдельного пользователя для запуска composer в продакшне.
Установка Polr
Скачайте репозиторий и установите зависимости:
git clone https://github.com/cydrobolt/polr.git --depth=1 /var/www/html/polrЗатем:
cd /var/www/html/polr
composer install --no-dev -oСкопируйте пример файла окружения и настройте его:
cp .env.setup .envУстановите права для веб-сервера:
chown -R www-data:www-data /var/www/html/polr
chmod -R 755 /var/www/html/polrВажно: при использовании SELinux или AppArmor могут потребоваться дополнительные разрешения.
Конфигурация Apache для Polr
Создайте виртуальный хост:
nano /etc/apache2/sites-available/polr.confВставьте конфигурацию (отредактируйте ServerName и ServerAdmin под ваш домен и почту):
ServerAdmin [email protected]
DocumentRoot /var/www/html/polr/public
ServerName polr.example.com
Options FollowSymLinks
AllowOverride All
Order allow,deny
allow from all
ErrorLog /var/log/apache2/polr-error_log
CustomLog /var/log/apache2/polr-access_log common
Сохраните, затем включите модуль rewrite и сайт:
a2enmod rewrite
a2ensite polr.confПерезапустите Apache:
systemctl restart apache2Проверка статуса:
systemctl status apache2Ожидаемый фрагмент вывода показан в оригинальном гайде и подтверждает, что служба запущена.
Доступ к веб-интерфейсу Polr
Откройте http://polr.example.com в браузере и следуйте мастеру установки. Поля, которые нужно заполнить: имя БД, пользователь, пароль БД, настройки приложения, URL Polr, учетные данные администратора. Затем нажмите Install.




После успешной установки вы увидите подтверждение и сможете попасть в панель управления Polr.


Защита Polr с Let’s Encrypt (бесплатный SSL)
Установите Certbot для Apache и получите сертификат:
apt-get install python3-certbot-apache -yЗапустите Certbot для вашего домена:
certbot --apache -d polr.example.comВо время процесса вас попросят ввести e-mail и согласиться с условиями. Затем Certbot создаст ssl-конфигурацию и предложит перенаправление HTTP -> HTTPS. Выберите перенаправление для новых сайтов.
Пример диалога и результаты установки приведены в оригинальном руководстве. После успешной установки сайт будет доступен по https://polr.example.com.
Критерии приёмки
- Домен polr.example.com отвечает по HTTPS и перенаправляет HTTP на HTTPS.
- Страница установки Polr доступна и мастер успешно завершил установку.
- Вход в админ-панель Polr работает с созданными учетными данными.
- Логи Apache не содержат критических ошибок при загрузке сайта.
Чек-лист ролей
- Системный администратор:
- Проверить DNS A-запись.
- Обновить систему и установить пакеты.
- Настроить брандмауэр и SELinux/AppArmor при необходимости.
- Бэкенд-разработчик:
- Настроить .env (данные БД, ключ приложения).
- Проверить зависимости Composer и миграции БД.
- Оператор безопасности:
- Подключить Certbot и настроить автоматическое обновление сертификата (cron/systemd).
- Настроить резервное копирование базы и /var/www/html/polr.
Рекомендации по безопасности и сопровождению
- Регулярно обновляйте ОС и PHP-пакеты.
- Используйте строгие пароли для БД и администратора Polr.
- Включите автоматическое обновление сертификатов (certbot renew автоматизируется systemd).
- Ограничьте доступ к серверу по SSH (ключи, отключите root по SSH, используйте fail2ban).
- Делайте регулярные бэкапы БД и файлов приложения.
Отладка и типичные проблемы
Проблема: пустая страница или 500 Internal Server Error.
- Проверьте логи Apache: /var/log/apache2/polr-error_log и /var/log/apache2/error.log.
- Проверьте права на папки и владельца www-data.
- Убедитесь, что расширения PHP установлены (mbstring, intl, pdo_mysql и т.д.).
Проблема: Certbot не может пройти проверку HTTP-01.
- Проверьте, что порт 80 не закрыт брандмауэром.
- Убедитесь, что виртуальный хост слушает порт 80 и правильно указан ServerName.
Когда установка composer работает медленно:
- Запустите composer с параметром –no-dev и используйте опцию -o для оптимизации автозагрузки.
Альтернативные подходы
- Docker: запуск Polr в контейнере упрощает изоляцию и обновления.
- Nginx: многие предпочитают Nginx как обратный прокси вместо Apache. Конфигурация SSL и правила rewrite на Nginx отличаются.
- Управляемые сервисы: если не хочется управлять сервером — рассмотрите платные SaaS-решения для сокращения ссылок.
Миграция и совместимость
- При переносе с другого сервера экспортируйте базу данных и файлы /var/www/html/polr.
- Проверьте версию PHP и совместимость с используемой версией Polr.
- Обновления Polr: следите за релизами в официальном репозитории и тестируйте на стенде.
Мини-методология установки (быстрая шпаргалка)
- Обновить систему: apt-get update && apt-get upgrade.
- Установить LAMP стек и зависимости PHP.
- Создать БД и пользователя.
- Установить Composer, клонировать репозиторий Polr.
- Настроить .env, права, виртуальный хост.
- Включить rewrite, перезапустить Apache.
- Получить SSL через Certbot и включить перенаправление на HTTPS.
- Тесты: проверка главной страницы, вход в админку, создание сокращённой ссылки.
Тест кейсы и приёмочные сценарии
- Тест 1: Доступ по HTTPS — перейти на https://polr.example.com и убедиться, что сертификат валиден.
- Тест 2: Функция сокращения — создать сокращённую ссылку и открыть её; браузер должен перенаправиться на оригинал.
- Тест 3: Авторизация администратора — войти под admin и открыть настройки приложения.
Частые вопросы
Как обновлять сертификаты Let’s Encrypt?
Certbot обычно настраивает systemd-таймер или cron для автообновления. Проверить вручную:
certbot renew --dry-runМожно ли использовать Nginx вместо Apache?
Да. Конфигурация виртуального хоста и правила переписывания будут отличаться. Certbot поддерживает плагин nginx.
Как запустить Polr в Docker?
Официального образа может не быть. Ищите готовые Dockerfile/compose-файлы в сообществе или создайте собственный контейнер с PHP-FPM и Nginx/Apache.
Короткое резюме
Polr — лёгкое решение для сокращения ссылок, которое можно разместить на собственном сервере. Установка на Ubuntu 20.04 с Apache и Certbot занимает от 20 до 60 минут, в зависимости от опыта. Обязательно настройте HTTPS, бэкапы и права доступа.
FAQ
Q: Что делать, если при установке возникают ошибки Composer?
A: Проверьте версию PHP и необходимые расширения. Запустите composer install без прав root под обычным пользователем, если возможно.
Q: Как автоматизировать обновления Polr?
A: Автоматизация требует CI/CD. Для простого подхода используйте скрипт обновления и тестирование на стенде перед деплоем в прод.
Q: Нужен ли отдельный сервер для Polr?
A: Нет. Для небольших нагрузок Polr можно разместить на общем VPS вместе с другими сервисами, но разделение рекомендуется для безопасности и масштабирования.
Если нужны конфигурации для Docker или пример Nginx-конфигурации, скажите, и я подготовлю их отдельно.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента