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

Установка Elgg на Ubuntu 20.04 с Nginx и Let's Encrypt

5 min read DevOps Обновлено 27 Nov 2025
Elgg на Ubuntu 20.04: Nginx + Let's Encrypt
Elgg на Ubuntu 20.04: Nginx + Let's Encrypt

О чём эта статья

Краткое руководство по установке и базовой настройке Elgg — свободной платформы для создания соцсети. Подойдёт для кампусов, учебных заведений и внутренних порталов. Даны команды для Ubuntu 20.04, пример конфигурации Nginx, настройка PHP, MariaDB и автоматизация SSL через Certbot.

Основные термины

  • Elgg — CMS/платформа для социальных сервисов с веб-интерфейсом.
  • PHP-FPM — FastCGI Process Manager для PHP.
  • Certbot — клиент для получения SSL-сертификатов от Let’s Encrypt.

Требования перед началом

  • Сервер с Ubuntu 20.04.
  • Домен, указывающий на IP сервера (A-запись).
  • Настроен root-доступ или пользователь с sudo.

1. Обновление системы

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

apt-get update -y

Важно: периодически проверяйте обновления безопасности для PHP, Nginx и MariaDB.

2. Установка Nginx, PHP и MariaDB

Установите Nginx, MariaDB и необходимые расширения PHP:

apt-get install nginx mariadb-server php php-cli php-fpm php-json php-pdo php-mysql php-zip php-gd php-mbstring php-curl php-xml php-pear php-bcmath unzip curl -y

Редактируйте php.ini для PHP-FPM (путь для PHP 7.4):

nano /etc/php/7.4/fpm/php.ini

Отредактируйте значения при необходимости, например:

memory_limit = 256M
post_max_size = 64M
upload_max_filesize = 32M
date.timezone = UTC

Перезапустите сервис PHP-FPM:

systemctl restart php7.4-fpm

Важно: выберите timezone, соответствующий вашему региону (например Europe/Moscow).

3. Создание базы данных для Elgg

Войдите в MariaDB и создайте базу и пользователя (замените пароли на надёжные):

mysql

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

CREATE DATABASE elgg_db;
CREATE USER elgg_user@localhost IDENTIFIED BY 'securepassword';
GRANT ALL PRIVILEGES ON elgg_db.* TO elgg_user@localhost;
FLUSH PRIVILEGES;
EXIT;

Совет: храните учётные данные в защищённом менеджере паролей и ограничьте доступ к базе по необходимости.

4. Скачивание Elgg

Скачайте последнюю версию Elgg с GitHub и распакуйте её:

curl -s https://api.github.com/repos/Elgg/Elgg/releases/latest |grep browser_download_url | cut -d '"' -f 4 | wget -i -

После загрузки распакуйте архив:

unzip elgg-*.zip
mv elgg-*/ /var/www/html/elgg

Создайте папку для данных Elgg и установите права:

mkdir /var/www/html/data
chown -R www-data:www-data /var/www/html/elgg/
chown -R www-data:www-data /var/www/html/data
chmod -R 755 /var/www/html/elgg

Примечание: каталог /var/www/html/data должен быть вне веб-корня, если требуется дополнительная защита. Здесь приведён упрощённый вариант, при необходимости переместите data в /srv/elgg-data или другой защищённый путь и укажите его в установщике.

5. Конфигурация Nginx для Elgg

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

nano /etc/nginx/conf.d/elgg.conf

Вставьте следующий пример (замените elgg.domain.com на ваш домен):

server {
  listen 80;

  server_name elgg.domain.com;
  root /var/www/html/elgg;

  index index.php;
  
  access_log /var/log/nginx/elgg_access.log;
  error_log /var/log/nginx/elgg_error.log;

  location / {
    try_files $uri $uri/ /index.php?$query_string;
  }

  location ~ \.php$ {
    fastcgi_index index.php;
    fastcgi_split_path_info ^(.+\.php)(.*)$;
    fastcgi_keep_conn on;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    include /etc/nginx/fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }
}

Проверьте синтаксис и перезапустите Nginx:

nginx -t
systemctl restart nginx
systemctl status nginx

Если вы видите сообщение об успешной проверке, Nginx готов.

6. Доступ к веб-интерфейсу Elgg

Откройте в браузере http://elgg.domain.com и пройдите шаги установщика: проверка требований PHP, указание данных базы, конфигурация сайта и создание администратора.

![][files/cf8f9e0a-90fc-4e80-ab0d-7653e26c34dc.png]

Стартовая страница установщика Elgg

![][files/ef842d90-3697-4881-987e-55788cd31383.png]

Проверка требований PHP в установщике Elgg

![][files/9f8caddc-c824-46c4-93aa-517b051afa7b.png]

Проверка модулей PHP

![][files/063f9bf3-474c-49f9-b25d-1884f70afc72.png]

Конфигурация базы данных Elgg

![][files/f6a9bcb7-9904-48b3-a8eb-a285dd293079.png]

Поля подключения к базе данных

![][files/226cc98a-975f-4547-82f0-9861b26f419f.png]

