Один из вариантов развертывания модуля Artix Virtual Pos (VPOS) – установка через docker-контейнер.
Установка docker
Для установки docker необходимо:
Установить Docker Engine, выполнив команды:
sudo apt-get remove docker docker-engine docker.io containerd runc sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update sudo apt-get install docker-ce
Получить сертификат для доступа к хранилищу docker-образов, выполнив команду:
curl -fsSL http://downloads.artix.su/static/downloads/docker/vpos_env/import_docker_cert.sh | sudo /bin/bash - && ls -1 /etc/docker/certs.d/*/*
Для замены просроченного сертификата скачать и запустить скрипт
http://downloads.artix.su/static/downloads/docker/vpos_env/change_trusted_docker_cert.sh
, выполнив команду:wget -qO- http://downloads.artix.su/static/downloads/docker/vpos_env/change_trusted_docker_cert.sh | bash
В директории
/etc/docker/certs.d/dockerregistry.artix.su:2443
будут размещены файлы сертификата:ca.crt
,client.cert
,client.key
.
Перезапустить docker, выполнив команду:
sudo service docker restart
Посмотреть версии VPOS доступные для скачивания, выполнив команды:
cd /etc/docker/certs.d/dockerregistry.artix.su\:2443/ curl --cacert ./ca.crt --key ./client.key --cert ./client.cert https://dockerregistry.artix.su:2443/v2/artix-vpos/tags/list
Скачать VPOS, выполнив команду:
В команде необходимо указать версию VPOS, для которой необходимо создать docker-контейнер.docker pull dockerregistry.artix.su:2443/artix-vpos:artix-4.6.238-5
Запуск Artix Virtual Pos
Запуск VPOS из контейнера производится выполнением команды вида:
docker run --restart=always -p8090:8090 -p7795:7795 \ --mount src=mysql_vpos1,dst=/linuxcash/cash/data/mysql \ --mount src=conf_vpos1,dst=/linuxcash/cash/conf \ --mount src=qpid_vpos1,dst=/var/spool/qpid \ --mount src=puppet_ssl_vpos1,dst=/var/lib/puppet/ssl \ -ePUPPET_SERVER_NAME="srv-saas-demo.dmz" -ePUPPET_SERVER_IP="localhost" \ -eCASH_SHOP_CODE=100 -eCASH_CASH_CODE=10 \ -eSTART_SERVICES="qpid sync nes mysql vpos" \ -eMYSQLSERVER_SERVERDB="false" \ -eMYSQLSERVER_HOST="localhost" \ -eMYSQLSERVER_PORT="3306" \ -eMYSQLSERVER_USER="netroot" \ -eMYSQLSERVER_PASSWORD="netroot" \ -eCATALOGFACTORY_DBNAME="dictionaries" \ -eDISCOUNT_DBNAME="dictionaries" \ -eARTIXVPOS_CSHOST="" \ -eARTIXVPOS_CSUSER="" \ -eARTIXVPOS_CSPASSWORD="" \ -d --hostname vpos-docker-100-10 --name vpos1 \ -ti dockerregistry.artix.su:2443/artix-vpos:artix-4.6.238-5
Работа с docker-контейнером VPOS
Команда docker
с опцией run
запускает новый контейнер:
- опция
--restart=always
гарантирует, что контейнер всегда перезагружается демоном docker, если по какой-то причине он останавливается. - опция
--mount
отвечает за монтирование данных между хостовой машиной и docker-контейнером. Состоит из нескольких пар ключ-значение, разделенных запятыми. В параметреsrc
передается источник монтирования, в параметреdst
- путь, в котором файл или каталог монтируется в контейнере. - опция
--hostname
задает имя хоста. - опция
--name
задает имя машины, которая работает в docker-контейнере. - опция
-p8090:8090
предназначена для проброса портов в docker-контейнер. Для работы кассового сервера также должен быть обязательно проброшен порт 7795. Порт 8090 по умолчанию используется для взаимодействия между сервисом интернет-магазина и VPOS.
Просмотр точек монтирования осуществляется при выполнении команды:
docker volume ls
Подключение к VPOS для управления выполняется командой:
docker exec -ti vpos1 bash
Для удаления контейнера с VPOS необходимо остановить ее и выполнить команду удаления:
docker stop vpos1 docker rm vpos1
Переменные окружения
Работа с кассой
CASH_SHOP_CODE=1
– код кассы, который будет установлен вcash.reg
.CASH_CASH_CODE=1
– код магазина, который будет установлен вcash.reg
.CASH_SHIFT_NUMBER=1
– номер смены, который будет установлен вcash.reg
.CASH_CHECK_NUMBER=1
– номер чека, который будет установлен вcash.reg
.CASH_SHIFT_BEG="2017-11-27T17:29:21"
– время начала смены, которое будет установлено вcash.reg
.START_SERVICES="qpid sync nes mysql vpos"
– список сервисов, которые запустятся после старта контейнера. Для корректного функционирования VPOS, необходимы:sync
– отвечает за попадание справочников на кассу, касса должна подхватиться КС по ip-адресу,qpid
– очереди обмена,mysql
– хранилище БД, используется как обменом, так и кассой,nes
– сервис обмена,vpos
– сервис VPOS, после инициализации доступен на порту8090
,executor
– сервис, который может запускать скрипт, с определенной периодичностью, непосредственно внутри контейнера.
SET_TIMEZONE="Asia/Krasnoyarsk"
– часовая зона, в которой предполагается работа VPOS.PUPPET_SERVER_NAME="puppet"
– доменное имя puppet-сервера, с которого VPOS будет скачивать конфигурацию.PUPPET_SERVER_IP=""
– IP-адрес puppet-сервера, если будет указан, в файл/etc/hosts
кассы будет помещена запись для связкиPUPPET_SERVER_NAME
иPUPPET_SERVER_IP
.COMMAND_URI="http://localhost/command"
– путь до команды, которую необходимо выполнять вexecutor
, выкачивается поcurl -f "$COMMAND_URI"
.COMMAND_TIMEOUT=10
– время на выполнение команды сервисомexecutor
. Если выполнение команды затрачивает больше времени, то ее выполнение прекращается командойkill
.COMMAND_SLEEP=5
– ожидание между повторами выполнения команды сервисомexecutor
.
Работа с удаленным кассовым сервером
Значения настроек для работы с удаленного кассового сервера, заданные в переменных окружения, имеют более высокий приоритет, чем соответствующие значения из конфигурационного файла /linuxcash/cash/conf/ncash.ini.d/vpos.ini
.
Если в переменной окружения задана пустая строка/переменная не задана, то используется значение соответствующей настройки из конфигурационного файла linuxcash/cash/conf/ncash.ini.d/vpos.ini
.
ARTIXVPOS_CSUSER
– имя пользователя КС для авторизации. Авторизация выполняется при получении идентификатора БД. Если переменная не задана, запрос получения идентификатора БД будет выполняться без авторизации.ARTIXVPOS_CSPASSWORD
– пароль пользователя КС для авторизации. Авторизация выполняется при получении идентификатора БД. Если переменная не задана, запрос получения идентификатора БД будет выполняться без авторизацииARTIXVPOS_CSHOST
– адрес кассового сервера, к которому запрос выполняется. Если переменная не задана, запрос получения идентификатора БД будет браться из переменной окружения.
Работа с удаленной БД
Значения настроек для работы с удаленной БД, заданные в переменных окружения, имеют более высокий приоритет, чем соответствующие значения из конфигурационного файла /linuxcash/cash/conf/db.ini
в секции [MysqlServer]
.
Если в переменной окружения задана пустая строка/переменная не задана, то используется значение соответствующей настройки из конфигурационного файла /linuxcash/cash/conf/db.ini
.
MYSQLSERVER_SERVERDB
– нужно ли использовать БД кассового сервера. По умолчаниюfalse
(переменные окружения не заполняются и не передаются).MYSQLSERVER_HOST
– хост удаленной базы данных. По умолчаниюlocalhost
. Если переменная не задана, запрос получения идентификатора БД будет браться изMysqlServer::host
.MYSQLSERVER_PORT
– порт удаленной базы данных. По умолчанию3306
.MYSQLSERVER_USER
– имя пользователя для доступа к удаленной базе данных. По умолчаниюnetroot
.MYSQLSERVER_PASSWORD
– пароль для доступа к удаленной базе данных. По умолчаниюnetroot
.CATALOGFACTORY_DBNAME
– название базы данных каталогов. По умолчанию "dictionaries
".DISCOUNT_DBNAME
– название базы данных скидок. По умолчанию "dictionaries
".
Подключение к удаленному кассовому серверу
Настройка подключения VPOS к удаленному кассовому серверу осуществляется в конфигурационном файле /linuxcash/cash/conf/ncash.ini.d/vpos.ini
. Для этого необходимо задать параметры csPort
, csUser
, csPassword
, csHost
.