|
|
(не показаны 53 промежуточные версии 2 участников) |
Строка 1: |
Строка 1: |
| Docker-окружение является удобной альтернативой самостоятельной сборке и настройке всех необходимых компонентов сервера.
| | [[Docker_environment|en]] | [[Docker_окружение|ru]] |
| Данная статья описывает создание и запуск бандла (набора файлов) Docker-окружения для USERSIDE, начиная с версии 3.13 и новее.
| |
| Если вы уже используете Docker-окружение для USERSIDE 3.12, то Вам обязательно необходимо ознакомиться с разделом обновления данной главы!
| |
|
| |
|
| = Требования =
| | [[File:docker-horizontal.png|right|frameless|]] |
| Необходимо, чтобы на вашем сервере был установлен Docker CE, а также Docker-compose. Для этого у Вас должен быть сервер под управлением 64-разрядной ОС Linux. Инструкции по установке Docker CE и Docker-compose, в зависимости от дистрибутива и версии Linux, Вы найдете на официальном сайте: [https://docs.docker.com/install/ Docker CE], [https://docs.docker.com/compose/install/ Docker-compose].
| |
|
| |
|
| Также необходимо установить систему управлениями версиями GIT для удобного доступа к версиям бандла.
| | Для опытных системных администраторов, использующих Docker, мы предоставляем образцы конфигурации бандла для развёртывания ERP USERSIDE. |
|
| |
|
| = Версионирование бандла =
| | Мы не распространяем Docker-образы, включающие USERSIDE или его компоненты, так как система не является свободной. Но мы предлагаем готовые Docker-образы для создания окружения, необходимого для запуска USERSIDE и его компонентов (модулей и микросервисов). |
| В старой версии бандла Docker-окружения использовался не совсем корректный способ распространения файлов. Распространялись сами файлы бандла, а не их шаблоны, что приводило к конфликтам при попытке обновить файлы бандла. В новых версиях, начиная с v3.13 распространяются файлы-шаблонов, на основании которых пользователь по желанию уже самостоятельно формирует файлы бандла (или просто копирует рабочие файлы из поставляемых шаблонов).
| |
|
| |
|
| Начиная с версии v3.13 бандла работает следующая схема версионирования. Каждая версия бандла (совпадает с номером версии USERSIDE) распространяется в отдельной ветке. Например, для USERSIDE 3.13 создана ветка v3.13, содержащая все необходимые шаблоны для развёртывания окружения для версии 3.13. Также последняя стабильная версия отображается на ветку master.
| | Инструкция по установке, настройке, обновлению и обслуживанию теперь находится в репозитории с образцами, чтобы иметь возможность вносить изменения в инструкцию для каждой конкретной версии. |
|
| |
|
| Вы можете всегда использовать ветку master не опасаясь за свои конфигурационные файлы бандла, ведь теперь распространяются не сами файлы, а их шаблоны.
| | Перейдите в репозиторий с примерами конфигурационных файлов и ознакомьтесь с инструкцией: https://github.com/userside/userside-docker |
|
| |
|
| Вы можете использовать конкретную ветку, например, v3.13, если не планируете обновление до последних версий.
| | Также у нас имеются подобные примеры окружения для запуска модулей в Docker-контейнерах: |
| | * [https://github.com/userside/usm_pon-docker-env usm_pon] |
| | * [https://github.com/userside/usm_peleng-docker-env usm_peleng] |
| | * [https://github.com/userside/usm_asterisk-docker-env usm_asterisk] |
| | * [https://github.com/userside/usm_abills-docker-env usm_abills] |
| | * [https://github.com/userside/usm_checker-docker-env usm_checker] |
|
| |
|
| '''Обратите внимание!''' Если вы используете старую версию бандла (для версии 3.12), которая изначально распространялась в ветке master, то для обновления на версию 3.13 вам обязательно необходимо ознакомиться с разделом '''Обновление'''!
| | И несколько готовых Docker-образов, содержащих бесплатные модули, контейнеры на основании которых можно запустить прямо из образа: |
| | | * [[Usm satellite#Запуск с использованием Docker|usm_satellite]] |
| = Установка =
| | * [[Usm billing#Использование модуля в Docker|usm_billing]] |
| В данном разделе рассматривается установка и запуск бандла с нуля. Если Вы обновляетесь с 3.12, то вам также придется установить бандл для 3.13 с нуля, предварительно сделав все резервные копии. Это описано в разделе '''Обновление'''.
| |
| | |
| Мы несколько изменили рекомендации по установке, тем самым упростив процесс установки, сделав его понятней и избавив вас от неоднозначного понимания некоторых действий.
| |
| | |
| Далее будут описаны шаги с указанием в качестве примера установку в каталог /docker/userside. Вы можете использовать любой удобный Вам путь расположения файлов, однако учитывайте то, что все примеры использования будут показаны именно для этого каталога.
| |
| | |
| == Клонирование репозитория ==
| |
| Создайте каталог, в котором будет размещаться ваш бандл, а тажке в нем будет размещаться и всё окружение, включая файлы системы USERSIDE, резервные копии и файлы базы данных. И перейдите в него.
| |
| mkdir /docker && cd $_
| |
| Выполните команду клонирования репозитория в подкаталог с именем userside.
| |
| git clone https://github.com/userside/userside-docker.git userside
| |
| cd userside
| |
| Если вы желаете ограничиться конкретной веткой, чтобы все обновления файлов шаблонов не выходили за пределы этой ветки, вы можете перейти в нее, например, для версии 3.13 используйте ветку v3.13. Этот шаг является необязательным. Мы рекомендуем оставаться на ветке master.
| |
| git checkout v3.13
| |
| Для последующих обновлений файлов шаблонов вам достаточно выполнить команду:
| |
| git pull
| |
| | |
| == Конфигурирвание бандла ==
| |
| Выполните команду инициализации - она скопирует все необходимые файлы из шаблонов, если те еще не существуют.
| |
| ./init.sh
| |
| В результате у вас появятся файлы Makefile (содержит макросы для простого управления бандлом) и docker-compose.yml (содержит всю конфигурацию бандла).
| |
| | |
| === docker-compose.yml ===
| |
| Вы должны отредактировать файл docker-compose.yml в соответствии с вашими требованиями.
| |
| | |
| ==== servces ====
| |
| В разделе services находятся настройки всех сервисов, образующих бандл - окружение для работы USERSIDE. Далее описаны рекомендации по настройке сервисов.
| |
| ===== postgres =====
| |
| Раздел environment:
| |
| * LANG - настройки языка, расположения и кодировки в формате LOCALE.
| |
| * TZ - часовой пояс.
| |
| * POSTGRES_DB - наименование базы данных (желательно оставить как есть).
| |
| * POSTGRES_USER - имя пользователя для доступа к БД.
| |
| * POSTGRES_PASSWORD - пароль для доступа к БД.
| |
| ===== fpm =====
| |
| Раздел environment:
| |
| * TZ - часовой пояс
| |
| Раздел volumes:
| |
| * Также, если вам необходимо внести какие-либо настройки в php-ini, вы можете раскомментировать строку с подключением файла php.ini в качестве volume, затем вручную скопировать файл php.ini-example, находящийся в подкаталоге config, в файл с именем php.ini и внести в него необходимые правки.
| |
| ===== nginx =====
| |
| Раздел ports:
| |
| * Укажите номер порта хоста (слева), который бы вы хотели транслировать на порт 80 контейнера nginx. Если на хосте у вас установлен сервер nginx и вы желаете проксировать http-запросы внутрь контейнера, то в этом случае желательно ограничить доступ к контейнеру по http, а также изменить порт хоста. Например, чтобы транслировать порт 8080 локального хоста на порт 80 контейнера, укажите "8080:80". Если необходимо ограничить доступ только с локального хоста (если используете проксирование), укажите "127.0.0.1:8080:80".
| |
| Раздел logging:
| |
| * Здесь вы можете настроить логгирование стандартными средствами docker. По умолчанию в шаблоне настроена ротация логов с максимальным размером файлов 20 Мб и их количеством 10 шт.
| |
| | |
| ==== volumes ====
| |
| Здесь настраиваются пути к отображаемым внутрь контейнеров volumes. Желательно не изменять эти настройки без необходимости. Если же все таки есть необходимость их изменить, то также измените соответствующие пути и в Makefile
| |
| | |
| ==== networks ====
| |
| Если указанная по умолчанию подсеть для бандла пересекается с какой либо вашей подсетью, измените ее здесь в значении параметра subnet. Также это может быть полезно, если вы поднимаете несколько бандлов для разных копий USERSIDE.
| |
| | |
| === Makefile ===
| |
| Этот файл содержит макрокоманды, упрощающие управление бандлом. По сути, это всего лишь сокращения длинных команд, которые Вы также можете использовать для конкретизации параметров.
| |
| | |
| Главные макрокоманды вынесены в самый верх файла. Это те команды, которые могут пригодиться вам для работы с бандлом чаще остальных. Чаще всего, это просто более короткие псевдонимы других команд.
| |
| Чтобы выполнить любую из команд, достаточно указать ее после make в командной строке. При этом текущий каталог должен быть /docker/userside. Например, чтобы запустить бандл, выполните:
| |
| make up
| |
| | |
| ==== Список команд ====
| |
| * '''up''' - запускает бандл
| |
| * '''down''' (или '''stop''') - останавливает бандл
| |
| * '''install''' - составная команда, которая выполняет все действия, необходимые для развёртывания и запуска бандла, а также установки USERSIDE
| |
| * '''userside-install''' - команда, которая только запускает скрипт-установщик внутри контейнера (возможно пригодится, если установка предыдущей командой закончилась неудачно и нужно повторить запуск установщика)
| |
| * '''update''' - составная команда, которая выполняет все действия, необходимые для обновления как docker-образов окружения, так и самой системы USERSIDE
| |
| * '''uninstall''' - составная команда, которая выполняет удаление бандла. При этом файлы userside, резервные копии и файлы базы данных остаются
| |
| * '''log''' - команда, отображающая все логи бандла в реальном времени (выход ctrl+c)
| |
| | |
| Также Вы можете использовать и остальные команды в отдельности, указанные в этом файле. Кроме того, Вы можете использовать команду '''docker-compose''' напрямую, чтобы выполнять команды бандла, не предусмотренные этим файлом.
| |
| | |
| Если вам необходимо изменить или дополнить список макросов, вы можете изменять этот файл так, как вам необходимо. При обновлении бандла обновится лишь шаблон этого файла, а не сам файл.
| |
| | |
| == Инсталляция ==
| |
| При первом запуске необходимо выполнить макрос install:
| |
| make install
| |
| Этот макрос создаст необходимые каталоги, затем запустит бандл (при первоначальном запуске будут загружены все необходимые образы), затем запустит установщик userside, установит crontab для периодических операций и выполнит первоначальный запуск crontab для userside.
| |
| | |
| При установке обратите внимание на имена хостов для postgresql и redis. Именами хостов этих служб являются имена сервисов: postgres и redis соответственно.
| |
| | |
| После успешной инсталляции никаких дополнительных действий не требуется. Откройте в браузере адрес с установленным userside.
| |
| | |
| == Эксплуатация ==
| |
| При необходимости бандл можно остановить командой
| |
| make stop
| |
| И запустить командой
| |
| make up
| |
| Следить за логами в реальном времени командой
| |
| make log
| |
| Запустить консоль PostgreSQL psql
| |
| make postgres-psql
| |
| Запустить консоль Redis redis-cli
| |
| make redis-cli
| |
| Запустить планировщик userside вручную
| |
| make cron-run
| |
| | |
| Также можно использовать команду docker-compose для случаев, не предусмотренных набором макросов (можете дополнить список макросов самостоятельно).
| |
| docker-compose -p userside ps
| |
| Приведенная выше команда отобразит все контейнеры бандла и их состояние.
| |
| | |
| == Резервное копирование и восстановление ==
| |
| Во время инсталляции создается crontab в /etc/cron.d/userside, в котором прописаны три действия: периодический запуск планировщика userside и два действия для резервного копирования базы данных и файлов.
| |
| | |
| Если Вам необходимо вручную создать резервные копии базы данных и файлов, Вы можете запустить макрос:
| |
| make backup
| |
| В результате в каталоге /docker/data/backup будут созданы резервные копии базы данных и файлов.
| |
| | |
| Чтобы восстановить базу данных из резервной копии, выполните:
| |
| make DUMP="userside_2019-05-08_09-23-19.dump" dbrestore
| |
| Также вы можете использовать другие удобные вам приемы, используемые при резервном копировании и восстановлении базы данных при работе с Docker-контейнерами.
| |
| | |
| Чтобы восстановить файлы из резервной копии, выполните:
| |
| cd /docker/data/backup
| |
| tar -xjf userside_2019-05-08_09-23-19.tar.bz2 -C /docker/data/
| |
| | |
| == Дополнительное конфигурирование ==
| |
| Вам может понадобиться более тонко настроить бандл. Например, изменить значения переменных php.ini или же провести настройку postgresql.
| |
| | |
| === PHP ===
| |
| Случай с php.ini уже был показан выше. Строка, которую необходимо раскомментировать, а также файл шаблона php.ini-example уже содержатся в бандле в качестве примера. Просто скопируйте файл php.ini-example, расположенный в каталоге config бандла, с именем php.ini, внесите необходимые правки, раскомментируйте строку, подключающую этот файл в качестве volume в сервисе fpm файла docker-compose.yml и перезапустите бандл
| |
| cd config
| |
| cp php.ini-example php.ini
| |
| nano php.ini
| |
| nano docker-compose.yml
| |
| make stop
| |
| make up
| |
| | |
| === PostgreSQL ===
| |
| Для более производительной работы сервера PostgreSQL требуется произвести его настройку в соответствии с техническими параметрами сервера - тюнинг. С методиками тюнинга можно ознакомиться по ссылкам [https://ruhighload.com/post/%D0%A2%D1%8E%D0%BD%D0%B8%D0%BD%D0%B3+%D0%B1%D0%B0%D0%B7%D1%8B+Postgres] и [https://wiki.postgresql.org/wiki/Performance_Optimization]. Также есть специальные инструменты, помогающие сформировать конфигурацию сервера PostgreSQL в удобном интерактивном виде [https://pgtune.leopard.in.ua/] и [http://pgconfigurator.cybertec.at/].
| |
| | |
| Конфигурационные файлы PostgreSql транслируются из докер-контейнера вместе с базой данных в каталог /docker/data/db. В нем вы найдете все необходимые конфигурационные файлы, включая файл pg_hba.conf для настройки разрешений. После внесения правок просто перезапустите бандл макросами stop и up:
| |
| make stop
| |
| make up
| |
| | |
| == Обновление ==
| |
| Мы рекомендуем производить обновление в то время, когда приостановка работы системы не влияет на работу компании. Во время обновления могут произойти нештатные ситуации, от которых никто не застрахован. И, хотя у нас этот процесс отлажен достаточно четко, все равно, пожалуйста, не полагайтесь на волю случая.
| |
| | |
| === В пределах минорной версии ===
| |
| Если вы обновляетесь в пределах минорной версии. Например, в пределах 3.13 (с 3.13.2 на 3.13.8), то вам достаточно воспользоваться макросом update:
| |
| git pull
| |
| make update
| |
| В этом случае автоматически будет выполнено резервное копирование базы данных и файлов, обновление docker-образов и запуск инсталлятора для произведения обновления самого приложения.
| |
| Как правило, в пределах минорной версии никаких изменений в окружении не происходит (если того не требуют исправления, о чем всегда будет указано в changelog к версии, на которую вы планируете обновиться), поэтому больше никаких действий не требуется.
| |
| | |
| === На новую минорную версию ===
| |
| Если вы обновляетесь на новую минорную версию. Например, с версии 3.13.87 на версию 3.14.2, то обновление в полностью автоматическом режиме не подойдет. Для этого необходимо сначала обязательно ознакомиться с информацией по обновлению на новую минорную версию, затем проделать следующие шаги:
| |
| make backup
| |
| make stop
| |
| git pull
| |
| Затем внимательно просмотреть файлы docker-compose-example.yml и Makefile-example на предмет новых сервисов, томов и макросов, затем дополнить свои файлы docker-compose.yml и Makefile недостающими строками. Затем выполнить:
| |
| make bundle-pull
| |
| make up
| |
| make postgres-postgis-update
| |
| make userside-install
| |
| После установки убедиться, что все работает корректно.
| |
| | |
| === Обновление с устаревшей версии 3.12 на новую ===
| |
| Если Вы разворачивали Docker-окружение для версии 3.12 по инструкции до 10 мая 2019 года, то вам необходимо проделать последовательность действий, описанную в этом разделе.
| |