Зачем?
До выхода платформы 1С:Предприятия версии 8.3.23 бесплатно можно было использовать только учебную версию платформы со значительными техническими ограничениями (не более одного сеанса, только файловый вариант, нет возможностей печати и сохранения документов и т.д.).
В версии 8.3.23 появилась Community-лицензия, которая позволяет использовать платформу для обучения, разработки и отладки бесплатно без ограничений по функциональности и в том числе в клиент-серверном режиме работы.
При разработке для клиент-серверного режима часто допускаются ошибки, связанные с работой клиента и сервера на одной машине (самая частая - использование пути в файлу на клиенте в контексте сервера). Поэтому, для максимально приближенному к реальному сценарию эксплуатации, развернем клиент и сервер на разных машинах с помощью community-лицензии. На физической (хост) машине будем запускать клиент, а в качестве сервера используем виртуальную машину.
В качестве гостевой ОС на виртуальной машине будем использовать CentOS 7, в качестве СУБД PosgreSQL. Эта комбинация часто используется на внедрениях.
Ограничения
На текущий момент версия 8.3.23 является тестовой, поэтому ее скачивание доступно только при наличии соответствующего доступа к ИТС.
Для активации community-лицензии необходима учетная запись на портале developer.1c.ru
Описанная схема потребует 2 активаций community-лицензии. Всего для 1 учетной записи доступно не более 3 одновременных активаций.
Инструкция не учитывает особенности эксплуатации программ для решения реальных задач (в первую очередь с точки зрения безопасности). Подходит только для развертывания личных тестовых стендов.
Описание сценария рассчитано на опытного пользователя Windows, базово знакомого с ОС Linux. Если какие-то аспекты непонятны - задавайте вопросы в комментариях. Постараюсь ответить или дополнить статью.
Подготовка дистрибутивов
- Скачиваем и устанавливаем VirtualBox https://www.virtualbox.org/
- Скачиваем CentOS 7 x86_64 Minimal https://www.centos.org/download/
- Скачиваем дистрибутив платформы x64 8.3.23.1437 для Linux и для Windows
- Скачиваем и устанавливаем WinSCP (для удобной работы с файловой системой ВМ)
- Скачиваем и устанавливаем SSH-клиент (Putty или расширения для Chrome "Secure Shell")
Создание и первичная настройка виртуальной машины
- Запускаем VirtualBox
- Создаем виртуальную машину (ВМ) из образа CentOS
- Устанавливаем ОС по умолчанию, устанавливаем пароль для root, создаем первого пользователя администратора с логином
admin
. Обязательно запомните или запишите оба пароля, дальнейшая настройка без них будет невозможна. - Настраиваем сеть для ВМ, нам необходимо, чтобы она была доступа по сети с хост-машины:
- Выключаем машину
shutdown now
- Заходим в настройки ВМ / Сеть, на закладке Адаптер 2 включаем сетевой адаптер, переключаем Тип подключения на Виртуальный адаптер хоста
- Включаем машину
- Выполняем команду
ip a
, смотрим присвоенный ip-адрес в последнем адаптере
- Настраиваем выход в интернет для ВМ:
- Проверяем доступность интернета с ВМ команping ya.ru, если пинг есть, то этот пункт можно пропустить дой
- Подключаемся к машине через WinSCP по ip-адресу
- Открываем файл /etc/sysconfig/network-scripts/ifcfg-enp0s3 в блокноте или другом текстовом редакторе
- Меняем значение
ONBOOT=no
наONBOOT=yes
- Перезапускаем службу сети
systemctl restart network
- Далее для удобства ввода команд удобнее подключиться через SSH-клиент. Если используем расширение для Chrome, то надо ввести ssh, пробел, admin@[ip-адрес]
- Обновляем пакетный менеджер
sudo yum update sudo yum upgrade
- Проверяем локаль
locale
, если отличная от "ru_RU.UTF-8", то выполняем командуlocalectl set-locale LANG=ru_RU.UTF-8
и перелогиниваемся - Через WinSCP открываем файл /etc/selinux/config и меняем значение
SELINUX=enforcing
наSELINUX=disabled
- Устанавливаем репозиторий epel
sudo yum install -y epel-release
- Устанавливаем необходимые для работы платформы библиотеки и шрифты
sudo yum install ImageMagick sudo yum install https://disweb.ru/files/rpm/compat-libtermcap-2.0.8-49.el6.x86_64.rpm sudo yum install https://disweb.ru/files/rpm/compat-readline5-5.2-17.1.el6.x86_64.rpm sudo yum install https://disweb.ru/files/rpm/fonts-ttf-ms-1.0-eter4centos.noarch.rpm
- Настраиваем имя виртуальной машины
hostnamectl set-hostname your-new-hostname
- Прописываем имя виртуальной машины в hosts. Через WinSPC открываем файл /etc/hosts. В строчку, которая начинается с 127.0.0.1 добавляем пробел и имя виртуальной машины
your-new-hostname
- Делаем снимок ВМ средствами VirtualBox, чтобы в случае возникновения проблем далее можно было откатиться на эту точку
Установка платформы 1С:Предприятие
- Устанавливаем на хост-машину платформу из дистрибутива для Windows. Обязательные компоненты: 1С:Предприятие 8, Модули расширения веб-сервера, Администрирование сервера 1С:Предприятия
- Устанавливаем на ВМ платформу из дистрибутива для Linux.
- С помощью WinSCP создаем новый каталог "/home/admin/distrib/" и переносим в него файлы платформы для Linux
- С помощью SSH-клиента переходим в созданный каталог
cd /home/admin/distrib/
- Распаковываем платформу
sudo tar -x -f server64_8_3_23_1437.tar.gz
- Запускаем установку платформы
sudo chmod +x setup-full-8.3.23.1437-x86_64.run sudo ./setup-full-8.3.23.1437-x86_64.run --mode unattended --enable-components client_full,client_thin_fib,liberica_jre,server,ws,server_admin
- Добавляем службу сервера платформы
sudo ln /opt/1cv8/x86_64/8.3.23.1437/srv1cv8-8.3.23.1437@{,default}.service sudo systemctl link /opt/1cv8/x86_64/8.3.23.1437/srv1cv8-8.3.23.1437@default.service systemctl enable srv1cv8-8.3.23.1437@default.service systemctl start srv1cv8-8.3.23.1437@default.service
- Проверяем работу службы сервера 1С:Предприятие командой
systemctl status srv1cv8-8.3.23.1437@default.service
. При корректной настройке среди выведенных строк должно бытьActive: active (running)
- Добавляем порты платформы в исключение файрвола:
sudo firewall-cmd --zone=public --add-port=1540-1541/tcp --permanent sudo firewall-cmd --zone=public --add-port=1560-1591/tcp --permanent sudo firewall-cmd --reload
- Проверяем доступность сервера с хост-машине (действия выполняем на хост-машине)
- Запускаем консоль кластера серверов 1С:Предприятия
C:\Program Files\1cv8\common\1CV8 Servers (x86-64).msc
- Должен быть добавлен центральный сервер и локальный кластер внутри
- Запускаем консоль кластера серверов 1С:Предприятия
- Делаем снимок ВМ средствами VirtualBox, чтобы в случае возникновения проблем далее можно было откатиться на эту точку
Установка графики и активация лицензии на сервере
- Через SSH-клиент устанавливаем пакеты GNOME:
sudo yum -y groups install "GNOME Desktop" echo "exec gnome-session" >> ~/.xinitrc
- Через VirtualBox интерактивно открываем ВМ и выполняем команду
startx
- Запускаем терминал и устаналиваем GNOME графическим интерфейсом по умолчанию:
systemctl set-default graphical.target
- Далее через терминал запускаем платформу 1С:Предприятие
sudo /opt/1cv8/x86_64/8.3.23.1437/1cv8
- Создаем файловую базу. Выбираем добавить базу в список, Включение в список ранее созданноой информационной базы устанавливаем название и путь для хранения (желательно в каталоге /home/admin/)
- Запускаем конфигуратор для созданной файловой базы
- Выбираем Активировать комьюнити-лицензию и вводим данные от developer.1c.ru
- Делаем снимок ВМ средствами VirtualBox, чтобы в случае возникновения проблем далее можно было откатиться на эту точку
Установка и настройка PostgreSQL
- Через SSH-клиент запускаем установку сервера
sudo wget https://repo.postgrespro.ru/1c-14/keys/pgpro-repo-add.sh sudo sh pgpro-repo-add.sh sudo yum install postgrespro-1c-14
- Устанавливаем пароль для пользователя postgres
sudo passwd postgres
. Запомните или запишите пароль, он потребуется на следующих шагах. - Переходим под пользователя postgres
su - postgres
- Запускаем Postgre
psql
- Создаем пользователя для платформы 1С:Предприятие. В тексте скрипта замените password на ваш пароль, который надо записать или запомнить. Далее он будет использоваться при создании информационных баз.
create user pg1cv8 with superuser; alter user pg1cv8 password 'password';
Создание информационной базы и активация лицензии на клиенте
- Пересоздаем локальный кластер (возможно ошибка или нужно устанавливать имя хоста раньше)
- Запускаем консоль управления кластером
- Удаляем локальный кластер
- Создаем кластер с именем "Локальный кластер", комьютером - ip-адрес ВМ, Портом - 1541
- На хост-машине запускаем консоль управления кластером и создаем информационную базу:
- Имя: demo
- Сервер баз данных: localhost
- Тип СУБД: PostgreSQL
- База данных: demo
- Пользователь сервера БД: pg1cv8
- Пароль пользователя БД: [Ваш пароль, введенный ранее]
- Создать базу данных: Да
- Установить блокировку регламентных заданий: Да
- На хост-машине добавляем в список серверную базу, которую только что создали.
- Запускаем конфигуратор, активируем комьюнити-лицензию на хост-машине.
Включение отладки на сервере
- Открываем для редактирования параметры службы:
sudo systemctl edit srv1cv8-8.3.23.1437@default.service
- Добавляем в файл строки для включения отладки и сохраняем файл
[Service] Environment=SRV1CV8_DEBUG=-debug
- Перезапускаем службу с обновлением параметров
sudo systemctl stop srv1cv8-8.3.23.1437@default sudo systemctl daemon-reload sudo systemctl start srv1cv8-8.3.23.1437@default
- Проверяем состояние службы, в описании процесса
rphost
должны быть флаги-debug -tcp
sudo systemctl status srv1cv8-8.3.23.1437@default
- Проверяем работу отладки в конфигураторе. Если в списке предметов отладки видно серверный сеанс, но точки останова не срабатывают, то вероятнее всего подключение блокирует брадмауэр на хост машине. Для проверки можно его временно отключить. Если после этого отладка заработает, то необходимо включить обратно и настроить исключения на нужные порты и сети.
В результате у нас развернут сервер на линуксе, клиент на Windows. Машины разные, поэтому можно будет в полностью честной среде отлаживать клиент-серверное взаимодействие (у каждой машины своя файловая система). При необходимости публикации на веб-сервере на хост-машине можно поставить Apache и опубликовать базу через конфигуратор.
Дополнительные материалы:
- Стрим с разбором установки по описанному сценарию.
- Подкасты Никиты Зайцева про виртуализацию: Настольная виртуальная машина и Пример быстрого развертывания настольной виртуализации