103 lines
6.6 KiB
Markdown
103 lines
6.6 KiB
Markdown
# ⚠️ Устарело ⚠️ OCCWeb terminal
|
||
|
||
*Read in [English](README.md).*
|
||
|
||
### Веб-терминал для администраторов для запуска occ-команд Nextcloud
|
||
|
||

|
||
|
||
|
||
## ⚠️ Устарело ⚠️
|
||
|
||
Поскольку Nextcloud не имеет встроенной поддержки асинхронных операций
|
||
(из-за использования PHP), это приложение считается устаревшим и больше не
|
||
будет поддерживать будущие версии Nextcloud (19+). Автору не удалось найти
|
||
способ реализовать полноценную поддержку интерактивных и долгих occ-задач в
|
||
веб-терминале без введения дополнительных зависимостей (например, через
|
||
websockets), а отсутствие настоящей асинхронности может привести к серьёзным
|
||
проблемам на больших инсталляциях.
|
||
[Этот issue](https://github.com/nextcloud/server/issues/16726) объясняет,
|
||
почему разработчик решил больше не поддерживать это приложение.
|
||
|
||
|
||
## Установка
|
||
|
||
Сборка не нужна (чистый PHP + vanilla JS). Клонируйте прямо в `apps/`
|
||
целевого сервера и включите приложение:
|
||
|
||
```bash
|
||
cd /var/www/nextcloud/apps
|
||
git clone https://github.com/fanategorius/occweb.git
|
||
chown -R www-data:www-data occweb # укажите вашего пользователя веб-сервера
|
||
sudo -u www-data php /var/www/nextcloud/occ app:enable occweb
|
||
```
|
||
|
||
`occ app:enable` сам корректно проставит версию приложения в базе, поэтому
|
||
оговорки из раздела «Обновление кода на сервере» ниже к свежей установке не
|
||
относятся — они актуальны только когда приложение уже включено и вы
|
||
обновляете его на месте.
|
||
|
||
Перед установкой сверьте версию вашего Nextcloud с диапазоном в
|
||
`appinfo/info.xml` (`dependencies/nextcloud`, `min-version`/`max-version`)
|
||
— `occ app:enable` откажется включать приложение вне этого диапазона. Если
|
||
нет доступа к GitHub — соберите tar.gz через `make dist` (есть готовый
|
||
Makefile) и распакуйте его в `apps/` на целевом сервере.
|
||
|
||
## Режим SQL-запросов
|
||
|
||
Введите `sql` в терминале, чтобы переключиться в режим SQL-запросов и
|
||
выполнять произвольные SQL-запросы напрямую к базе данных Nextcloud (только
|
||
для администраторов). Запросы разделяются `;`. Используйте **Shift+Enter**
|
||
для перехода на новую строку и **Enter**, чтобы отправить весь блок одним
|
||
запросом — это важно для скриптов вида
|
||
`SET vars.x = 'value'; SELECT current_setting('vars.x');`, так как все
|
||
запросы, отправленные одним блоком, выполняются в рамках одного соединения
|
||
(сессии) с базой данных. Введите `occ`, чтобы вернуться в обычный режим
|
||
occ-команд.
|
||
|
||
⚠️ Для `DELETE`/`UPDATE` нет отмены — внимательно проверяйте, что вы
|
||
собираетесь выполнить, желательно сначала на некритичной записи/пользователе.
|
||
|
||
## ⚠️ Предупреждения ⚠️
|
||
|
||
- Это приложение не является настоящим интерактивным терминалом и не
|
||
поддерживает долгие задачи.
|
||
Поэтому на крупных инсталляциях команды вроде `occ files:scan` могут
|
||
завершаться по таймауту с ошибкой.
|
||
- Не используйте `occ maintenance:mode --on`, это очевидно...
|
||
|
||
## Обновление кода на сервере
|
||
|
||
После того как новый код скопирован/спуллен в `nextcloud/apps/occweb/`,
|
||
обязательно перезапустите PHP, иначе изменения не применятся. `occ
|
||
app:disable`/`app:enable` **не помогает** — эта команда не сбрасывает
|
||
opcode-кэш PHP, из-за чего может продолжать работать старая закэшированная
|
||
версия кода (характерный симптом — маршруты внезапно отвечают 404).
|
||
Перезапустите сам процесс PHP, например:
|
||
|
||
```bash
|
||
sudo systemctl restart php8.3-fpm # укажите свою версию PHP
|
||
sudo systemctl restart apache2 # если PHP работает как модуль Apache
|
||
```
|
||
|
||
### Если меняете `<version>` в `appinfo/info.xml`
|
||
|
||
Nextcloud хранит установленную версию каждого приложения в базе
|
||
(`installed_version` в `oc_appconfig`) отдельно от `<version>` в
|
||
`info.xml`. Если вы правите файлы на месте (копированием/`git pull`), а не
|
||
через App Store или `occ upgrade`, эти два значения расходятся — и
|
||
Nextcloud считает, что «инстансу нужен апгрейд», блокируя большинство
|
||
`occ`-команд за CLI-визардом обновления, хотя само ядро Nextcloud никак не
|
||
менялось. После бампа версии синхронизируйте её вручную:
|
||
|
||
```bash
|
||
sudo -u www-data php /var/www/nextcloud/occ config:app:set occweb installed_version --value="X.Y.Z"
|
||
```
|
||
|
||
(то же значение `X.Y.Z`, что и в новом `<version>`), затем перезапустите
|
||
PHP, как описано выше. На свежую установку через `occ app:enable` это не
|
||
распространяется — там версия проставляется корректно автоматически.
|
||
|
||
## Планы (TODO):
|
||
См. [открытые issues](https://github.com/Adphi/occweb/issues)
|