Порядок обновления установленной вручную системы: git pull, обновление зависимостей, миграции БД, а также откат обновления, если что-то пошло не так.
Для чистой установки есть отдельная инструкция.
Если мы хотим, чтобы обновления были обратимы, то
Смотрим на каком коммите мы находимся:
git log -1
и запоминаем (лучше в файл) хэш текущего коммита (например c729a2b43520275f1abc8c25bd9770f5d6c43519)
Если страшно, то можно сделать резервную копию
Просто скачиваем свежую версию при помощи git:
git pull
После этого обновляем зависимости
composer update
С этого места система в общем случае неконсистентна, поэтому быстро обновляем структуру БД:
./yii migrate
Собственно все. Система снова консистентна и находится в последней версии.
Инсталляции, развернутые по прежней инструкции, публиковались с DocumentRoot в корне проекта:
запросы переписывал в подпапку web лежащий там .htaccess, и во всех адресах оседал лишний
токен - https://inventory.domain.local/web/techs/index. Канон теперь - DocumentRoot в самой
подпапке web, адреса без /web (установка).
Переход не обязателен и не срочен: старые адреса работают в любом случае, менять их
в интеграциях можно постепенно. Но выполнить его стоит - хотя бы потому, что при DocumentRoot
в корне проекта в зоне досягаемости веб-сервера оказываются исходники, config/db-local.php
с паролем БД и runtime.
Вариант 1 - сменить DocumentRoot (рекомендуется). В конфиге виртуального хоста apache
меняем корень сайта и блок <Directory> на подпапку web:
DocumentRoot "/var/www/arms/web"
<Directory "/var/www/arms/web">
Options -Indexes +Includes
AllowOverride All
Require all granted
</Directory>
и перечитываем конфигурацию:
apachectl configtest && systemctl reload apache2
Вариант 2 - если доступа к конфигу веб-сервера нет. Оставляем DocumentRoot в корне проекта
(его .htaccess продолжит переписывать запросы в web/), но говорим приложению, что базовый
адрес пуст, - в config/web-local.php:
<?php
return [
'components' => [
//адреса приложения перестают включать /web, хотя корень сайта прежний
'request' => ['baseUrl' => ''],
],
];
Проверяем, что интерфейс открывается по чистому адресу и что старый адрес тоже жив:
curl -sI https://inventory.domain.local/techs/index | head -1
curl -sI https://inventory.domain.local/web/techs/index | head -1
После перехода:
/web. Обычно это незаметно, но если после перехода наблюдаются странности с авторизацией -
достаточно почистить куки сайта и залогиниться заново;/web/..., совместимость можно выключить
(как).Ну или просто раньше было лучше. Тогда в обратном порядке делаем:
Нужно делать, только если при обновлении БД были применены какие-то миграции. Итак, нужно отменить последние миграции. Может быть вы помните сколько было применено, но на всякий случай смотрим историю миграций:
./yii migrate/history
считаем сколько миграций было применено при последнем обновлении (по дате применения). Пример:
./yii migrate
Yii Migration Tool (based on Yii v2.x)
Total 1 new migration to be applied:
m191219_100002_fix_contracts_in_materials_id
Apply the above migration? (yes|no) [no]:y
*** applying m191219_100002_fix_contracts_in_materials_id
> alter column id in table contracts_in_materials to integer NOT NULL AUTO_INCREMENT ... done (time: 0.010s)
*** applied m191219_100002_fix_contracts_in_materials_id (time: 0.025s)
1 migration was applied.
Migrated up successfully.
./yii migrate/history
Yii Migration Tool (based on Yii v2.x)
Showing the last 10 applied migrations:
(2020-01-12 18:54:05) m191219_100002_fix_contracts_in_materials_id
(2020-01-12 14:41:12) m191219_100001_fix_materials_id
(2020-01-12 14:41:12) m191219_100000_add_users_employ_date
(2020-01-12 14:41:11) m191208_173041_fix_users_id
(2020-01-12 14:41:11) m191208_173041_fix_many_2_many
(2020-01-12 14:41:11) m191208_164401_add_default_ip_values_in_comps
(2020-01-12 14:41:11) m191204_062411_decimal_prices
(2020-01-12 14:41:10) m191120_095815_add_cost_column_to_org_phones_table
(2020-01-12 14:41:10) m191120_062411_float_prices
(2020-01-12 14:41:10) m191119_172409_add_charge_column_to_contracts_table
В примере мы применяем 1 миграцию и в истории видим что дата применения миграции m191219_100002_fix_contracts_in_materials_id вот только-что, а остальные применены давно. собственно нам надо отменить одну:
./yii migrate/down 1
с этого момента мы снова не консистентны.
делаем git checkout на старый коммит:
git checkout c729a2b43520275f1abc8c25bd9770f5d6c43519
после чего git правда скажет, что мы находимся в состоянии detached HEAD (отцепились от ветки).
Не забываем откатить и зависимости под старую версию кода:
composer update
надо вернуться на ветку и обновиться:
git checkout master
git pull
composer update
./yii migrate