Установка 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)
- Подготовить сервер и DNS.
- Обновить систему.
- Установить Nginx, MariaDB, PHP и расширения.
- Настроить базу данных и пользователя.
- Скачать и разместить Elgg в веб-корне.
- Настроить Nginx и проверить доступ.
- Пройти веб-установщик Elgg.
- Получить SSL через Certbot и настроить автоматическое обновление.
- Провести контроль качества и резервное копирование.
Ролевые чек-листы
Для администратора сервера:
- Обновить пакеты и установить зависимости.
- Настроить бэкапы /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, готовая к настройке под ваши образовательные или корпоративные задачи.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента