пятница, 30 ноября 2018 г.

Установка и настройка нескольких версий 1С 8.3

Установка и настройка нескольких версий клиентов 1С 8.3
Установка нескольких версий 1С в Ubuntu 16.04
Обеспечение совместной работы нескольких серверных процессов
1С: Предприятие 8.2 и 8.3. Совместный запуск на одном Linux-сервере.
Платформа 8.3 → Ручной запуск второй копии сервера 1С на linux ubuntu 16.04
27.2. Создание службы сервера «1С:Предприятия»


Пример установки дополнительной 8.3.14.1373 для пользователя user (отличного от usr1cv8 должен быть создан заранее)

$ mkdir tmp
$ dpkg-deb -x 1c-enterprise83-common_8.3.14-1373_amd64.deb tmp
$ dpkg-deb -x 1c-enterprise83-server_8.3.14-1373_amd64.deb tmp
$ sudo mv tmp/opt/1C/v8.3/ /opt/1C/v8.3.14.1373/
$ nano tmp/etc/init.d/srv1cv83

SRV1CV8_PORT=2540
SRV1CV8_REGPORT=2541
SRV1CV8_RANGE=2560:2590
G_BINDIR="/opt/1C/v${G_VER_MAJOR}.${G_VER_MINOR}.${G_VER_BUILD}.${G_VER_RELEASE}/${G_VER_ARCH}"
G_VER_SHORT=${G_VER_MAJOR}.${G_VER_MINOR}.${G_VER_BUILD}.${G_VER_RELEASE}
[ -z "$SRV1CV8_USER"      ] && SRV1CV8_USER=user
[ -z "$SRV1CV8_PIDFILE"   ] && SRV1CV8_PIDFILE="/var/run/srv1cv${G_VER_MAJOR}.${G_VER_MINOR}.${G_VER_BUILD}.${G_VER_RELEASE}.pid"

Сохранить.

$ sudo cp tmp/etc/init.d/srv1cv83 /etc/init.d/srv1cv83.14-1373

Запускать:
$ sudo /etc/init.d/srv1cv83.14-1373 start

Останавливать:
$ sudo /etc/init.d/srv1cv83.14-1373 stop

Проверка:
$ ss -tlnp | grep :25
LISTEN     0      128          *:2560                     *:*                   users:(("rphost",pid=4313,fd=18))
LISTEN     0      128          *:2540                     *:*                   users:(("rphost",pid=4313,fd=16),("ragent",pid=4260,fd=16))
LISTEN     0      128          *:2541                     *:*                   users:(("rmngr",pid=4268,fd=13))
LISTEN     0      128         :::2560                    :::*                   users:(("rphost",pid=4313,fd=17))
LISTEN     0      128         :::2540                    :::*                   users:(("rphost",pid=4313,fd=15),("ragent",pid=4260,fd=15))
LISTEN     0      128         :::2541                    :::*                   users:(("rmngr",pid=4268,fd=12))

Проверка 1 сервера:
$ ss -tlnp | grep :15
LISTEN     0      128          *:1560                     *:*
LISTEN     0      128          *:1540                     *:*
LISTEN     0      128          *:1541                     *:*
LISTEN     0      128         :::1560                    :::*
LISTEN     0      128         :::1540                    :::*
LISTEN     0      128         :::1541                    :::*


Копия что бы не потерялась:

SRV1CV8_PORT=2540
SRV1CV8_REGPORT=2541
SRV1CV8_RANGE=2560:2590
G_BINDIR="/opt/1C/v${G_VER_MAJOR}.${G_VER_MINOR}.${G_VER_BUILD}.${G_VER_RELEASE}/${G_VER_ARCH}"
G_VER_SHORT=${G_VER_MAJOR}.${G_VER_MINOR}.${G_VER_BUILD}.${G_VER_RELEASE}
[ -z "$SRV1CV8_USER"      ] && SRV1CV8_USER=user
[ -z "$SRV1CV8_PIDFILE"   ] && SRV1CV8_PIDFILE="/var/run/srv1cv${G_VER_MAJOR}.${G_VER_MINOR}.${G_VER_BUILD}.${G_VER_RELEASE}.pid"

четверг, 29 ноября 2018 г.

Ubuntu Автономный сервер 8.3.14.1373


Глава 7. Автономный сервер

$ sudo su - usr1cv8
  
Запуск существующей базы ранее созданной в кластере серверов
$ /opt/1C/v8.3/x86_64/ibsrv --dbms=PostgreSQL --db-server=u1604 --db-user=postgres --db-pwd=pass --db-name=demo --address=any --port=8080
 

Способ запуска с конфигурационным файлом:
$ /opt/1C/v8.3/x86_64/ibcmd server config init --dbms=PostgreSQL --db-server=u1604 --db-user=postgres --db-pwd=pass --db-name=demo --address=any --port=8080 > file.ext

$ /opt/1C/v8.3/x86_64/ibsrv --daemon --config=file.ext

http://192.168.0.239:8080/


Загрузка файла dt в существующую базу:
$ /opt/1C/v8.3/x86_64/ibcmd infobase restore --dbms=PostgreSQL --db-server=u1604 --db-user=postgres --db-pwd=pass --db-name=demo  1cv8.dt


Создание новой базы и загрузка файла dt в созданную базу:
$ /opt/1C/v8.3/x86_64/ibcmd infobase create --dbms=PostgreSQL --db-server=u1604 --db-user=postgres --db-pwd=pass --db-name=demo2 --create-database --restore=1cv8.dt


Создание новой файловой базы (по умолчанию ~/.1cv8/1C/1cv8/standalone-server/db-data) и загрузка файла dt в созданную базу:

$ /opt/1C/v8.3/x86_64/ibcmd infobase create --restore=1cv8.dt

Запуск:
$ /opt/1C/v8.3/x86_64/ibsrv --address=any --port=8080

 

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

Например: --data=~/standalone-server (для каждого экземпляра своя папка!)

Различные сервисы автономного сервера используют дисковый накопитель для размещения служебных данных во время работы автономного сервера. Разные сервисы используют для своей работы различные каталоги. Базовым каталогом для размещения служебных данных выступает каталог данных автономного сервера: по умолчанию служебные каталоги размещаются в каталоге данных автономного сервера. Изменяя расположение каталога данных ‑ изменяется расположение всех остальных каталогов, расположение которых не задано явно. В тоже время автономный сервер позволяет указать индивидуальное расположение различных служебных каталогов:
● Каталог данных автономного сервера. Фактически является каталогом данных информационной базы. Задается с помощью параметра --data автономного сервера. В этом каталоге по умолчанию размещаются остальные служебные каталоги.
Размещение по умолчанию:
● ОС Windows: %LOCALAPPDATA%\1C\1cv8\standalone-server\.
● ОС Linux: ~/.1cv8/standalone-server.
● Каталог временных файлов информационной базы. Задается с помощью параметра --temp автономного сервера. По умолчанию используется каталог temp каталога данных сервера. Также следует отметить, что временные файлы, используемые самим автономным сервером, создаются в каталоге временных файлов пользователя, от имени которого запущен сервер. Данный каталог может быть переопределен при помощи переменной окружения операционной системы TEMP.
● Каталог сеансовых данных. Задается с помощью параметра --session-data автономного сервера. По умолчанию используется каталог session-data каталога данных сервера.
● Каталог журнала регистрации. Задается с помощью параметра --log-data автономного сервера. По умолчанию используется каталог log-data каталога данных сервера.
● Каталог индекса полнотекстового поиска. Задается с помощью параметра --ftext-data автономного сервера. По умолчанию используется каталог ftext-data каталога данных сервера.
● Каталог для хранения контекстов OpenID-аутентификации. Задается с помощью параметра --openid-data автономного сервера. По умолчанию используется каталог openid-data каталога данных сервера.

