Установка с использованием Docker: различия между версиями

Материал из WiKi - UserSide
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
Начиная с версии USERSIDE 3.12, поддерживается установка приложения в программную среду, сформированную из контейнеров Docker.
Начиная с версии ERP USERSIDE 3.12 поддерживается развёртывание системы внутри окружения, построенного с использованием Docker-контейнеров.
Обратите внимание на то, что контейнеры Docker не содержат программного кода USERSIDE, а только лишь формируют настроенное окружение, подготовленное для установки в него USERSIDE.


Предполагается, что пользователь знаком с основными принципами виртуализации, а также имеет опыт работы с Docker. Иначе перед тем, как продолжить, необходимо изучить основы работы и обслуживания Docker. Мы не оказываем технической поддержки, связанной с обслуживанием Docker.
== Соглашение ==
Также предполагается, что система Docker уже установлена и исправно функционирует.
 
Данная инструкция предназначена для системных администраторов, знакомых с виртуальной средой Docker. Данная инструкция предполагает установку на хост с операционной системой Linux. Данная инструкция не содержит материалов, объясняющих работу виртуальной среды Docker, а также ее обслуживания и администрирования. Ответы на вопросы касательно работы, обслуживания и администрирования Docker необходимо искать в [https://docs.docker.com/ официальной документации]. Зона ответственности службы технической поддержки USERSIDE не распространяется на темы, связанные с Docker. Просьба отнестись с пониманием.
 
== Описание ==
 
Данная инструкция описывает процесс установки окружения, необходимого для работы системы ERP USERSIDE. Окружение состоит из трех контейнеров, каждый из которых обеспечивает работу своей службы: nginx, php-fpm, postgresql. Образы, на базе которых строятся контейнеры, включают все необходимые компоненты и настройки, необходимые для полноценного функционирования системы USERSIDE. Образы не включают программный код системы USERSIDE и поэтому являются публичными. Сама система USERSIDE устанавливается на том, подключенный к контейнеру, утилитой-установщиком. Все эти процессы автоматизированы.


== Требования ==
== Требования ==


Для развёртывания необходим установленный Docker и утилита Compose.
* 64 разрядное ядро Linux
О том, как установить Docker-ce и Compose можно ознакомиться по следующим ссылкам: [https://docs.docker.com/ Docker] [https://docs.docker.com/compose/ Compose]
* [https://docs.docker.com/install/ Docker]
* [https://docs.docker.com/compose/ Compose]
 
== Загрузка набора файлов ==


== Загрузка конфигурационных файлов ==
Необходимо загрузить набор файлов, необходимый для быстрого и простого развертывания системы. Можно воспользоваться любым из вариантов.
После произведенных действий вы будете находиться в каталоге, в котором расположен Makefile со всеми необходимыми заготовками. Помимо заготовок, необходимых для установки системы, там также имеются другие заготовки для обслуживания системы USERSIDE.


Для начала, перейдите в свой домашний каталог или в любой другой каталог, в котором вы хотели бы разместить конфигурационные файлы.
Выберите один из вариантов загрузки:
Это два файла: docker-compose.yml и Makefile, которыми вы будете пользоваться только в то время, когда обслуживаете этот Docker-пакет. Поэтому их вполне можно разместить в Вашем домашнем каталоге, если вы единственный администратор сервера, либо в общем каталоге, вроде /opt или подобном, чтобы позволить всем пользователям сервера иметь доступ к ним.


Загрузить конфигурационные файлы можно любым из двух способов:
=== Используя Git ===


1. Скачайте архив
    cd ~
    git clone https://github.com/userside/userside-docker.git
    cd userside-docker


2. Склонируйте git репозиторий
=== Скачать и разархивировать архив ===


== Конфигурация ==
    cd ~
    wget https://github.com/userside/userside-docker/archive/master.zip
    unzip master.zip && rm master.zip
    cd userside-docker-master


Для создания пакета контейнеров, обеспечивающих работу системы ERP USERSIDE, используется конфигурационный файл docker-compose.yml, в котором описаны три службы (services):nginx, php-fpm и postgres, параметры подключаемых томов (volumes), а так же параметры внутренней виртуальной сети (networks).
== Установка ==


=== Службы (services) ===
Далее все команды должны выполняться в каталоге с набором файлов.


В блоке '''services:''' перечислены службы, контейнеры для которых будут обслуживаться данным пакетом. Для некоторых служб следует указать правильные значения переменных окружения перед тем, как запустить процедуру построения контейнеров.
=== Конфигурация пакета ===


* Для службы '''postgres''' необходимо указать переменную среды LANG (язык в формате locale), переменную среды TZ (часовой пояс), а также переменные среды POSTGRES_*, определяющие название базы данных, имя пользователя и пароль.
Первое, что вам необходимо сделать, - настроить пакет docker-compose. Для этого необходимо отредактировать файл:


* Для службы '''fpm''' необходимо указать переменную среды TZ (часовой пояс).
    nano docker-compose.yml


* Для службы '''nginx''' необходимо указать соответствие портов хоста и контейнера. По умолчанию 80 порт хоста транслируется на 80 порт контейнера. Это удобно, если на вашем хосте нет WEB-сервера и ERP USERSIDE будет единственным WEB-приложением на нем. В таком случае Вам больше ничего не нужно настраивать. Всё заработает сразу же после запуска контейнера и установки USERSIDE. Однако, если на этом хосте уже функционирует другой WEB-сервер, то соответствие портов следует изменить, например, на "8080:80" - в этом случае локальный порт 8080 будет транслироваться на 80 порт контейнера, а на существующем на хосте WEB-сервере необходимо настроить проксирование на адрес 127.0.0.1:8080.
Следует обратить внимание на:
* Переменные окружения, расположенные в блоках '''environment:''' внутри блоков, расположенных в блоке '''services:'''. Они определяют основные настройки системы. Вы должны правильно указать ваш часовой пояс (TZ), настройки базы данных PostgreSQL (POSTGRES_*).
* Номер порта в службе '''nginx:''' (параметр ports:) слева от двоеточия - порт локального хоста, который необходимо транслировать в порт 80 (справа от двоеточия) внутри контейнера nginx. Если на вашем хосте используется WEB-сервер для работы других приложений, вам необходимо изменить трансляцию портов таким образом, чтобы порты веб-сервера хоста и транслируемого из контейнера не пересекались, а в самом WEB-сервере хоста настроить проксирование на этот порт. Если же WEB-сервера на хосте нет, то ничего не нужно изменять.
* Тома (блок '''volumes:''' внизу конфига). Значением параметра device: здесь является каталог локального хоста. Этот каталог будет подключен как том в файловую систему контейнера. Рекомендуется оставить значение по умолчанию. Единственное, что может быть полезно - изменить место хранение бекапов (каталог должен существовать на хосте). Кроме простого изменения каталога для бекапов Вы также можете изменить и драйвер для этого тома, например, использовав один из сетевых драйверов, позволяющих подмонтировать сетевой том в файловую систему контейнера. Это позволит хранить бекапы на другом хосте, что является более безопасным.
* Сети (блок '''networks:''' внизу конфига). Если подсеть, указанная в параметре '''subnet:''', пересекается с подсетями, которые вы используете, то вы можете изменить ее на любую другую с маской не менее /29, однако рекомендуется использовать маску подсети не уже /28.
Сохраните файл после редактирования.


=== Тома (volumes) ===
После того, как конфигурация выполнена, необходимо создать каталоги для монтирования томов. Если вы оставили каталоги, указанные в конфиге по умолчанию, то просто выполните:


Воспользуйтесь блоком '''volumes:''' в конце конфигурационного файла, чтобы изменить пути к подключаемым томам.
    sudo mkdir -p /opt/userside /opt/backup


По умолчанию конфигурация предполагает два общих тома: '''www''' (для файлов приложения), '''backup''' (для файлов резервных копий). Вы можете изменить конфигурацию подключаемых томов по желанию, чтобы расположить файлы приложения и резервных копий в удобном для вас месте. Вы можете использовать любой драйвер, поставляемый вместе с Docker или подключаемый отдельно для монтирования томов. Например, вы можете смонтировать том резервных копий напрямую на Amazon S3. Подробнее с возможностями томов в Docker Вы можете ознакомиться в [https://docs.docker.com/storage/volumes/ официальной документации]. Узнать о существующих драйверах томов можно [https://docs.docker.com/engine/extend/legacy_plugins/#volume-plugins здесь].
=== Запуск набора установки ===


Помимо этого, можно отдельно настроить тома для логов nginx (по умолчанию монтируется каталог хоста /var/log/userside/nginx) и расположения файлов базы данных (по умолчанию используется автомонтирование), но на практике такая необходимость отсутствует.
Находясь в каталоге с набором файлов, выполните:


=== Сети (networks) ===
    sudo make install


В блоке '''networks:''' настраивается внутренняя сеть пакета '''internal'''. Если указанная в конфигурации подсеть не пересекается с вашей сетью, то ничего изменять не нужно. В противном случае, измените настройки подсети таким образом, чтобы она не пересекалась с существующей маршрутизацией.
Это запустит процесс загрузки Docker-образов, создания контейнеров на основании информации из docker-compose.yml, после чего запустит утилиту-инсталлятор USERSIDE, а затем запустит процесс создания конфигурации для cron и logrotate.


== Установка ==
Во время работы утилиты-инсталлятора USERSIDE, вам понадобится лицензионный ключ, который вы можете получить в [http://my.userside.eu личном кабинете].
 
В процессе установки Вам будет предложено установить приложение в каталог /app/userside. Соглашайтесь, так как именно такой каталог используется как точка монтирования внешнего тома внутри контейнера.
 
После выполнения команды вы получите целиком готовую к работе систему. Откройте в браузере адрес, введенный в утилите-инсталляторе для проверки и войдите, используя имя пользователя '''admin''' и пароль '''1234'''.
 
В течение первой минуты Вы можете наблюдать сообщение о не работающем планировщике, но спустя минуту, после первого запуска, это сообщение исчезнет.
 
=== Резервное копирование ===
 
В ходе инсталляции в системный cron прописываются правила для выполнения резервного копирования. Резервное копирование файлов приложения выполняется в 3 часа и базы данных в 4 часа. Вы можете отредактировать время запуска на свое усмотрение:
 
    nano /etc/cron.d/userside
 
По умолчанию файлы резервных копий находятся в каталоге /opt/backup хоста.
 
Чтобы запустить резервное копирование вручную, находясь в каталоге с набором файлов вполните:
 
    sudo make us-backup
 
После этого проверьте факт создания файлов резервной копии в каталоге /opt/backup (если вы не изменили его в конфиге).
 
== Обслуживание ==
 
=== PostgreSQL ===
 
Если необходимо воспользоваться консольным клиентом psql, находясь в каталоге с набором файлов, выполните:
 
    sudo make psql
 
=== Остановка и запуск контейнеров Docker ===
 
При необходимости остановить работу окружения, необходимого для работы системы USERSIDE, находясь в каталоге с набором файлов выполните:
 
    sudo make stop
 
Если необходимо остановить и удалить контейнеры, а так же информацию о томах (сами каталоги на хосте не удаляются) и информацию о внутренней сети, выполните:
 
    sudo make down
 
Будьте осторожны. Эта процедура удалит базу данных. Сделайте резервную копию данных перед ее выполнением.
 
Если необходимо снова запустить контейнеры (или создать их и запустить), выполните:
 
    sudo make up
 
=== Обновление USERSIDE ===
 
'''Внимание! Перед обновлением обязательно сделайте резервную копию данных!'''
 
Находясь в каталоге с наборами файлов, выполните:
 
    sudo make us-backup
 
Для обновления USERSIDE, после того, как резервные копии данных сделаны, выполните:
 
    sudo make us-install
 
Также Вы можете выполнить и команду sudo make install. В этом случае будет произведена попытка создания контейнеров, запуска инсталлятора и конфигурирование cron и logrotate. Этот способ подойдет, если вы хотите начать сначала. Будьте осторожны, это действие может пересоздать том с базой данных. Обязательно сделайте резервную копию данных перед выполнением этой команды.
 
=== Ручной запуск CRON ===
 
Это может быть необходимо при диагностике проблем, связанных с периодическими задачами.
 
Для начала закомментируйте строку запуска планировщика в файле /etc/cron.d/userside
 
Затем, спустя минуту, находясь в каталоге с набором файлов, выполните:
 
    sudo make us-cron
 
После того, как диагностика закончена, не забудьте раскомментировать планировщик в файле /etc/cron.d/userside

Версия от 17:39, 20 марта 2018

Начиная с версии ERP USERSIDE 3.12 поддерживается развёртывание системы внутри окружения, построенного с использованием Docker-контейнеров.

Соглашение

Данная инструкция предназначена для системных администраторов, знакомых с виртуальной средой Docker. Данная инструкция предполагает установку на хост с операционной системой Linux. Данная инструкция не содержит материалов, объясняющих работу виртуальной среды Docker, а также ее обслуживания и администрирования. Ответы на вопросы касательно работы, обслуживания и администрирования Docker необходимо искать в официальной документации. Зона ответственности службы технической поддержки USERSIDE не распространяется на темы, связанные с Docker. Просьба отнестись с пониманием.

Описание

Данная инструкция описывает процесс установки окружения, необходимого для работы системы ERP USERSIDE. Окружение состоит из трех контейнеров, каждый из которых обеспечивает работу своей службы: nginx, php-fpm, postgresql. Образы, на базе которых строятся контейнеры, включают все необходимые компоненты и настройки, необходимые для полноценного функционирования системы USERSIDE. Образы не включают программный код системы USERSIDE и поэтому являются публичными. Сама система USERSIDE устанавливается на том, подключенный к контейнеру, утилитой-установщиком. Все эти процессы автоматизированы.

Требования

Загрузка набора файлов

Необходимо загрузить набор файлов, необходимый для быстрого и простого развертывания системы. Можно воспользоваться любым из вариантов. После произведенных действий вы будете находиться в каталоге, в котором расположен Makefile со всеми необходимыми заготовками. Помимо заготовок, необходимых для установки системы, там также имеются другие заготовки для обслуживания системы USERSIDE.

Выберите один из вариантов загрузки:

Используя Git

   cd ~
   git clone https://github.com/userside/userside-docker.git
   cd userside-docker

Скачать и разархивировать архив

   cd ~
   wget https://github.com/userside/userside-docker/archive/master.zip
   unzip master.zip && rm master.zip
   cd userside-docker-master

Установка

Далее все команды должны выполняться в каталоге с набором файлов.

Конфигурация пакета

Первое, что вам необходимо сделать, - настроить пакет docker-compose. Для этого необходимо отредактировать файл:

   nano docker-compose.yml

Следует обратить внимание на:

  • Переменные окружения, расположенные в блоках environment: внутри блоков, расположенных в блоке services:. Они определяют основные настройки системы. Вы должны правильно указать ваш часовой пояс (TZ), настройки базы данных PostgreSQL (POSTGRES_*).
  • Номер порта в службе nginx: (параметр ports:) слева от двоеточия - порт локального хоста, который необходимо транслировать в порт 80 (справа от двоеточия) внутри контейнера nginx. Если на вашем хосте используется WEB-сервер для работы других приложений, вам необходимо изменить трансляцию портов таким образом, чтобы порты веб-сервера хоста и транслируемого из контейнера не пересекались, а в самом WEB-сервере хоста настроить проксирование на этот порт. Если же WEB-сервера на хосте нет, то ничего не нужно изменять.
  • Тома (блок volumes: внизу конфига). Значением параметра device: здесь является каталог локального хоста. Этот каталог будет подключен как том в файловую систему контейнера. Рекомендуется оставить значение по умолчанию. Единственное, что может быть полезно - изменить место хранение бекапов (каталог должен существовать на хосте). Кроме простого изменения каталога для бекапов Вы также можете изменить и драйвер для этого тома, например, использовав один из сетевых драйверов, позволяющих подмонтировать сетевой том в файловую систему контейнера. Это позволит хранить бекапы на другом хосте, что является более безопасным.
  • Сети (блок networks: внизу конфига). Если подсеть, указанная в параметре subnet:, пересекается с подсетями, которые вы используете, то вы можете изменить ее на любую другую с маской не менее /29, однако рекомендуется использовать маску подсети не уже /28.

Сохраните файл после редактирования.

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

   sudo mkdir -p /opt/userside /opt/backup

Запуск набора установки

Находясь в каталоге с набором файлов, выполните:

   sudo make install

Это запустит процесс загрузки Docker-образов, создания контейнеров на основании информации из docker-compose.yml, после чего запустит утилиту-инсталлятор USERSIDE, а затем запустит процесс создания конфигурации для cron и logrotate.

Во время работы утилиты-инсталлятора USERSIDE, вам понадобится лицензионный ключ, который вы можете получить в личном кабинете.

В процессе установки Вам будет предложено установить приложение в каталог /app/userside. Соглашайтесь, так как именно такой каталог используется как точка монтирования внешнего тома внутри контейнера.

После выполнения команды вы получите целиком готовую к работе систему. Откройте в браузере адрес, введенный в утилите-инсталляторе для проверки и войдите, используя имя пользователя admin и пароль 1234.

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

Резервное копирование

В ходе инсталляции в системный cron прописываются правила для выполнения резервного копирования. Резервное копирование файлов приложения выполняется в 3 часа и базы данных в 4 часа. Вы можете отредактировать время запуска на свое усмотрение:

   nano /etc/cron.d/userside

По умолчанию файлы резервных копий находятся в каталоге /opt/backup хоста.

Чтобы запустить резервное копирование вручную, находясь в каталоге с набором файлов вполните:

   sudo make us-backup

После этого проверьте факт создания файлов резервной копии в каталоге /opt/backup (если вы не изменили его в конфиге).

Обслуживание

PostgreSQL

Если необходимо воспользоваться консольным клиентом psql, находясь в каталоге с набором файлов, выполните:

   sudo make psql

Остановка и запуск контейнеров Docker

При необходимости остановить работу окружения, необходимого для работы системы USERSIDE, находясь в каталоге с набором файлов выполните:

   sudo make stop

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

   sudo make down

Будьте осторожны. Эта процедура удалит базу данных. Сделайте резервную копию данных перед ее выполнением.

Если необходимо снова запустить контейнеры (или создать их и запустить), выполните:

   sudo make up

Обновление USERSIDE

Внимание! Перед обновлением обязательно сделайте резервную копию данных!

Находясь в каталоге с наборами файлов, выполните:

   sudo make us-backup

Для обновления USERSIDE, после того, как резервные копии данных сделаны, выполните:

   sudo make us-install

Также Вы можете выполнить и команду sudo make install. В этом случае будет произведена попытка создания контейнеров, запуска инсталлятора и конфигурирование cron и logrotate. Этот способ подойдет, если вы хотите начать сначала. Будьте осторожны, это действие может пересоздать том с базой данных. Обязательно сделайте резервную копию данных перед выполнением этой команды.

Ручной запуск CRON

Это может быть необходимо при диагностике проблем, связанных с периодическими задачами.

Для начала закомментируйте строку запуска планировщика в файле /etc/cron.d/userside

Затем, спустя минуту, находясь в каталоге с набором файлов, выполните:

   sudo make us-cron

После того, как диагностика закончена, не забудьте раскомментировать планировщик в файле /etc/cron.d/userside