#Множественное управление средой

Если вы поддерживаете несколько приложений NocoBase, таких как `dev`, `test`, `staging`, `prod` и т. д., вы можете сохранить их как среду CLI соответственно. Большинство будущих команд `nb` по умолчанию будут действовать в текущей среде, поэтому важно подтвердить, какую среду вы используете, прежде чем выполнять такие команды, как `nb app`, `nb api` и `nb db`.

Начиная с этой версии, CLI разделяет концепцию на `current env` и `last env`. Обычно вам нужно заботиться только о `current env` — среде, которую использует текущая среда выполнения оболочки или агента. Интерфейс командной строки вернется к глобальному `last env` только в том случае, если режим сеанса не включен.

## Быстрый индекс

| Я хочу... | Какую команду использовать |
| --- | --- |
| Создайте новую локальную среду и плавно завершите инициализацию | [`nb init`](../../api/cli/init.md) |
| Зарегистрируйте существующее приложение как CLI env | [`nb env add`](../../api/cli/env/add.md) |
| Посмотрите, какие окружения сохранены локально | [`nb env list`](../../api/cli/env/list.md) |
| Проверьте состояние подключения и аутентификации всех окружений | [`nb env status --all`](../../api/cli/env/status.md) |
| Переключите среду, которая будет использоваться последующими командами | [`nb env use`](../../api/cli/env/use.md) |
| Подтвердите, в какую среду попадет текущая команда | [`nb env current`](../../api/cli/env/current.md) и [`nb env status`](../../api/cli/env/status.md) |
| Просмотр подробных конфигураций, сохраненных в файле env | [`nb env info`](../../api/cli/env/info.md) |
| Обновите сохраненную конфигурацию окружения, позволяя CLI при необходимости повторно синхронизировать текущее состояние | [`nb env update`](../../api/cli/env/update.md) |
| Выполните повторную аутентификацию после истечения срока действия входа в систему или используйте новый метод аутентификации | [`nb env auth`](../../api/cli/env/auth.md) |
| Удалите неиспользуемые конфигурации окружения и при необходимости очистите локальные размещенные ресурсы | [`nb env remove`](../../api/cli/env/remove.md) |

:::tip Рекомендуется сначала включить режим сеанса

По умолчанию рекомендуется сначала выполнить [`nb session setup`](../../api/cli/session/setup.md). Таким образом, разные терминалы, разные оболочки или разные среды выполнения агентов могут поддерживать свой собственный `current env`, и они не будут легко влиять друг на друга во время параллельных операций.

Если режим сеанса не включен, `nb env use` вернется к обновлению глобального `last env`. В этом случае, если один терминал отключит окружающую среду, другой терминал также может пострадать.

```bash
nb session setup
```

:::

## Создание нескольких сред

Если вы хотите создать или восстановить локальное приложение, просто используйте `nb init`. Он завершит инициализацию и сохранит результаты в новой среде CLI.

```bash
nb init --env dev
nb init --env test
```

Если приложение уже существует и вы просто хотите подключить его к CLI, обычно проще использовать `nb env add`:

```bash
nb env add staging --api-base-url http://staging.example.com/api --auth-type oauth
nb env add prod --api-base-url https://api.example.com/api --auth-type token --access-token <token>
```

Первый больше касается «инициализации среды», а второй — «регистрации существующей среды». Если вы просто подключаетесь к существующему приложению, просто используйте `nb env add` по умолчанию.

## Просмотр настроенной среды

Сначала используйте `nb env list`, чтобы увидеть, какие оболочки были сохранены локально:

```bash
nb env list
```

Эта команда отображает только саму конфигурацию и не проверяет статус приложения. Если вы хотите просмотреть статус подключения и аутентификации, используйте `nb env status --all`:

```bash
nb env status --all
```

Обычно вы увидите такие значения статуса, как `ok`, `auth failed`, `unreachable`.

## Переключение текущей среды

Используйте `nb env use` для переключения среды:

```bash
nb env use dev
```

После завершения переключения последующие команды, в которых отсутствует `--env`, будут использовать эту среду по умолчанию.

## Проверьте текущую среду

Если вы не уверены, в какую среду попадет текущая команда, сначала выполните эти две команды:

```bash
nb env current
nb env status
```

`nb env current` используется для просмотра имени, `nb env status` используется для проверки доступности текущей среды и нормальной аутентификации.

## Просмотр деталей одного окружения

Если вы хотите увидеть, какие конфигурации сохранены в определенной среде, используйте `nb env info`:

```bash
nb env info dev
nb env info dev --json
nb env info dev --field app.url
nb env info dev --show-secrets
```

