Как установить кодовую базу Gallery2 на сервере с ISPConfig
Version 1.0
Author:
Введение
Gallery2 — веб-приложение для управления фотографиями на вашем сайте. Это руководство объясняет, как установить кодовую базу (codebase) Gallery2 на сервер под управлением ISPConfig. Кодовая база — это центральная директория с файлами Gallery2, которая обслуживает множество лёгких «multisite» установок.
Примечание: как настроить мультисайт описано в отдельном руководстве «Howto setup a Gallery2 multisite on an ISPConfig server».
Краткие термины
- codebase — директория с файлами Gallery2 (несколько мегабайт). Одна кодовая база обслуживает любое количество multisite-установок. Должна быть доступна по интернету.
- multisite — лёгкая установка Gallery2, зависящая от общей codebase. Содержит только несколько файлов (main.php, index.php, embed.php, upgrade/index.php, lib/support/index.php, config.php и опционально .htaccess).
Краткая 1‑строчная дефиниция: multisite — это «тонкая» установка, использующая центральную кодовую базу, для быстрого развёртывания отдельных сайтов с минимальным дисковым потреблением.
Преимущества схемы кодовой базы + multisite
- Экономия дискового пространства: только одна полная копия Gallery2 хранится в codebase. Каждая мультисайт-установка занимает лишь килобайты плюс фотографии.
- Проще обновлять: замените codebase на новую версию — затем посетите каждую мультисайт-установку для локального обновления. Кодовая база обновляется один раз.
- Изолированность: multisite-установки независимы с точки зрения пользователей, альбомов и прав.
Пример конфигурации, используемый в руководстве
- Gallery2 версия 2.1.2 (пример)
- Сайт для codebase: http://gallery.hostingcompany.tld/
- Пример multisite: http://www.mywebsite.tld/gallery/
- Веб-сервер (виртуальный хост): web1
- MySQL база: web1_db1
- MySQL пользователь: web1_u1
- Дистрибутив Linux: Debian
Перед началом — требуемое и полезное
Обязательные элементы:
- Доступ в ISPConfig с правами администратора.
- root-доступ по SSH к серверу.
- Включённые MySQL и PHP для сайта в ISPConfig.
- Возможность загружать файлы на веб-каталог (FTP/SFTP/ISPConfig файловый менеджер).
Рекомендуется:
- Резервная копия текущего веб-контента.
- HTTPS (SSL) для хоста codebase.
- Понимание прав файловой системы на сервере (www-data или другой пользователь Apache/nginx).
Шаг 1 — Создать сайт в ISPConfig для кодовой базы
- В ISPConfig через меню выберите «Новый сайт» (New site).
- На вкладке «Базовые» (Basis) укажите: hostname = gallery, domain = hostingcompany.tld.
- Включите MySQL и PHP-скрипты для этого сайта. Отключите PHP Safe Mode, если он включён.
Важно: настройки UI в ISPConfig могут отличаться по локализации. Следуйте названиям полей в вашей версии панели.
Шаг 2 — Создать администратора сайта (FTP/SFTP-пользователя)
- В главном меню ISPConfig выберите «ISP Manager».
- В дереве структуры выберите новый сайт (например gallery.hostingcompany.tld).
- Перейдите на вкладку «Пользователь и почта» (User and Email).
- Нажмите «Новый» и создайте пользователя, задав email.
- Дайте этому пользователю права администратора сайта и сохраните.
Этот пользователь позволит загружать файлы и управлять сайтами через FTP/SFTP.
Шаг 3 — Создать базу данных MySQL для сайта
- Перейдите на вкладку «Опции» (Options) сайта в ISPConfig.
- Создайте новую базу данных. ISPConfig выдаст параметры, например:
Database name: web1_db1
Database user: web1_u1
Database password: mypassword
- Введите пароль для пользователя базы данных и нажмите «Сохранить».
Запишите эти данные — они понадобятся при установке Gallery2.
Шаг 4 — Скачивание и распаковка Gallery2 в веб-каталог
Подключитесь к серверу под root и перейдите в веб-каталог сайта (пример):
cd /var/www/web1/web/Скачайте последнюю «typical» сборку Gallery2. В примере версия 2.1.2:
wget http://surfnet.dl.sourceforge.net/sourceforge/gallery/gallery-2.1.2-typical.tar.gzПримечание: выберите ближайший зеркальный сервер SourceForge при необходимости.
Распакуйте архив и удалите tar.gz-файл:
tar xvfz gallery-2.1.2-typical.tar.gz
rm *.tar.gzОбычно распаковка создаёт папку gallery2. Переместите содержимое в корень сайта и удалите пустую папку:
cd gallery2
mv * ../
cd ../
rmdir gallery2Удалите дефолтную index.html (если она есть):
rm index.htmlПроверьте права и владельца файлов — веб-сервер должен иметь доступ для чтения к PHP‑файлам.
Шаг 5 — Создать директорию хранения (g2data)
Gallery2 хранит загружаемые фотографии и кэш в отдельной директории. Создайте её и назначьте владельца веб-сервера:
mkdir g2data
chown -R www-data:www-data g2dataЕсли ваш веб-процесс работает под другим пользователем (например wwwrun, apache), используйте соответствующего владельца.
Важно: g2data должна быть записываемой для веб-сервера.
Шаг 6 — Запуск инсталлятора Gallery2 (создание codebase)
Откройте браузер и перейдите на URL вашего сайта codebase, например:
http://gallery.myhostingcompany.tld
Вы будете перенаправлены на инсталлятор: http://gallery.myhostingcompany.tld/install/
Пошагово через инсталлятор
- Выберите язык и нажмите «Begin Installation» (Начать установку).
- На экране появится случайный код аутентификации (выделен красным).
- На сервере в /var/www/web1/web создайте пустой файл login.txt и вставьте туда этот код.
cd /var/www/web1/web
nano login.txt # вставьте код из инсталлятораВ инсталляторе нажмите Authenticate Me. Если аутентификация успешна — Continue to Step 2.
Step 2: Система проверит нужные настройки. Если все OK — Continue to Step 3.
Step 3: Выберите тип установки — Standard (Стандартная), так как мы создаём codebase. Continue to Step 4.
Step 4: Установка проверит права папки g2data. Если вы уже сделали chown, нажмите Save и Continue to Step 5.
Step 5: Введите параметры базы данных:
- MySQL database name: web1_db1
- MySQL username: web1_u1
- MySQL user password: (введите ранее заданный пароль)
Нажмите Save и Continue to Step 6.
Step 6: Создайте администратора Gallery2 (логин, email, пароль). Нажмите Create и Continue to Step 7.
Step 7: Инсталлятор попытается создать config.php. На сервере создайте пустой файл и дайте права на запись для Apache:
cd /var/www/web1/web
touch config.php
chmod 666 config.phpЗатем в браузере нажмите Create config file. Если успешно — Continue to Step 8.Step 8: Кодовая база устанавливается. Если успешно — Continue to Step 9.
Step 9: Установка модулей. Поскольку мы создаём только codebase, снимите галочки или нажмите «(un)check all», затем Continue to step 10 Without Activating.
Step 10: Проверьте права доступа и следуйте инструкциям на экране. На сервере выполните (как root):
chmod 755 /var/www/web1/web
chmod 644 /var/www/web1/web/config.phpПосле этого в браузере нажмите Check Again. Если проверки пройдены — Continue to Step 11.- Step 11: Завершение установки. Нажмите Go to my Gallery!
Поздравляем — у вас установлен Gallery2 codebase.
Что делать после установки codebase
- Проверьте, что вход администратора работает.
- Создайте тестовый альбом и загрузите фото, чтобы убедиться в работоспособности.
- Настройте резервное копирование g2data и базы данных.
Типовые команды и проверка прав
Проверка владельца и прав:
ls -la /var/www/web1/web
ls -la /var/www/web1/web/g2dataРекомендованные базовые права:
- Веб-каталог: 755
- config.php: 644 после создания
- g2data: владелец — веб-процесс, права на запись для владельца
Если вы используете SELinux, убедитесь, что контексты файлов позволяют веб-серверу писать в g2data.
Альтернативные подходы и варианты
- Использовать символьные ссылки: можно держать фактическую codebase в отдельном каталоге и делать symlink из корня сайта. Это удобно для централизованного управления версиями.
- Поместить codebase за корень веб-документа и пробрасывать доступ через точку входа. Это повышает безопасность — PHP‑файлы не должны быть доступны напрямую.
- Контейнеризация: развернуть Gallery2 в Docker-контейнере и использовать общий том для codebase и g2data.
Когда мультисайт‑подход не подходит:
- Если требуется полная изоляция файлов каждой установки (например, разная конфигурация модулей и версий), лучше делать независимые установки.
- Если вы ожидаете особую нагрузку с высокой модификацией кода для отдельных клиентов, разделённые инсталляции дают большую гибкость.
Безопасность и жёсткое укрепление (hardening)
- Переместите g2data в каталог, недоступный через веб, если возможно, и укажите путь в конфиге.
- Ограничьте права на config.php: chmod 644 после создания. Не храните config.php в записи для всех.
- Включите HTTPS (Let’s Encrypt) для site codebase.
- Отключите отображение ошибок PHP на production.
- Настройте регулярные резервные копии базы данных и g2data.
- Ограничьте доступ к панели ISPConfig внешне (IP‑фильтры, VPN).
Резервное копирование и восстановление
Резервная стратегия должна покрывать:
- Полный дамп MySQL базы (например с помощью mysqldump).
- Архивирование каталога g2data.
- Архив конфигурационных файлов сайта (config.php, .htaccess).
Пример команд для дампа БД и архива g2data:
mysqldump -u web1_u1 -p web1_db1 > /root/backup/web1_db1_$(date +%F).sql
tar czf /root/backup/g2data_$(date +%F).tar.gz /var/www/web1/web/g2dataКритерии приёмки: после восстановления сайт должен открываться, администратор может войти, тестовый альбом доступен.
Обновление codebase и сценарий отката (rollback)
Рекомендованный порядок при обновлении codebase:
- Сделайте полную резервную копию базы и g2data.
- Поставьте read-only или временно отключите доступ к сайту (maintenance).
- Замените файлы codebase на новую версию в отдельной директории.
- Проверьте локально на тестовом multisite.
- Смените symlink или скопируйте новую версию в production.
- Просмотрите логи и выполните 1–2 контрольных multisite-апдейта.
Откат: верните старую кодовую базу из резервной копии и восстановите базу данных, если обновление изменяло схему.
Отладка — частые ошибки и решения
Проблема: инсталлятор не может аутентифицировать (Authenticate Me не проходит).
- Проверьте, что файл login.txt создан в /var/www/web1/web и содержит точный код.
- Проверьте права на login.txt — веб‑сервер должен иметь доступ для чтения.
Проблема: ошибка подключения к базе данных.
- Проверьте корректность имени БД, имени пользователя и пароля.
- Проверьте, что MySQL доступен и пользователь имеет привилегии на БД.
Проблема: файлы не создаются (config.php не создан автоматически).
- Убедитесь, что вы предварительно создали пустой config.php и дали chmod 666 перед выполнением шага создания файла в инсталляторе.
- После создания установите строгие права: chmod 644 config.php.
Проблема: невозможность записать в g2data.
- Проверьте владельца g2data: chown -R www-data:www-data g2data.
- Проверьте SELinux/AppArmor ограничения.
Чек-листы по ролям
Администратор сервера (root):
- Создать сайт в ISPConfig.
- Создать MySQL базу и пользователя.
- Скопировать файлы Gallery2 в веб-каталог.
- Настроить владельцев и права на g2data и config.php.
- Настроить резервные копии и SSL.
Владелец сайта (админ Gallery2):
- Пройти инсталляцию через веб-интерфейс.
- Создать администратора Gallery2 и тестовый альбом.
- Проверить загрузку изображений и отображение миниатюр.
Разработчик/оператор:
- Тестировать обновления на тестовом окружении.
- Подготовить план отката и сохранить резервные копии.
Мини‑методология для развёртывания (Playbook)
- Подготовка: резервная копия, SSL, проверка зависимостей.
- Развёртывание: загрузка файлов, создание g2data, права.
- Инсталляция: пройти все шаги инсталлятора.
- Тестирование: создать альбом, загрузить фото.
- Мониторинг: проверить логи и производительность.
Decision flow (простая схема выбора подхода)
flowchart TD
A[Нужна общая кодовая база?] -->|Да| B[Использовать codebase + multisite]
A -->|Нет| C[Разделённые установки]
B --> D{Требуется изоляция модулей?}
D -->|Да| C
D -->|Нет| E[Разворачивать multisite]
C --> F[Отдельная установка каждой инстанции]Совместимость и миграция
- Gallery2 — устаревшее приложение; перед миграцией на более новый сервер проверьте совместимость PHP и MySQL.
- При переносе на другой сервер скопируйте codebase и g2data, экспортируйте и импортируйте базу данных, исправьте пути в config.php при необходимости.
Конфиденциальность и GDPR (кратко)
- Если вы храните фотографии пользователей, учтите требования к личным данным: получите согласие, предусмотрите механизм удаления данных по запросу, ограничьте доступ к приватным альбомам.
- Настройте политику резервных копий и шифрование на уровне хранения при необходимости.
FAQ (частые вопросы)
Q: Можно ли установить codebase вне веб-каталога?
A: Да. Поместите codebase в каталог вне DocumentRoot и настройте веб-точку входа или symlink. Это повышает безопасность.
Q: Нужно ли создавать отдельную базу для каждого multisite?
A: Обычно да — каждая multisite использует свою базу или префикс, чтобы сохранять независимость данных.
Q: Что делать, если обновление codebase сломало multisite?
A: Откатите codebase до рабочей версии и восстановите базу из бэкапа, затем проведите тестовое обновление на подмножествах.
1‑строчный глоссарий
- codebase: центральная директория с файлами Gallery2.
- multisite: лёгкая установка, использующая общую codebase.
- g2data: каталог хранения загружаемых изображений и кэша.
Итог и рекомендации
Кодовая база Gallery2 позволяет централизовать файлы и экономить дисковое пространство при одновременном упрощении обновлений. Следуйте порядку в этом руководстве: подготовьте сайт в ISPConfig, настройте пользователя и базу данных, скачайте и распакуйте Gallery2, создайте g2data и установите права, затем пройдите веб‑инсталлятор. После установки настройте резервное копирование, HTTPS и регулярное тестирование обновлений.
Важно: тестируйте обновления на отдельном окружении, чтобы избежать простоев продуктивных multisite.
Полезные ссылки:
- Официальный сайт Gallery2: http://gallery.menalto.com/
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента