Сопровождение системы#
Отладка развёрнутых приложений#
В первую очередь нужно подключиться к серверу, где развёрнуто приложение, по 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:
Обращайте внимание на то, что символы, даже привычные звёздочки, не будут отображаться при вводе.
Работа в 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
.