Обновление Elgg
Этот документ проведет вас через шаги, необходимые для обновления вашей установки Elgg до последней версии.
Если вы написали пользовательские плагины, вам также следует прочитать руководства для разработчиков для информации об обновлении кода плагинов для последней версии Elgg.
Содержание
Советы
Сделайте резервную копию вашей базы данных, каталога данных и кода
Обратите внимание на любые комментарии, специфичные для версии, ниже
Для версий ниже 2.0 рекомендуется обновлять только одну минорную версию за раз
Вы можете обновиться с любой минорной версии до любой более высокой минорной версии в рамках той же мажорной (2.0 -> 2.1 или 2.0 -> 2.3)
Вы можете обновить только последнюю минорную версию предыдущей мажорной версии до любой минорной версии следующей версии (2.3 -> 3.0 или 2.3 -> 3.2, но не 2.2 -> 3.x).
Начиная с Elgg 2.3.* вы можете обновиться до любой будущей версии Elgg без необходимости проходить через каждую минорную версию (например, вы можете обновиться напрямую с 2.3.8 до 3.2.5, не обновляясь до 3.0 и 3.1)
Попробуйте новую версию на тестовом сайте перед обновлением
Сообщайте о любых проблемах в плагинах авторам плагинов
Если вы автор плагина, вы можете сообщить о любых проблемах обратной совместимости на GitHub
С 2.3 на 3.0
1. Обновите composer.json
Если вы использовали стартовый проект Elgg для установки Elgg 2.3, вам может потребоваться обновить ваш composer.json:
измените требования платформы на PHP >= 7.0
по желанию, установите параметры оптимизации автозагрузчика
по желанию, отключите плагин fxp-asset в пользу asset-packagist
Ваш composer.json будет выглядеть примерно так (в зависимости от того, какие изменения вы могли внести самостоятельно):
{
"type": "project",
"name": "elgg/starter-project",
"require": {
"elgg/elgg": "3.*"
},
"config": {
"process-timeout": 0,
"platform": {
"php": "7.0"
},
"fxp-asset": {
"enabled": false
},
"optimize-autoloader": true,
"apcu-autoloader": true
},
"repositories": [
{
"type": "composer",
"url": "https://asset-packagist.org"
}
]
}
2. Обновите .htaccess
Найдите строку:
RewriteRule ^(.*)$ index.php?__elgg_uri=$1 [QSA,L]
И замените ее на:
RewriteRule ^(.*)$ index.php [QSA,L]
3a. Обновление через Composer (рекомендуется)
Если ваш проект Elgg 2.3 был установлен с помощью composer, вы можете следовать этой последовательности:
Сделайте резервную копию вашей базы данных, каталога данных и кода
composer self-update
cd ./path/to/project/root
composer require elgg/elgg:~3.0.0
composer update
vendor/bin/elgg-cli upgrade async -v
Примечание
В некоторых случаях обновление через командную строку может завершиться неудачей, потому что сначала необходимо применить некоторые изменения схемы базы данных. В этом случае вам нужно выполнить миграции Phinx вручную
3b. Ручное обновление (устаревший подход)
Ручные обновления — это серьезное мероприятие для администраторов сайтов. Мы не рекомендуем поддерживать установку Elgg с помощью дистрибутивов ZIP. Сэкономьте время, научившись использовать composer и системы контроля версий, такие как git. Эта задача также усложнится, если у вас есть сторонние плагины и/или вы внесли какие-либо изменения в файлы ядра!
Сделайте резервную копию вашей базы данных, каталога данных и кода
Войдите как администратор на ваш сайт
Скачайте новую версию Elgg с сайта http://elgg.org
- Обновите файлы
При обновлении до мажорной версии вам нужно перезаписать все файлы ядра и удалить любые файлы, которые были удалены из ядра Elgg, так как они могут мешать правильной работе вашего сайта.
При обновлении до минорной версии или патчинге вам нужно перезаписать все файлы ядра.
- Объедините любые новые изменения в правила переписывания
Для Apache из
install/config/htaccess.distв.htaccessДля Nginx из
install/config/nginx.distв конфигурацию вашего сервера (обычно внутри/etc/nginx/sites-enabled)
Выполните асинхронные обновления на http://your-elgg-site.com/admin/upgrades
Примечание
Любые модификации должны были быть написаны в плагинах, чтобы они не были потеряны при перезаписи. Если это не так, позаботьтесь о сохранении ваших модификаций.
Примечание
Если вы не можете получить доступ к скрипту upgrade.php и получаете ошибку, добавьте $CONFIG->security_protect_upgrade = false; в ваш settings.php и удалите его после завершения всех шагов обновления.
Примечание
Если вы столкнетесь с проблемами с плагинами во время обновления, добавьте пустой файл с именем disabled в ваш каталог /mod/. Это отключит плагины, чтобы вы могли завершить обновление ядра. Затем вы сможете решать проблемы по каждому плагину отдельно.
Если вы установили Elgg с помощью дистрибутивного пакета, но теперь хотите перейти на composer:
Обновите текущую установку с помощью метода ручного обновления
Переместите вашу кодовую базу во временное расположение
Создайте новый проект composer, используя стартовый проект Elgg, следуя инструкциям по установке в корневом каталоге вашей текущей установки
Скопируйте сторонние плагины из вашей старой установки в каталог
/modЗапустите установщик Elgg, используя ваш браузер или инструмент
elgg-cliКогда вы дойдете до шага базы данных, предоставьте те же учетные данные, которые вы использовали для ручной установки, Elgg поймет, что это существующая установка, и не перезапишет никакие значения базы данных
По желанию закоммитьте ваш новый проект в систему контроля версий
Применение патча с помощью Composer
Определение патча можно найти в Политике выпуска.
Ваше требование composer.json для Elgg должно быть ~3.y.0 (где y — минорная версия 0, 1 и т.д., которую вы хотите установить). Это обеспечит возможность легкой установки патчей без риска установки следующего минорного релиза.
{
"require": {
"elgg/elgg": "~3.0.0"
}
}
Для уверенности вы можете сначала проверить, что будет установлено/обновлено, выполнив следующую команду
# to get a full list of all packages which can be upgraded
composer update --dry-run
# or if you only wish to check for Elgg
composer update elgg/elgg --dry-run
Чтобы обновить Elgg, просто выполните
# to upgrade all packages
composer update
# or to only upgrade Elgg
composer update elgg/elgg
Более ранние версии
Проверьте документацию Elgg, соответствующую версии Elgg, на которую вы хотите обновиться, переключив версию документации в нижнем левом углу Документация по обновлению