Среди них `--field` подходит для приема только одного значения в скрипте. `--show-secrets` будет отображать конфиденциальную информацию, такую ​​как токены и пароли, в виде обычного текста. Используйте их только тогда, когда вам явно необходимо устранить неполадки.

## Обновить конфигурацию окружения

`nb env update` используется для настройки конфигурации сохраненной среды. Например, адрес API, метод аутентификации, источник исходного кода, порт приложения и параметры базы данных. После завершения обновления интерфейс командной строки автоматически выполняет последующие действия на основе изменений.

Если вы просто хотите, чтобы CLI повторно синхронизировался в соответствии с последним состоянием текущей среды, просто напишите так:

```bash
nb env update
nb env update prod
```

Если вы хотите изменить информацию о соединении или локальную конфигурацию, сохраненную в этом окружении, вы можете явно указать параметры:

```bash
nb env update prod --api-base-url https://api.example.com/api
nb env update prod --access-token <token>
nb env update dev --app-port 13080 --timezone Asia/Shanghai
```

Здесь вы можете сначала вспомнить суждение по умолчанию:

- Чтобы изменить информацию о соединении или локальную конфигурацию, сохраненную в env, используйте `nb env update`.
- Интерфейс приложения, плагин или доступные возможности CLI только что изменились, вы также можете снова выполнить `nb env update`.
- Статус входа истек или вам необходимо пройти процедуру аутентификации повторно, используйте `nb env auth`
– Чтобы посмотреть, что сохранено в данный момент, используйте `nb env info`.

Если вы измените локальные рабочие конфигурации, такие как `app-port`, `timezone` и `db-*`, `update` изменит только сохраненное значение и не перезапустит приложение автоматически. Вообще говоря, `nb app restart --env <name>` будет выполнен позже; если изменение затрагивает встроенную базу данных, управляемую через CLI, используйте `nb app restart --env <name> --with-db`.

## Повторная аутентификация

Если env был сохранен, но срок входа в систему истек или вы хотите переключить метод аутентификации, вы можете пройти повторную аутентификацию:

```bash
nb env auth
nb env auth prod
nb env auth prod --auth-type oauth
nb env auth prod --auth-type basic --username admin --password secret
nb env auth prod --auth-type token --access-token <api-key>
```

Если имя среды опущено, CLI использует текущую среду env. После завершения аутентификации CLI автоматически выполняет последующую синхронизацию.

## Удалить среду

Эти сценарии являются наиболее запутанными. Сначала вы можете запомнить предложение по умолчанию:

- Если вы просто хотите остановить приложение, используйте `nb app stop`.
- Я также хочу остановить выполнение встроенной базы данных на текущем компьютере, используйте `nb app stop --with-db`
- Если вы уверены, что этот конверт больше не нужен, но хотите сначала сохранить хранилище и файлы локального приложения, используйте `nb env remove`.
- Очистите даже локальные ресурсы хостинга и используйте `nb env remove --purge`.

Если вы хотите удалить только сохраненную конфигурацию env:

```bash
nb env remove staging
```

Если это локальная среда или среда, размещенная в Docker, и вы также хотите очистить работающие ресурсы и данные хранилища на локальном компьютере, вы можете добавить `--purge`:

```bash
nb env remove test --purge
```

В неинтерактивном режиме `nb env remove` необходимо явно передать в `--force`:

```bash
nb env remove test --purge --force
```

`--purge` будет очищать только ресурсы, управляемые через CLI, на текущем компьютере. Для среды удаленного API он не удалит саму удаленную службу.

Если вы просто хотите остановить приложение и встроенную базу данных, управляемую через CLI, просто напишите:

```bash
nb app stop --env app1 --with-db
```

Если вы хотите удалить эту среду, но по-прежнему хотите сохранить хранилище и локальные файлы приложения:

```bash
nb env remove app1 --force
```

Если вы действительно хотите очистить исходное содержимое этой среды, добавьте `--purge`:

```bash
nb env remove app1 --purge --force
```

Для локальной среды npm/Git, управляемой загрузками CLI, `--purge` также удаляет файлы локальных приложений, размещенных в CLI. Для окружения HTTP или SSH будет удалена только конфигурация окружения, сохраненная в CLI, но не будет удалена сама внешняя служба.

## Ссылки по теме

- [Справочник по командам `nb env`](../../api/cli/env/index.md)
- [`nb env update`](../../api/cli/env/update.md)
- [`nb session` Справочник команд](../../api/cli/session/index.md)
- [замысел дизайна приложения](../cli-design/nb-app-design-intent.md)
- [Управление приложением](./manage-app.md)