Настройка сайта Elgg

![][files/f48c8359-81d2-4ae3-b8f6-277810feb472.png]

Создание администратора Elgg

![][files/34bdc421-8d12-4c61-9d78-8bf656c64960.png]

Установка завершена — переход на сайт

![][files/a7b09678-dbf3-4207-a9da-64566421b091.png]

Страница входа в Elgg

![][files/6edfad35-9e2c-4a32-b7a7-abdf896ed6f9.png]

Панель администратора Elgg

Важно: используйте надёжные пароли для учётной записи администратора и базы данных. После установки закройте открытые директории и проверьте права на файлы.

7. Защита сайта SSL через Let’s Encrypt

Установите Certbot для Nginx:

apt-get install python3-certbot-nginx -y

Запросите и установите сертификат (замените домен):

certbot --nginx -d elgg.domain.com

При выполнении вы укажете e-mail и примете условия обслуживания, затем Certbot предложит перенаправление HTTP на HTTPS — рекомендуется выбрать перенаправление (Redirect).

Пример вывода Certbot показан в интерактивной сессии. По завершении сертификаты окажутся в /etc/letsencrypt/live/elgg.domain.com/.

Автоматическое обновление сертификатов

Let’s Encrypt выдаёт сертификат на 90 дней. Certbot обычно создаёт системный crontab/systemd timer для автоматического обновления. Проверьте статус:

systemctl list-timers | grep certbot

Или вручную запустите тест обновления:

certbot renew --dry-run

Когда установка может не пройти (типичные ошибки и решения)

  • Неверные права на каталоги — проверяйте owner www-data и права 755/750.
  • PHP-расширения отсутствуют — следуйте списку необходимых расширений (gd, mbstring, pdo, mysql и др.).
  • Неправильный путь к сокету PHP-FPM — проверьте /var/run/php/php7.4-fpm.sock или используйте 127.0.0.1:9000 при TCP-сокете.
  • DNS не указывает на сервер — убедитесь, что A-запись домена указывает на IP.
  • Port 80/443 заблокированы — откройте их в firewall (ufw или cloud firewall).

Альтернативные подходы

  • Apache вместо Nginx: использовать модуль php-fpm и конфигурацию VirtualHost.
  • Docker: контейнеризировать Elgg, MariaDB и Nginx в Docker Compose (удобно для изоляции и миграций).
  • Отдельный data-том: хранить data вне веб-корня и монтировать как том в Docker или как отдельную папку с ограниченными правами.

Мини-методология развертывания (краткий SOP)

  1. Подготовить сервер и DNS.
  2. Обновить систему.
  3. Установить Nginx, MariaDB, PHP и расширения.
  4. Настроить базу данных и пользователя.
  5. Скачать и разместить Elgg в веб-корне.
  6. Настроить Nginx и проверить доступ.
  7. Пройти веб-установщик Elgg.
  8. Получить SSL через Certbot и настроить автоматическое обновление.
  9. Провести контроль качества и резервное копирование.

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

  • Для администратора сервера:

    • Обновить пакеты и установить зависимости.
    • Настроить бэкапы /etc и /var/www/html и /etc/letsencrypt.
    • Настроить мониторинг и журналы.
  • Для администратора Elgg (контент/модерация):

    • Проверить работу плагинов и разрешений.
    • Создать тестовую учётную запись и проверить назначение ролей.
    • Настроить сохранение пользовательских данных и политику содержания.
  • Для DevOps/безопасности:

    • Проверить права файлов и отключить лишние модули PHP.
    • Настроить firewall и fail2ban для защиты SSH и Nginx.
    • Регулярно запускать certbot renew –dry-run.

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

  • Сайт доступен по HTTPS по домену.
  • Установщик Elgg завершился без ошибок.
  • Администратор может войти в панель и создать тестовый контент.
  • Резервное копирование данных и конфигурации настроено.

Тестовые сценарии / Кейс тестирования

  • Проверка HTTP→HTTPS редиректа.
  • Вход администратора и создание поста.
  • Проверка загрузки файлов (upload_max_filesize).
  • Симуляция истечения certbot (renew –dry-run).

Безопасность и рекомендации

  • Ограничьте доступ к /var/www/html/data только для www-data.
  • Регулярно применяйте обновления безопасности.
  • Делайте шифрование бэкапов и храните ключи отдельно.
  • Рассмотрите WAF (Web Application Firewall) и мониторинг уязвимостей.

Короткий глоссарий

  • PHP-FPM — менеджер процессов PHP для обслуживания запросов FastCGI.
  • Certbot — клиент Let’s Encrypt для автоматического получения сертификатов.

Краткое резюме

  • Elgg можно быстро развернуть на Ubuntu 20.04 с Nginx, PHP-FPM и MariaDB.
  • Обязательно защитите сайт SSL и автоматизируйте обновление сертификатов.
  • Используйте контрольные списки и регулярные бэкапы для поддержки работоспособности.

Спасибо — теперь у вас есть рабочая платформа Elgg, готовая к настройке под ваши образовательные или корпоративные задачи.

Поделиться: 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 быстро