$ mkdir -p ~/standalone-server/db-data
$ /opt/1C/v8.3/x86_64/ibcmd infobase create --restore=1cv8.dt --db-path=~/standalone-server/db-data
$ /opt/1C/v8.3/x86_64/ibsrv --address=any --port=8080 --db-path=~/standalone-server/db-data --data=~/standalone-server 
Вроде работало и так:
$ /opt/1C/v8.3/x86_64/ibsrv --address=any --port=8080 --data=~/standalone-server 
(нуждается в проверке, под windows  точно не работает)

вторник, 27 ноября 2018 г.

КриптоПро перенос контейнера с WIN на Linux


astralinux доступ к госзакупкам
Инструкция по настройке и работе с Крипто-Про для государственных порталов
Инструкция по установке Ubuntu 16.04 (x64) + КриптоПро CSP 4.0R2 + КриптоПро Browser Plug-In 2.0
CSP 4.0 PKCS11 Plugin + IFCPlugin (госуслуги) - работает!
Как в Linux/Unix установить сертификаты?
Как скопировать ключи с дискеты/флешки на HDIMAGE?
Как проверить, работоспособен ли контейнер с закрытыми ключами?
Перенос контейнера с Win на Linux
Перенос контейнеров закрытых ключей и сертификатов CryptoPro
Перенос КриптоПро, ключей ЭЦП, сертификатов с одного компьютера на другой.
КриптоПро Fox
Готовим 1С-Отчетность в Linux
http://utp.sberbank-ast.ru/Main/Notice/700/Plugin

-------------------------------------------------------------------------------------------------------------
Устанавливаем криптопро
astralinux доступ к госзакупкам
с тестововой проверкой плагина
до Носители и контейнеры

Далее:
Готовим 1С-Отчетность в Linux

Копируем контейнер 2018-07-.000  с машины windows:
в /var/opt/cprocsp/keys/user/2018-07-.000

$ /opt/cprocsp/bin/amd64/csptest -keyset -verifycontext -enum -unique
CSP (Type:80) v4.0.9017 KC1 Release Ver:4.0.9944 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 35902435
2018-07-02 16-30-20 ▒▒▒ ▒▒▒▒ ▒▒▒▒ ▒▒▒ - ▒▒▒▒▒ - ▒▒▒▒▒ - ▒▒▒▒▒|HDIMAGE\\2018-07-.000\0A6B
OK.
Total: SYS: 0,020 sec USR: 0,100 sec UTC: 0,140 sec
[ErrorCode: 0x00000000]

Если получили крякозяблики в имени контейнера пробуем вывести сведения вот так:

$ /opt/cprocsp/bin/amd64/csptest -keyset -enum -verifycontext -fqcn | iconv -f cp1251
CSP (Type:80) v4.0.9017 KC1 Release Ver:4.0.9944 OS:Linux CPU:AMD64 FastCode:READY:AVX.
AcquireContext: OK. HCRYPTPROV: 10499043
\\.\HDIMAGE\2018-07-02 16-30-20 ООО XXXX XXXX КЭП - копия - копия - копия
OK.
Total: SYS: 0,030 sec USR: 0,120 sec UTC: 0,180 sec
[ErrorCode: 0x00000000]

В случае если контейнер создан в ОС Windows и имеет в имени кириллицу, импорт конкретного контейнера в случае cp1251

$ /opt/cprocsp/bin/amd64/certmgr -inst -store uMy -cont "$(echo 'HDIMAGE\\2018-07-.000\0A6B' | iconv -t cp1251)"


Далее нам нужно получить сертификат головного УЦ выдавшего Ваш сертификат. Для этого нам нужно вывести список сертификатов установленных в хранилище личных сертификатов пользователя:

$ /opt/cprocsp/bin/amd64/certmgr -list -store uMy
CA cert URL         : http://www.dp.keydisk.ru/root/833/astral-833-2017n.cer


Нам нужно значение поля “CA cert URL”, автоматически скачать сертификаты удостоверяющих центров можно так:

