Перейти к содержанию

Сопровождение системы#

Отладка развёрнутых приложений#

В первую очередь нужно подключиться к серверу, где развёрнуто приложение, по SSH. Для подключения потребуется авторизация.

Данные авторизации#

Чтобы получить данные авторизации откройте репозиторий сайта (там, где находятся .env, configuration.dockerfile, docker-compose.yml и т.д.) и найдите следующие значения:

  • адрес сервера, находится в файле hosts, в поле hosting;
  • порт сервера, находится в файле group_vars/hosting, в поле ansible_port;
  • логин, находится в файле group_vars/hosting, в поле ansible_user;
  • пароль, находится в файле group_vars/hosting, в поле ansible_password.

Подключение по SSH в Windows#

Есть несколько способов подключения к серверу по SSH в Windows.

ssh

В Windows 10 и выше встроена команда ssh. Она работает аналогично соответствующей команде в Linux. Чтобы подключиться по SSH, в командной строке нужно ввести команду ssh, указав логин и адрес сервера:

ssh <логин>@<адрес сервера>

Или так, если нужно также указать порт:

ssh -p<порт сервера> <логин>@<адрес сервера>

После ввода команды и нажатия на Enter, нужно будет ввести пароль:

<логин>@<адрес сервера>'s password:

Обращайте внимание на то, что символы, даже привычные звёздочки, не будут отображаться при вводе.

PuTTY

Скачать PuTTY можно отсюда

Чтобы подключиться с помощью PuTTY, для начала нужно сделать следующее. В поле Host Name (or IP address) ввести адрес сервера. Если нужно ввести порт, заменить его значением «22» в поле Port. Затем нажать кнопку Open.

PuTTY выведет новое окно, представляющая собой командную оболочку. Сначала нужно будет ввести логин:

login as:

Затем нужно будет ввести пароль:

<логин>@<адрес сервера>'s password:

Обращайте внимание на то, что символы, даже привычные звёздочки, не будут отображаться при вводе.

PuTTY ssh Успешное подключение

Работа в SSH#

При успешном подключении вас встретит Linux с командной оболочкой bash.

Поиск сайта

В Лексеме большинство папок сайтов находятся в папке «sites». Чтобы перейти в эту папку, нужно ввести команду cd:

~$ cd sites

Аналогично с помощью этой команды можно перейти в любую другую папку:

~/sites$ cd desk.dev.lan

Обращайте внимание на то, что перед долларом отображается папка, в которой вы находитесь.

Команда cd принимает не только название папки, но и путь к ней. Например, достаточно написать следующее, чтобы перейти к папке сайта:

~$ cd sites/desk.dev.lan

Чтобы посмотреть содержимое папки, нужно ввести команду ls. Вывод этой команды будет выглядеть следующим образом:

~/sites/desk.dev.lan$ ls
clearing.sh  docker-compose.yml

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

~/sites/desk.dev.lan$ ls -a
.  ..  clearing.sh  docker-compose.yml  .env

Отслеживание состояния сайта

Убедитесь, что в папке вашего сайта есть файл «docker-compose.yml», иначе команда docker-compose работать не будет.

Проекты на платформе Lexema 8.4 собираются в docker-образы: образ приложения, которое содержит ядро и библиотеки, и образы сервисов, которые использует приложение. При развёртывании сайта эти docker-образы скачиваются и запускаются.

Так вот, чтобы посмотреть запущены ли до сих пор все эти образы или нет, нужно ввести команду docker-compose ps:

~/sites/desk.dev.lan$ docker-compose ps
Краткая сводка по столбцам таблицы:
  • Name — имя docker-образа;
  • State — состояние docker-образа, может иметь одно из следующих значений:
    • Up означает, что docker-образ продолжает работать;
    • Exited означает, что при запуске docker-образа или в момент его выполнения возникла ошибка.
  • Ports — порт docker-образа, на котором он работает. Основное, что нужно знать, это то, что у каждого docker-образа порт должен быть уникальным.

Имена сервисов обычно соответствуют шаблону:

<адрес сайта>_<имя сервиса или app>_1_<уникальный номер>

Под словом «app» подразумевается docker-образ приложения.

Логи сайта

Для того, чтобы посмотреть логи docker-образов в процессе работы, нужно ввести команду docker-compose logs:

~/sites/desk.dev.lan$ docker-compose logs

Однако это команда выводит слишком много информации, иногда вразнобой, соответственно трудно эту информацию разобрать. Для решения этой проблемы можно воспользоваться командой grep. Она фильтрует выводимую информацию по переданному шаблону.

Вводить команду grep нужно следующим образом, указав шаблон:

~/sites/desk.dev.lan$ docker-compose logs | grep <шаблон>

Пример:

~/sites/desk.dev.lan$ docker-compose logs | grep app_1_

Если шаблон содержит пробелы, его нужно обернуть в ординарные кавычки.

Для того, чтобы посмотреть логи не всех docker-образов, а только одного, нужно ввести команду docker logs, указав имя docker-образа:

~/sites/desk.dev.lan$ docker logs <имя docker-образа>

Пример:

~/sites/desk.dev.lan$ docker logs desk_dev_lan_app_1_91a354797cea

Работа в docker-образе

Docker позволяет выполнять команды внутри docker-образов, такие как cd, ls, grep и т.д., с помощью команды docker exec:

~/sites/desk.dev.lan$ docker exec <имя docker-образа> <команда> [аргументы...]

Пример:

~/sites/desk.dev.lan$ docker exec desk_dev_lan_app_1_91a354797cea ls -a

Можно даже запустить bash внутри bash:

~/sites/desk.dev.lan$ docker exec -it <имя docker-образа> bash

Пример:

~/sites/desk.dev.lan$ docker exec -it desk_dev_lan_app_1_91a354797cea bash
/sites/app.lexema.ru# ls

Последняя команда особенно полезна для docker-образа приложения, так как этот docker-образ содержит в себе внутренние сервисы, такие как gate, data и file.