$ mkdir CAs
$ wget -P CAs $(/opt/cprocsp/bin/amd64/certmgr -list -store uMy | awk '/CA cert URL/ { print $5 }') for cert in $(ls -1 CAs/*.crt); do sudo /opt/cprocsp/bin/amd64/certmgr -inst -store mRoot -file $cert; done

понедельник, 26 ноября 2018 г.

Docker 1С сервер в контейнере ubuntu 16.04


$ cd cd ~/
$ git clone https://github.com/renbuar/1c-server.git
$ cd ~/1c-server
$ cp ~/test/1c-enterprise83-common_8.3.14-1373_amd64.deb ~/1c-server
$ cp ~/test/1c-enterprise83-server_8.3.14-1373_amd64.deb ~/1c-server
$ cp ~/test/fonts-ttf-ms_1.0-eter4ubuntu_all.deb ~/1c-server
$ cp ~/test/haspd_7.60-eter1ubuntu_amd64.deb ~/1c-server
$ cp ~/test/haspd-modules_7.60-eter1ubuntu_amd64.deb  ~/1c-server
$ cd ~/1c-server
$ docker build --tag 1c-server .
$ docker volume create --name 1c-server

Запуск со стандартными портами:
 
Запуск тестовый
$ docker run -ti -h u1604 --name 1c-server --rm --privileged -p 1540:1540 -p 1541:1541 -p 1560-1591:1560-1591 -p 475:475 -p1947:1947 -v 1c-server:/home/usr1cv8 1c-server:latest

$ docker run -ti -h u1604 --name 1c-server --rm --privileged -p 1540:1540 -p 1541:1541 -p 1560-1591:1560-1591 -p 475:475 -p1947:1947 -p 8080:8080 -v 1c-server:/home/usr1cv8 1c-server:latest


Запуск разовый

$ docker run -d -h u1604 --name 1c-server --rm --privileged -p 1540:1540 -p 1541:1541 -p 1560-1591:1560-1591 -p 475:475 -p1947:1947 -v 1c-server:/home/usr1cv8 1c-server:latest


Запуск с перезапуском

$ docker run -d -h u1604 --name 1c-server --restart=always --privileged -p 1540:1540 -p 1541:1541 -p 1560-1591:1560-1591 -p 475:475 -p1947:1947 -v 1c-server:/home/usr1cv8 1c-server:latest


$ docker exec -ti 1c-server mc

воскресенье, 25 ноября 2018 г.

Backup и операции в контейнере docker PostgreSQL

24.1. Дамп SQL 
cd ~/pg-967_1c
Собираем образ командой:
docker build -t pg:967_1c .
docker volume create --name pgdata
Запускаем:
docker run --detach --rm --volume pgdata:/var/lib/postgresql/data --name pg1c --publish 5432:5432 pg:967_1c

Постоянный запуск :
docker run --detach --restart=always --volume pgdata:/var/lib/postgresql/data --name pg1c --publish 5432:5432 pg:967_1c


----------------------------------------------------------------------------------------------------
$ docker exec -i  pg1c /usr/bin/pg_dump -U postgres demo1 | gzip > ~/demo1.sql.gz

Backup одной базы demo1:
$ docker exec -t -u postgres pg1c /usr/bin/pg_dump demo1 -c > demo1_`date +%d-%m-%Y"_"%H_%M_%S`.sql

Restore  в туже базу:
$ cat demo1_26-11-2018_17_31_53.sql | docker exec -i pg1c psql -Upostgres
Restore  в другую базу:
$ cat demo1_26-11-2018_17_31_53.sql | docker exec -i pg1c psql -Upostgres demo2


Backup, restore postgres in docker container

dumpall все базы
$ docker exec -t -u postgres pg1c /usr/bin/pg_dumpall -c > dump_`date +%d-%m-%Y"_"%H_%M_%S`.sql

Restore:
cat dump_26-11-2018_17_19_25.sql | docker exec -i pg1c psql -Upostgres



$ docker exec -t -u postgres pg1c /usr/bin/vacuumdb --verbose --analyze --full --quiet --username postgres --dbname=demo1



docker exec -i nlc-pg1cTest psql -U postgres -c "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'log_prod' AND pid <> pg_backend_pid();" && \
docker exec -i nlc-pg1cTest psql -U postgres -c "drop database log_prod;" && \
docker exec -i nlc-pg1cTest psql -U postgres -c "create database log_prod;" && \
cat /backups/sql/$DATE/log_prod.custom | docker exec -i nlc-pg1cTest sh -c "pg_restore -d 'postgres://postgres:пароль@127.0.0.1/log_prod' -v -1"


Docker 1С сервер 2 в контейнере ubuntu 14.04

За основу возьмем
Но но используем свой fork
$ cd cd ~/
$ git clone https://github.com/renbuar/1c_server2.git
$ cd ~/1c_server2/8.3.14-1373
$ cp ~/test/1c-enterprise83-common_8.3.14-1373_amd64.deb ~/1c_server2/8.3.14-1373
$ cp ~/test/1c-enterprise83-server_8.3.14-1373_amd64.deb ~/1c_server2/8.3.14-1373
$ cp ~/test/haspd_7.60-eter1ubuntu_amd64.deb ~/1c_server2/8.3.14-1373
$ cp ~/test/haspd-modules_7.60-eter1ubuntu_amd64.deb ~/1c_server2/8.3.14-1373
$ docker build --tag 1c-server2 .
$ docker volume create --name 1c-server2
Запуск тестовый
$ docker run -ti -h u1604 --name 1c-server-2 --rm --privileged -p 2540:2540 -p 2541:2541 -p 2560-2591:2560-2591 -p 475:475 -p2947:2947 -v 1c-server2:/home/usr1cv8 1c-server2:latest
Запуск разовый
$ docker run -d -h u1604 --name 1c-server-2 --rm --privileged -p 2540:2540 -p 2541:2541 -p 2560-1591:2560-1591 -p 475:475 -p1947:1947 -v 1c-server2:/home/usr1cv8 1c-server2:latest

Без проброса портов ml:

Запуск тестовый
$ docker run -ti -h u1604 --name 1c-server-2 --rm --privileged -p 2540:2540 -p 2541:2541 -p 2560-2591:2560-2591 -v 1c-server2:/home/usr1cv8 1c-server2:latest

Запуск разовый
$ docker run -d -h u1604 --name 1c-server-2 --rm --privileged -p 2540:2540 -p 2541:2541 -p 2560-1591:2560-1591 -v 1c-server2:/home/usr1cv8 1c-server2:latest

Запуск с перезапуском
$ docker run -d -h u1604 --name 1c-server-2 --restart=always --privileged -p 2540:2540 -p 2541:2541 -p 2560-1591:2560-1591 -v 1c-server2:/home/usr1cv8 1c-server2:latest

суббота, 24 ноября 2018 г.

Docker 1С сервер 1 в контейнере ubuntu 14.04

За основу возьмем
Но но используем свой fork

$ cd cd ~/
$ git clone https://github.com/renbuar/1c_server1.git

$ cd ~/1c_server1/8.3.14-1373

$ cp ~/test/1c-enterprise83-common_8.3.14-1373_amd64.deb ~/1c_server1/8.3.14-1373
$ cp ~/test/1c-enterprise83-server_8.3.14-1373_amd64.deb ~/1c_server1/8.3.14-1373
$ cp ~/test/haspd_7.60-eter1ubuntu_amd64.deb ~/1c_server1/8.3.14-1373
$ cp ~/test/haspd-modules_7.60-eter1ubuntu_amd64.deb ~/1c_server1/8.3.14-1373

$ docker build --tag 1c-server1 .

$ docker volume create --name 1c-server1

Запуск тестовый
$ docker run -ti -h u1604 --name 1c-server-1 --rm --privileged -p 1540:1540 -p 1541:1541 -p 1560-1591:1560-1591 -p 475:475 -p1947:1947 -v 1c-server1:/home/usr1cv8 1c-server1:latest

Запуск разовый

$ docker run -d -h u1604 --name 1c-server-1 --rm --privileged -p 1540:1540 -p 1541:1541 -p 1560-1591:1560-1591 -p 475:475 -p1947:1947 -v 1c-server1:/home/usr1cv8 1c-server1:latest


Запуск с перезапуском

$ docker run -d -h u1604 --name 1c-server-1 --restart=always --privileged -p 1540:1540 -p 1541:1541 -p 1560-1591:1560-1591 -p 475:475 -p1947:1947 -v 1c-server1:/home/usr1cv8 1c-server1:latest
 



Docker 1С сервер в контейнере ubuntu 14.04

За основу возьмем
Но но используем свой fork
$ cd cd ~/
$ git clone https://github.com/renbuar/1c_server.git
$ cd ~/1c_server/8.3.14-1373
$ cp ~/test/1c-enterprise83-common_8.3.14-1373_amd64.deb ~/1c_server/8.3.14-1373
$ cp ~/test/1c-enterprise83-server_8.3.14-1373_amd64.deb ~/1c_server/8.3.14-1373
$ docker build --tag 1c-server .
Запуск с --net=host разово:
$ docker run -d --name 1c-server --rm --net=host 1c-server:latest


При каждом создании контейнера нужно пересоздавать  базу.
Что бы не не пересоздавать можно так:

$ docker run -d --name 1c-server --net=host 1c-server:latest
Затем создав базу останавливать  :

$ docker stop 1c-server

При необходимости запускать сноваа:

$ docker start 1c-server

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


Например:
Есть host имя u1604
ip 192.168.1.238
на host docker и PostgrSQL
1c в контенейре
$ docker run -ti -h u1604 --name 1c-server --rm -p 1540:1540 -p 1541:1541 -p 1560-1591:1560-1591 1c-server:latest


поскольку оба хоста имеют одно имя Сервер баз данных задаем по ip

У второго контейнера должно отличаться имя и порты

Ниже точно не правильно сервер знает что он на порту 1541 и пойдет обращение  на другой сервер, если он включен.

$ docker run -d -h u1604 --name 1c-server-1 --rm -p 2540:1540 -p 2541:1541 -p 2560-2591:1560-1591 1c-server:latest


Нужно построить контейнер с другим портами и запустить так:

$ docker run -d -h u1604 --name 1c-server-1 --rm -p 2540:2540 -p 2541:2541 -p 2560-2591:2560-2591 1c-server:latest

При создании базы в поле Кластер серверов указать u1604:2541


docker volume create --name 1c-server

-v 1c-server:/home/usr1cv8 или --mount source=1c-server,target=/home/usr1cv8


Окончательно:

$ docker run -d -h u1604 --name 1c-server-1 --rm -p 2540:1540 -p 2541:1541 -p 2560-2591:1560-1591 -v 1c-server:/home/usr1cv8 1c-server:latest

пятница, 23 ноября 2018 г.

Docker Networking with Linux

PostgreSQL 10

$ mkdir -p ~/pg10

$ cd  ~/pg10


$ nano  Dockerfile

Скопировать текст ниже:  
 
FROM centos:latest
MAINTAINER devrim@gunduz.org

# Add the PostgreSQL PGP key to verify the official yum repository packages
RUN rpm --import https://yum.postgresql.org/RPM-GPG-KEY-PGDG-10

# Add PostgreSQL's repository. It contains the most recent stable release
# of PostgreSQL, 10:
RUN yum -q -y install https://download.postgresql.org/pub/repos/yum/testing/10/redhat/rhel-7-x86_64/pgdg-centos10-10-1.noarch.rpm

# Update the Fedora and PostgreSQL repository metadata
RUN yum -q -y install deltarpm
RUN yum -q -y update

# Install PostgreSQL 10 and some useful packages:
RUN yum -q -y install postgresql10-server postgresql10-contrib procps-ng net-tools

# Run the rest of the commands as the postgres user created by the postgresql10-server
# package when it was yum installed
USER postgres

# initdb PostgreSQL 10:
RUN /usr/pgsql-10/bin/initdb -D /var/lib/pgsql/10/data -A trust 2>&1 < /dev/null

# Adjust PostgreSQL configuration so that remote connections to the
# database are possible. 
RUN echo "host all  all    0.0.0.0/0  md5" >> /var/lib/pgsql/10/data/pg_hba.conf

# And add listen_addresses to /var/lib/pgsql/10/data/postgresql.conf
RUN echo "listen_addresses='*'" >> /var/lib/pgsql/10/data/postgresql.conf

# Create a PostgreSQL role named 'docker' with 'docker' as the password and
# then create a database 'docker' owned by the 'docker' role.
# After start, sleep for 5 secs to make sure that postmaster is started before
# creating the role and database:
RUN  /usr/pgsql-10/bin/pg_ctl -D /var/lib/pgsql/10/data start &&\
    sleep 5 &&\
    psql --command "CREATE USER docker WITH SUPERUSER PASSWORD 'docker';" &&\
    createdb -O docker docker

# Expose the PostgreSQL port
EXPOSE 5432

# Add VOLUMEs to allow backup of config, logs and databases
VOLUME  ["/var/lib/pgsql/10"]

# Set the default command to run when starting the container
CMD ["/usr/pgsql-10/bin/postgres", "-D", "/var/lib/pgsql/10/data"]
 
Сохранить. 



#$ sudo mkdir -p /var/lib/docker/volumes/1c-server/_data  

#$ sudo mkdir -p /var/lib/docker/volumes/1c-server2/_data 



Удалить все контейнеры 

$ docker rm -f $(docker ps -aq)



Удалить все образы 

$ docker rmi -f $(docker images -q) 



$ docker images



$ cd ~/pg10



$ docker build --tag pg10 .


$ docker run -d --name pg_yum_test pg10:latest
 
$ docker exec -ti pg_yum_test bash 
 
# /usr/pgsql-10/bin/pg_ctl stop -D /var/lib/pgsql/10/data 
 
# /usr/pgsql-10/bin/pg_ctl start -D /var/lib/pgsql/10/data  
 
 
# yum localinstall -y *.rpm --skip-broken 
 
Запуск постоянно


$ docker run -d --name 1c-server2 --restart always  --net=host 
--privileged --mount source=1c-server2,target=/root 1c-server2:latest





Запуск разово 

$ docker run -d --name 1c-server --rm --net=host --privileged --mount source=1c-server,target=/root 1c-server:latest



Выключение 

$ docker stop 1c-server  
 

среда, 21 ноября 2018 г.

Как заблокировать обновление PostgreSQL

Как заблокировать обновление определенного пакета (программы) в Ubuntu

$ dpkg -l | grep postgresql
ii  pgdg-keyring                          2018.1                                     all          keyring for apt postgresql.org
ii  postgresql-10                         10.3-3.1C                                  amd64        object-relational SQL database, version 10 server
......
......

Видим, что у нас стоит postgresql-10 версии 10.3-3.1C

$ dpkg -l | grep 10.3-3.1C


Вывод в строку:

$ dpkg -l | grep 10.3-3.1C | awk -F' ' '{print $2}' | xargs
libecpg-compat3:amd64 libecpg-dev libecpg6:amd64 libpgtypes3:amd64 libpq-dev libpq5:amd64 postgresql-10 postgresql-10-dbg postgresql-client-10 postgresql-doc-10 postgresql-plperl-10 postgresql-plpython-10 postgresql-plpython3-10 postgresql-pltcl-10 postgresql-server-dev-10

Пометить как зафиксированные:

$ dpkg -l | grep 10.3-3.1C | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
Можно добавить:
$ sudo apt-mark hold postgresql-common postgresql-client-common

Посмотреть:
$ sudo dpkg --get-selections | grep hold
libecpg-compat3:amd64                           hold
libecpg-dev                                     hold
libecpg6:amd64                                  hold
libpgtypes3:amd64                               hold
libpq-dev                                       hold
libpq5:amd64                                    hold
postgresql-10                                   hold
postgresql-10-dbg                               hold
postgresql-client-10                            hold
postgresql-doc-10                               hold
postgresql-plperl-10                            hold
postgresql-plpython-10                          hold
postgresql-plpython3-10                         hold
postgresql-pltcl-10                             hold
postgresql-server-dev-10                        hold


$ sudo apt update
$ sudo apt list --upgradable




$ sudo apt list --upgradable
Вывод списка… Готово
libecpg-compat3/xenial-pgdg 11.1-1.pgdg16.04+1 amd64 [может быть обновлён с: 10.3-3.1C]
libecpg-dev/xenial-pgdg 11.1-1.pgdg16.04+1 amd64 [может быть обновлён с: 10.3-3.1C]
libecpg6/xenial-pgdg 11.1-1.pgdg16.04+1 amd64 [может быть обновлён с: 10.3-3.1C]
libpgtypes3/xenial-pgdg 11.1-1.pgdg16.04+1 amd64 [может быть обновлён с: 10.3-3.1C]
libpq-dev/xenial-pgdg 11.1-1.pgdg16.04+1 amd64 [может быть обновлён с: 10.3-3.1C]
libpq5/xenial-pgdg 11.1-1.pgdg16.04+1 amd64 [может быть обновлён с: 10.3-3.1C]
postgresql-10/xenial-pgdg 10.6-1.pgdg16.04+1 amd64 [может быть обновлён с: 10.3-3.1C]
postgresql-10-dbg/xenial-pgdg 10.6-1.pgdg16.04+1 amd64 [может быть обновлён с: 10.3-3.1C]
postgresql-client-10/xenial-pgdg 10.6-1.pgdg16.04+1 amd64 [может быть обновлён с: 10.3-3.1C]
postgresql-doc-10/xenial-pgdg,xenial-pgdg 10.6-1.pgdg16.04+1 all [может быть обновлён с: 10.3-3.1C]
postgresql-plperl-10/xenial-pgdg 10.6-1.pgdg16.04+1 amd64 [может быть обновлён с: 10.3-3.1C]
postgresql-plpython-10/xenial-pgdg 10.6-1.pgdg16.04+1 amd64 [может быть обновлён с: 10.3-3.1C]
postgresql-plpython3-10/xenial-pgdg 10.6-1.pgdg16.04+1 amd64 [может быть обновлён с: 10.3-3.1C]
postgresql-pltcl-10/xenial-pgdg 10.6-1.pgdg16.04+1 amd64 [может быть обновлён с: 10.3-3.1C]
postgresql-server-dev-10/xenial-pgdg 10.6-1.pgdg16.04+1 amd64 [может быть обновлён с: 10.3-3.1C]

$ sudo apt upgrade


$ dpkg --get-selections | grep hold
libecpg-compat3:amd64                           hold
libecpg-dev                                     hold
libecpg6:amd64                                  hold
libpgtypes3:amd64                               hold
libpq-dev                                       hold
libpq5:amd64                                    hold
postgresql-10                                   hold
postgresql-10-dbg                               hold
postgresql-client-10                            hold
postgresql-doc-10                               hold
postgresql-plperl-10                            hold
postgresql-plpython-10                          hold
postgresql-plpython3-10                         hold
postgresql-pltcl-10                             hold
postgresql-server-dev-10                        hold



$ dpkg -l | grep 9.6.7-1.1C
$ dpkg -l | grep 9.6.7-1.1C | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
Можно добавить:
$ sudo apt-mark hold postgresql-common postgresql-client-common

Как посмотреть зависимости:
$ dpkg-deb -I postgresql-server-dev-10_10.5-10.1C_amd64.deb | grep Depends
 Depends: libpq-dev (>= 10~~), postgresql-common (>= 142~), libc6 (>= 2.14)



вторник, 20 ноября 2018 г.

Запуск Ubuntu server 16.04.5 PostgreSQL, версия 10.3-3.1C без systemctl start postgresql.service

Postgresql server doesn't start
Ситуация:
Перестал загружать PostgreSQL systemctl
# sudo systemctl start postgresql.service
Кластер по умолчанию /var/lib/postgresql/10/main
Запускаем сервер вручную

Тестовая виртуальная машина

1. Устанавливаем ubuntu 16.04.5 HWE server  без swap файла,
т.е. размечаем вручную весь диск ext4 root.

ubuntu имя компьютера u1604
ubuntu пользователь user пароль 12345
ubuntu пользователь postgres password pass
ubuntu пользователь usr1cv8 password pass

Настройки виртуальной машины - RAM (32GB)
Сеть - сетевой мост.
Проще всего пробросить в виртуальную машину лицензии 1С:Предприятия 8 посредством локального hasp.
Настройки ubuntu пользователь (привязка в скриптах) user пароль 12345, имя компьютера
u1604 сеть DHCP

После установки, Ctrl +Alt + T (окно терминала)
$ sudo apt update -y
$ sudo apt upgrade -y
$ sudo apt install mc ssh samba htop -y

Возможно sudo apt upgrade -y не пройдет из за блокировки, тогда sudo reboot и повторите с начала.

$ lsusb
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Пробросить hasp средствами VirtualBox

$ lsusb
Bus 001 Device 004: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 001 Device 003: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

$ sudo cat /proc/cpuinfo | grep MHz
$ sudo systemctl status ondemand
$ sudo systemctl stop ondemand
$ sudo systemctl disable ondemand
$ sudo poweroff

Образ u16045.ova

2. После перезагрузки по сети можно подключиться MobaXterm
к нашей виртуальной машине (по ip или или имени )  загрузить файлы установки:
$ mkdir /home/user/test

В папку ~/test положить файлы:

postgresql_10.3_2.1C_amd64_deb.tar.bz2
postgresql_10.3_2.1C_amd64_addon_deb.tar.bz2

Исправим bug
Several regex warnings when installing latest postgres update

sudo nano /usr/sbin/pam_getenv
строка 78 заменить
$val =~ s/(?<!\\)\${([^}]+)}/$ENV{$1}||""/eg;
на
$val =~ s/(?<!\\)\$\{([^}]+)\}/$ENV{$1}||""/eg;

#sudo apt-get install libicu55  -y
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main" >> /etc/apt/sources.list.d/postgresql.list'
sudo apt update -y
sudo apt install libtcl8.6 -y
$ sudo apt-get install postgresql-common postgresql-client-common ssl-cert  pgdg-keyring  -y
mkdir -p /tmp/post
cp /home/user/test/postgresql_10.3_3.1C_amd64_deb.tar.bz2 /tmp/post/
cp /home/user/test/postgresql_10.3_3.1C_amd64_addon_deb.tar.bz2 /tmp/post/
cd /tmp/post
tar -xvf postgresql_10.3_3.1C_amd64_deb.tar.bz2
cd  postgresql-10.3-3.1C_amd64_deb
sudo dpkg -i *.deb


cd /tmp/post/
tar -xvf postgresql_10.3_3.1C_amd64_addon_deb.tar.bz2
cd postgresql-10.3-3.1C_amd64_addon_deb
sudo dpkg -i *.deb

dpkg -l | grep 10.3-3.1C | awk -F' ' '{print $2}' | sudo xargs apt-mark hold
sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
sudo cp /etc/postgresql/10/main/postgresql.conf /etc/postgresql/10/main/postgresql.conf.bak
#sudo rm /etc/apt/sources.list.d/postgresql.list
#sudo apt update  -y
#Делаем проверки
#sudo systemctl status postgresql.service
#ss -tunpl | grep 5432
$ ss -tunpl | grep 5432
tcp    LISTEN     0      128       *:5432                  *:*
tcp    LISTEN     0      128      :::5432                 :::*

# $ ps aux | grep postgres | grep -- -D
postgres  4914  0.0  0.1 320972 28864 ?        S    08:37   0:00 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf

Итак:

Creating new PostgreSQL cluster 10/main ...
/usr/lib/postgresql/10/bin/initdb -D /var/lib/postgresql/10/main --auth-local peer --auth-host md5
Файлы, относящиеся к этой СУБД, будут принадлежать пользователю "postgres".
От его имени также будет запускаться процесс сервера.

Готово. Теперь вы можете запустить сервер баз данных:

    /usr/lib/postgresql/10/bin/pg_ctl -D /var/lib/postgresql/10/main -l файл_журнала start

Ver Cluster Port Status Owner    Data directory              Log file
10  main    5432 down   postgres /var/lib/postgresql/10/main pg_log/postgresql-%a.log

$ sudo su - postgres


$ /usr/lib/postgresql/10/bin/pg_ctl stop -D /var/lib/postgresql/10/main
ожидание завершения работы сервера.... готово
сервер остановлен



$  /usr/lib/postgresql/10/bin/pg_ctl start -D /var/lib/postgresql/10/main
ожидание запуска сервера....postgres не может открыть файл конфигурации сервера "/var/lib/postgresql/10/main/postgresql.conf": Нет такого файла или каталога
 прекращение ожидания
pg_ctl: не удалось запустить сервер
Изучите протокол выполнения.

Посмотрим почему (ниже будет правильный способ):

Создадим кластер:

$ sudo mkdir /usr/local/pgsql
$ sudo chown postgres /usr/local/pgsql
$ sudo su - postgres
$ /usr/lib/postgresql/10/bin/initdb -D /usr/local/pgsql/data


#------------------------------------------------------------------------------------------------
# Можно но нам не нужно
$ exit 
$ sudo -u postgres psql -U postgres -c "alter user postgres with password 'pass';"
$ ps aux | grep postgres | grep -- -D
postgres 16622  0.0  0.0 320612 27328 pts/0    S    19:52   0:00 
 #------------------------------------------------------------------------------------------------

Сравним каких файлов не хватает:

$ ls /etc/postgresql/10/main
conf.d  environment  pg_ctl.conf  pg_hba.conf  pg_ident.conf  postgresql.conf  postgresql.conf.bak  start.conf
 
$ ls /usr/local/pgsql/data
base          pg_hba.conf    pg_notify     pg_stat      pg_twophase  postgresql.auto.conf
global        pg_ident.conf  pg_replslot   pg_stat_tmp  PG_VERSION   postgresql.conf
pg_commit_ts  pg_logical     pg_serial     pg_subtrans  pg_wal
pg_dynshmem   pg_multixact   pg_snapshots  pg_tblspc    pg_xact


$ ls /var/lib/postgresql/10/main
base              pg_dynshmem   pg_notify     pg_stat      pg_twophase  postgresql.auto.conf
current_logfiles  pg_log        pg_replslot   pg_stat_tmp  PG_VERSION   postmaster.opts
global            pg_logical    pg_serial     pg_subtrans  pg_wal
pg_commit_ts      pg_multixact  pg_snapshots  pg_tblspc    pg_xact

Скопируем недостающие файлы:

$ cp /usr/local/pgsql/data/postgresql.conf /var/lib/postgresql/10/main/
$ cp /usr/local/pgsql/data/pg_hba.conf /var/lib/postgresql/10/main/
$ cp /usr/local/pgsql/data/pg_ident.conf /var/lib/postgresql/10/main/


$ /usr/lib/postgresql/10/bin/pg_ctl start -D /var/lib/postgresql/10/main
ожидание запуска сервера....< 2018-11-20 15:45:08.534 MSK >СООБЩЕНИЕ:  для приёма подключений по адресу IPv4 "0.0.0.0" открыт порт 5432
< 2018-11-20 15:45:08.534 MSK >СООБЩЕНИЕ:  для приёма подключений по адресу IPv6 "::" открыт порт 5432
< 2018-11-20 15:45:08.535 MSK >СООБЩЕНИЕ:  для приёма подключений открыт сокет Unix "/var/run/postgresql/.s.PGSQL.5432"
< 2018-11-20 15:45:08.545 MSK >СООБЩЕНИЕ:  передача вывода в протокол процессу сбора протоколов
< 2018-11-20 15:45:08.545 MSK >ПОДСКАЗКА:  В дальнейшем протоколы будут выводиться в каталог "pg_log".
 готово
сервер запущен

Теперь правильный способ запуска (создавать кластер не нужно):


$ sudo su postgres
$ ps aux | grep postgres | grep -- -D
postgres  1966  0.0  0.1 320972 28588 pts/0    S    07:54   0:00 /usr/lib/postgresql/10/bin/postgres -D /var/lib/postgresql/10/main -c config_file=/etc/postgresql/10/main/postgresql.conf
postgres  1983  0.0  0.0  15468   968 pts/0    S+   07:55   0:00 grep -- -D

$ /usr/lib/postgresql/10/bin/pg_ctl stop -D /var/lib/postgresql/10/main
ожидание завершения работы сервера.... готово
сервер остановлен

Собственно сам запуск:

$ /usr/lib/postgresql/10/bin/pg_ctl start  -w -D /var/lib/postgresql/10/main  -o '-c config_file=/etc/postgresql/10/main/postgresql.conf'
ожидание запуска сервера....2018-11-23 07:56:09.602 MSK [1988] СООБЩЕНИЕ:  для приёма подключений по адресу IPv4 "0.0.0.0" открыт порт 5432
2018-11-23 07:56:09.602 MSK [1988] СООБЩЕНИЕ:  для приёма подключений по адресу IPv6 "::" открыт порт 5432
2018-11-23 07:56:09.603 MSK [1988] СООБЩЕНИЕ:  для приёма подключений открыт сокет Unix "/var/run/postgresql/.s.PGSQL.5432"
2018-11-23 07:56:09.627 MSK [1988] СООБЩЕНИЕ:  передача вывода в протокол процессу сбора протоколов
2018-11-23 07:56:09.627 MSK [1988] ПОДСКАЗКА:  В дальнейшем протоколы будут выводиться в каталог "pg_log".
 готово
сервер запущен


Другой способ запуска:

$ sudo su postgres

$ /usr/lib/postgresql/10/bin/pg_ctl stop -D /var/lib/postgresql/10/main
ожидание завершения работы сервера.... готово
сервер остановлен



$ /usr/lib/postgresql/10/bin/postgres  -D /var/lib/postgresql/10/main   -c 'config_file=/etc/postgresql/10/main/postgresql.conf'

суббота, 17 ноября 2018 г.

Установка последней версии Docker CE for Ubuntu

Get Docker CE for Ubuntu
Документация
Вопросы с тегом 'docker'
Шпаргалка с командами Docker

$ sudo apt-get remove docker docker-engine docker.io
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
$ sudo apt autoremove
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
pub   4096R/0EBFCD88 2017-02-22
      Отпечаток ключа = 9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid                  Docker Release (CE deb) <docker@docker.com>
sub   4096R/F273FCD8 2017-02-22

$ sudo add-apt-repository "deb https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
#---------------------------------------------------------------------------------------------------
deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable
# deb-src [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable
#---------------------------------------------------------------------------------------------------

$ sudo apt-get update
$ sudo apt-get install docker-ce
$ sudo usermod -aG docker $(whoami)



$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
596a60786863        ubuntu:16.04        "/bin/bash"         4 minutes ago       Exited (0) 27 seconds ago                       objective_volhard


Посомтреть образы
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               4a689991aa24        4 weeks ago         116MB

Посмотреть все контейнеры
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                          PORTS               NAMES
596a60786863        ubuntu:16.04        "/bin/bash"         6 minutes ago       Exited (0) About a minute ago                       objective_volhard


Старт контейнера 596a60786863
$ docker start 596a60786863
596a60786863

Посмотреть активные контейнеры  
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
596a60786863        ubuntu:16.04        "/bin/bash"         7 minutes ago       Up 36 seconds                           objective_volhard

Подключиться к работающему контейнеру
$ docker exec -it 596a60786863 /bin/bash
root@596a60786863:/#

Выйти из консоли
root@596a60786863:/# exit
exit

Посмотреть активные контейнеры 
user@u1604:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
596a60786863        ubuntu:16.04        "/bin/bash"         12 minutes ago      Up 5
minutes                            objective_volhard

Остановить контейнер  596a60786863
$ docker stop 596a60786863
596a60786863

Посмотреть активные контейнеры
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Удалить все контейнеры
$ docker rm -f $(docker ps -aq)

Удалить все образы
$ docker rmi -f $(docker images -q)
 

Сервер 1С:Предприятия в контейнере Docker

Соберем сервер по этой статье:
Сервер 1С:Предприятия в контейнере Docker

Устанавливаем docker

$ git clone https://github.com/alexanderfefelov/docker-1c-server.git

Скачиваем и кладем  ~/docker-1c-server
1c-enterprise83-common_8.3.14-1373_amd64.deb  1c-enterprise83-server_8.3.14-1373_amd64.deb

Меняем версию платформы:
$ nano  ~/docker-1c-server/Dockerfile

ENV SERVER_VERSION 8.3.14-1373

Сохранить.

$ cd ~/docker-1c-server
$ ./build.sh
$ ./run.sh

$ docker ps
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS               NAMES
546ca919bd70        alexanderfefelov/1c-server   "/docker-entrypoin..."   45 seconds ago      Up 45 seconds                           1c-server





 $ docker exec 1c-server id usr1cv8
uid=999(usr1cv8) gid=1000(grp1cv8) groups=1000(grp1cv8)

$ docker exec -ti 1c-server id usr1cv8 /bin/bash

$ docker exec 1c-server mc

Удалить все контейнеры
$ docker rm -f $(docker ps -aq)

Проба

Запуск нескольких сервисов в контейнере
Подгружать службу SSH
Вопросы с тегом 'docker'
В чем разница между CMD и ENTRYPOINT в файле Docker?
Как автоматически запустить службу при запуске контейнера докеров?
Start sshd automatically with docker container
docker-1c-full-stack
Погружаемся в Docker: Dockerfile и коммуникация между контейнерами
Как и для чего использовать Docker
Знакомство с Docker'ами

Удалить все контейнеры
$ docker rm -f $(docker ps -aq)

Удалить все образы
$ docker rmi -f $(docker images -q)

$ docker images

$ mkdir -p ~/1c-server2
$ cd  ~/1c-server2
положить rpm64_8_3_14_1373.tar.gz
$ ls
rpm64_8_3_14_1373.tar.gz

$ nano  Dockerfile
Скопировать текст ниже:

#https://github.com/artb1sh/docker-1c-full-stack
FROM centos:latest

ENV SERVER_VERSION 8_3_14_1373
ENV PATH /opt/1C/v8.3/x86_64/:$PATH
RUN localedef --inputfile ru_RU --force --charmap UTF-8 --alias-file /usr/share/locale/locale.alias ru_RU.UTF-8
ENV LANG ru_RU.utf8
ENV GOSU_VERSION 1.11

ADD rpm64_${SERVER_VERSION}.tar.gz /tmp

RUN gpg --keyserver pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
    && curl -o /usr/local/bin/gosu -SL "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-amd64" \
    && curl -o /usr/local/bin/gosu.asc -SL "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-amd64.asc" \
    && gpg --verify /usr/local/bin/gosu.asc \
    && rm /usr/local/bin/gosu.asc \
    && rm -r /root/.gnupg/ \
    && chmod +x /usr/local/bin/gosu

RUN yum -y install vim which glibc.i686 usbutils xorg-x11-fonts-Type1 xorg-x11-fonts-truetype cabextract \
    xorg-x11-font-utils fontconfig net-tools mc ImageMagick glib2-devel unixODBC libmspack \
    && curl -o /tmp/hasp.rpm -SL "https://download.etersoft.ru/pub/Etersoft/HASP/last/CentOS/7/haspd-7.60-eter1centos.x86_64.rpm" \
    && curl -o /tmp/hasp-modules.rpm -SL "https://download.etersoft.ru/pub/Etersoft/HASP/last/CentOS/7/haspd-modules-7.60-eter1centos.x86_64.rpm" \
    && yum install -y /tmp/*.rpm && rm /tmp/*.rpm \
    && rm -rf /tmp/* \
    && mkdir -p /opt/1C/v8.3/x86_64/conf


#COPY logcfg.xml /home/usr1cv8/.1cv8/1C/1cv8/conf
#COPY docker-entrypoint.sh /
#COPY logcfg.xml /root/.1cv8/1C/1cv8/conf
#COPY hasplm.ini /etc/hasplm
#RUN chmod +x /docker-entrypoint.sh

#VOLUME /root
#EXPOSE 1540-1541 1560-1591 475 1947

#CMD ["bash"]
#ENTRYPOINT ["/docker-entrypoint.sh"]
#ENTRYPOINT /etc/init.d/haspd start && ragent && /bin/bash


EXPOSE 2540-2541 2560-2591

ENTRYPOINT /etc/init.d/haspd start && ragent /port 2540 /regport 2541 /range 2560:2591 && /bin/bash
#ENTRYPOINT /etc/init.d/haspd start && /bin/bash
#ENTRYPOINT /bin/bash

Сохранить.

$ sudo mkdir -p /var/lib/docker/volumes/1c-server/_data 
$ sudo mkdir -p /var/lib/docker/volumes/1c-server2/_data

Удалить все контейнеры
$ docker rm -f $(docker ps -aq)

Удалить все образы
$ docker rmi -f $(docker images -q)

$ docker images

$ cd ~/1c-server

$ docker build --tag 1c-server .

Запуск постоянно
$ docker run -d --name 1c-server2 --restart always  --net=host --privileged --mount source=1c-server2,target=/root 1c-server2:latest


Запуск разово
$ docker run -d --name 1c-server --rm --net=host --privileged --mount source=1c-server,target=/root 1c-server:latest

Выключение
$ docker stop 1c-server

$ cd ~/1c-server2

$ docker build --tag 1c-server2 .

Запуск постоянно
$ docker run -d --name 1c-server2 --restart always  --net=host --privileged --mount source=1c-server2,target=/root 1c-server2:latest

Запуск разово 
$ docker run -d --name 1c-server2 --rm --net=host --privileged --mount source=1c-server2,target=/root 1c-server2:latest


Выключение
$ docker stop 1c-server2






Знакомство с Docker. Запускаем Apache в контейнере


Знакомство с Docker. Запускаем Apache в контейнере
How to manually build your own Apache HTTP server container on Docker
 
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               4a689991aa24        4 weeks ago         116MB

$ docker run -ti 4a689991aa24
root@1e0bbac5484b:/#
# apt update
# apt upgrade
# apt install mc nano
# apt-get install apache2 -y
# exit



$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
1e0bbac5484b        4a689991aa24        "/bin/bash"         7 minutes ago       Exited (0) 2 minutes ago                        hardcore_clarke
596a60786863        ubuntu:16.04        "/bin/bash"         About an hour ago   Exited (0) 42 minutes ago                       objective_volhard
user@u1604:~$ docker commit 1e0bbac5484b
sha256:ecea558f5d2c8931cdf901abe19ad977e5703cb1481dfd3756e20827d1961cda 


$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              ecea558f5d2c        58 seconds ago      287MB
ubuntu              16.04               4a689991aa24        4 weeks ago         116MB


user@u1604:~$ docker tag ecea558f5d2c ubuntu-apache:v1

user@u1604:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu-apache       v1                  ecea558f5d2c        2 minutes ago       287MB
ubuntu              16.04               4a689991aa24        4 weeks ago         116MB

$ docker run -p 8080:80 ubuntu-apache:v1 /usr/sbin/apache2ctl -D FOREGROUND
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message


Смотреть можно на host

http://<host ip>:8080/

Все работает!

How to mount a host directory in a Docker container

$ docker run -v /home/user/test:/test  -p 8080:80 ubuntu-apache:v1 /usr/sbin/apache2ctl -D FOREGROUND

$ docker run -v /home/user/test:/test  -it -p 8080:80 ubuntu-apache:v1
root@afc9b3f1e82f:/# /usr/sbin/apache2ctl -D FOREGROUND
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message




$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
b90dfe76d156        ubuntu-apache:v1    "/usr/sbin/apache2..."   2 minutes ago       Up 2 minutes        0.0.0.0:8080->80/tcp   infallible_brattain
user@u1604:~$ docker exec -it b90dfe76d156 /bin/bash
root@b90dfe76d156:/#
 

Docker - a way to give access to a host USB or serial device? 

пятница, 16 ноября 2018 г.

Как установить Docker в Ubuntu 16.04

За основу берем руководство:Как установить и использовать Docker в Ubuntu 16.04
How to Install and Use Docker on Ubuntu 16.04
Установка docker на Ubuntu 16.04
Get Started
Official Repository

$ lsusb
Bus 001 Device 003: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
$ sudo apt-add-repository 'deb https://apt.dockerproject.org/repo ubuntu-xenial main'
$ sudo apt-get update

$ apt-cache policy docker-engine
docker-engine:
  Установлен: (отсутствует)
  Кандидат:   17.05.0~ce-0~ubuntu-xenial
  Таблица версий:
     17.05.0~ce-0~ubuntu-xenial 500
        500 https://apt.dockerproject.org/repo ubuntu-xenial/main amd64 Packages
     17.04.0~ce-0~ubuntu-xenial 500
        500 https://apt.dockerproject.org/repo ubuntu-xenial/main amd64 Packages

Обратите внимание, что docker-engine не установлен, для установки будет использован репозиторий Docker для Ubuntu 16.04. Версия docker-engine может отличаться от указанной в нашем примере.

$ sudo apt-get install -y docker-engine
$ sudo systemctl status docker

Для того, чтобы не вводить sudo каждый раз при запуске docker, добавьте имя своего пользователя в группу docker:
$ sudo usermod -aG docker $(whoami) 

$ docker
Посмотреть установленные образы
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
Удалить образ

$ docker rmi ubuntu:16.04

Создать образ с просмотром репозитария

##$ docker run ubuntu:16.04 grep -v '^#' /etc/apt/sources.list
$ docker run -it  ubuntu:16.04

root@596a60786863:/#
# apt update
# apt upgrade
# apt install mc nano
# apt install usbutils
# lsusb
Bus 001 Device 003: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
# exit

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
596a60786863        ubuntu:16.04        "/bin/bash"         4 minutes ago       Exited (0) 27 seconds ago                       objective_volhard


Посомтреть образы
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               4a689991aa24        4 weeks ago         116MB

Посмотреть все контейнеры
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                          PORTS               NAMES
596a60786863        ubuntu:16.04        "/bin/bash"         6 minutes ago       Exited (0) About a minute ago                       objective_volhard


Старт контейнера 596a60786863
$ docker start 596a60786863
596a60786863

Посмотреть активные контейнеры  
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
596a60786863        ubuntu:16.04        "/bin/bash"         7 minutes ago       Up 36 seconds                           objective_volhard

Подключиться к работающему контейнеру
$ docker exec -it 596a60786863 /bin/bash
root@596a60786863:/#

Выйти из консоли
root@596a60786863:/# exit
exit

Посмотреть активные контейнеры 
user@u1604:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
596a60786863        ubuntu:16.04        "/bin/bash"         12 minutes ago      Up 5
minutes                            objective_volhard

Остановить контейнер  596a60786863
$ docker stop 596a60786863
596a60786863

Посмотреть активные контейнеры
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Удалить все контейнеры
$ docker rm -f $(docker ps -aq)

Удалить все образы
$ docker rmi -f $(docker images -q)

Apache enable worker mpm

Apache enable worker mpm
Apache error “Could not reliably determine the server's fully qualified domain name”
7.10.2. Apache
Публикация файловой базы 1С в режиме веб-клиента
18.4. Особенности выполнения фоновых заданий в файловом и клиент-серверном вариантах


$ sudo apachectl -V | grep -i mpm
Server MPM:     event
$ sudo a2dismod mpm_event
$ sudo a2enmod mpm_worker
$ sudo service apache2 restart

$ sudo apachectl -V | grep -i mpm
Server MPM:     worker


Проблема возникает из-за неправильной настройки Apache.
1. Вместо mpm-модуля по-умолчанию - event - следует использовать mpm-модуль worker (https://its.1c.ru/db/v8313doc#bookmark:adm:TI000000509)
2. Из-за настроек mpm-worker по-умолчанию Apache запускает минимум два независимых процесса, куда распределяются вызовы от клиентов. К ошибке приводит существующая особенность работы с фоновыми заданиями в файловом варианте: "Информация о фоновых заданиях, вызванных с помощью методов языка или выполняющих отчеты, доступна только в том клиентском приложении, которое их выполняло. Информация не сохраняется после завершения работы клиентского приложения." Apache распределяет вызовы между процессами-worker'ами в произвольном порядке, поэтому вызов поика фонового задания может придти не в тот процесс, в котором это задание было создано.
Для исправления ситуации необходимо изменить настройки модуля mpm_worker таким образом, чтобы обеспечить запуск только одного процесса Apache, обрабатывающего запросы.

Настройка apache MPM (prefork, worker, event) 
В файловом варианте при работе через веб-сервер Apache возникают ошибки «Фоновое задание не найдено» 

<IfModule worker.c>
StartServers         1
MaxClients         300
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0 
ServerLimit 1 
</IfModule>
 

$ ps aux | grep apache
root 1723 0.0 0.1 122188 14936 ? Ss 11:09 0:00 /usr/sbin/apache2 -k start
www-data 6790 0.0 0.0 474744 5192 ? Sl 11:29 0:00 /usr/sbin/apache2 -k start
user 6833 0.0 0.0 21316 936 pts/2 S+ 11:29 0:00 grep --color=auto apache