Установка сервера 1С на Linux с сервером СУБД PostgreSQL выгодна по нескольким причинам. Собственник бизнеса может получить существенную экономию за счёт использования свободно распространяемого ПО. Для сервера 1С можно использовать практически любое облако, что позволит экономить на приобретении оборудования, соединить географически разбросанные точки, использовать недорогие устройства для подключения в режиме терминального доступа, например, с использованием стандартного RDP-клиента Windows. Возможна установка на отдельно расположенном в уголке системном блоке, без подключённого монитора, дома или в офисе.
В этой статье я расскажу как установить 1С сервер на Ubuntu 20.04 с Postgres Pro Std 13, а также web-сервер на Apache2 и опубликовать туда созданную базу.
Установка сервера 1С на Ubuntu 20.04
Я принял решение развернуть тестовый стенд в Hyper-V на своём ноутбуке. Использовался ноутбук с такими основными параметрами:
- Процессор: AMD Ryzen 5.
- Накопитель: SSD 256 Гб.
- ОЗУ: 6 Гб.
- ОС: Windows 10 Professional.
Виртуальный контейнер Hyper-V:
- 1 виртуальный процессор.
- 3 Гб динамического ОЗУ.
- Виртуальный жёсткий диск на 20 Гб.
- DVD-привод с ISO образом Ubuntu Desktop 20.04.2 (64-bit).
Ubuntu Desktop разрядностью 64 bit я выбрал сознательно. Во-первых, Postgres Pro бывает только 64 bit. Во-вторых, мне нужно протестировать не только установку сервера 1С, но ещё и установку клиента 1С:Предприятие для Linux, чтобы подключиться из этой ОС к своему рабочему серверу, и наоборот. Установку и настройку Ubuntu 20.04, а также установку сервера XRDP оставлю вне рамок этой статьи.
1. Загрузка необходимых пакетов
В первую очередь я авторизовался на сайте users.v8.1c.ru для скачивания дистрибутивов платформы.
На снимке экрана я подчеркнул пакеты, которые скачал:
Затем мне необходимо скачать драйвер ключа защиты HASP для Linux, чтобы получать лицензии 1С по сети и с USB-ключа. У меня не заработала версия 7.90, и я пошёл по пути наименьшего сопротивления, скачав на тестовый стенд HASPD 7.40 (описание процесса приведу ниже). В целях корректного выполнения задачи по установке самого свежего ПО приведу ссылку на скачивание HASPD 7.90 и рекомендую ставить именно его.
2. Получение инструкции по установке Postgresql Pro
Далее произвожу подготовку к установке СУБД. Я уже регистрировался на сайте производителя, поэтому захожу в личный кабинет, указываю операционную систему и дистрибутив. Соглашаюсь с лицензионным соглашением и получаю инструкцию для установки Postgres Pro Std в Ubuntu 20.04. Вы можете использовать её для установки этой программы.
Обратите внимание, что для использования любой версии PostgreSQL Pro необходимо покупать лицензию, но программу можно получить бесплатно для тестирования, изучения и разработки.
3. Обновление Ubuntu и установка пакетов
Все действия я буду производить из графического режима Ubuntu Desktop. Однако всё, что я делаю, относится в равной степени и к Ubuntu Server 20 64-bit. В графическом режиме Ubuntu есть утилита terminal, в которой и будут производиться все манипуляции. Для удалённого подключения к Linux в консольном режиме существует большое количество приложений, использующих SSH. Обычно я использую Putty RUS.
Для настройки репозитория Postgres Pro Std потребуется curl. И поставлю свой любимый файловый менеджер mc. До начала обновления пакетов Ubuntu в открытом терминале пишу:
sudo apt -y install mc curl
Пробую поставить пакет libpq, входящий в дистрибутив PostgreSQL, с сайта 1С и получаю ошибку о несоответствии версии библиотеки libssl.so. 1.0.0, а у меня развёрнута версия 1.0.3. Это свидетельствует от том, что в Ubuntu 20.04 более новые библиотеки, чем используются дистрибутивами пакетов.
Поэтому необходимо ещё добавить репозитории для установки всех пакетов, которые устарели в Ubuntu 20.04, однако нужны для установки HASPD и 1С. Поэтому выполняю команду:
echo ‘deb http://ru.archive.ubuntu.com/ubuntu/ bionic main universe’ >> /etc/apt/sources.list
sudo apt update
Соглашаюсь со всем, что просит apt (можно нажимать Enter).
После завершения перезагрузите систему, но перед этим убедитесь что дистрибутивы 1C и PostgreSQL Pro успешно загружены. После этого можно двигаться дальше. Ставлю необходимые для функционирования 1С пакеты:
apt install libwebkitgtk-3.0-0 libjavascriptcoregtk-3.0-0 libmagickwand-6.q16-6 libgsf-1-114 libkrb5-3 libgssapi-krb5-2 ttf-mscorefonts-installer
Запрещаю системе их обновлять:
apt-mark hold libwebkitgtk-3.0-0 libjavascriptcoregtk-3.0-0 libmagickwand-6.q16-6 libgsf-1-114 libkrb5-3 libgssapi-krb5-2 ttf-mscorefonts-installer
Ставлю необходимые пакеты для установки драйвера HASP:
apt install dkms flex bison
4. Добавление репозитория PostgreSQL Pro
Для добавления репозитория PostgreSQL Pro выполните такие команды:
curl -o apt-repo-add.sh https://repo.postgrespro.ru/pgpro-13/keys/apt-repo-add.sh
sh apt-repo-add.sh
5. Установка и запуск HASPD
Установка HASPD в Ubuntu 20.04 довольно проблематична, в версии 7.90 не захотел устанавливаться aksusbd — модуль, который работает с USB-устройствами — ключами HASP, поэтому служба не стартовала. Скачал модули для Ubuntu 15.04 (64-bit) и для HASPD версии 7.40.
Менеджер пакетов apt хорош тем, что если в зависимостях пакета есть другие пакеты, то в 90 из 100% случаев он найдёт и установит самые подходящие. Поэтому разворачиваю и копирую оба файла с расширением .deb службы haspd в директорию /usr/src/haspd7_40/:
sudo mkdir /usr/src/haspd7_40
sudo cp hasp* /usr/src/haspd7_40
sudo cd /usr/src/haspd7_40
sudo apt -y install ./*.deb
Результат установки должен быть таким, как на приведённом выше скриншоте. Чтобы автоматически при загрузке ОС запускалась служба в Ubuntu, выполняю:
systemctl enable haspd
И перезапускаю службу:
systemctl restart haspd
Проверить состояние службы можно так:
systemctl status haspd
6. Установка Postgres Pro Std
Вначале необходимо добавить поддержку русского языка в систему. Ставлю локализацию для нормального функционирования Postgres Pro Std:
sudo locale-gen en_US.UTF-8
sudo locale-gen ru_RU.UTF-8
sudo update-locale LANG=ru_RU.UTF8
sudo dpkg-reconfigure locales
Для установки самой программы выполните:
sudo apt -y install postgrespro-std-13 postgrespro-std-13-contrib
Останавливаю службу:
systemctl stop postgrespro-std-13
Удаляю автоматически созданную базу, так как она не подходит для 1С:
rm -r /var/lib/pgpro/std-13/data/*
Из директории, куда установился Postgres Pro Std, запускаю инициализацию базы для 1С:
/opt/pgpro/std-13/bin/pg-setup initdb --tune=1c
Затем стандартные действия по настройке автозапуска, старта службы и проверке статуса. Должно быть так, как приведено ниже:
systemctl enable postgrespro-std-13
systemctl start postgrespro-std-13
systemctl status postgrespro-std-13
7. Настройка СУБД Postgres Pro Std
Заходим из консоли под пользователем postgres. Таким способом мы получим доступ к psql без указания пароля и сможем настроить себе доступы:
su postgres
Запускаем консоль СУБД:
psql
Я не стал возиться с созданием пользователя, поэтому применяю суперпользователя postgres. Задаю пароль secret1c:
Вывод должен быть ОК. Затем выходим из консоли:
И возвращаемся в терминал из окружения postgres:
8. Установка сервера 1С
Дальше надо разобраться как установить 1C в Ubuntu 20.04. Распаковываю дистрибутивы 1С и раскладываю их по папочкам в /usr/src/1cv83_18_1334. Папка cli — клиентская часть 1с, serv — серверная часть, thincli — тонкий клиент (про него напишу отдельно).
Первым ставлю сервер 1С:
cd /usr/src/1cv83_18_1334/serv
sudo apt install ./*.deb
Лучше каждый файл ставить по отдельности, так как существует чёткая последовательность: common, crs, server, ws.
Потому что в результате всё может не установиться, хотя у меня получилось.
9. Настройка автозагрузки сервера 1С
По непонятной причине, в последние полгода при установке 1С сервера не создаётся ссылка для службы. Поэтому создаю её самостоятельно:
ln -s /opt/1cv8/x86_64/8.3.18.1334/srv1cv83 /etc/init.d/srv1cv83
После этого можно настраивать автозапуск службы:
systemctl enable srv1cv83
systemctl restart srv1cv83
systemctl status srv1cv83
10. Установка толстого и тонкого клиентов 1С
Сначала перехожу в директорию /usr/src/1cv83_18_1334/cli
cd /usr/src/1cv83_18_1334/cli
Затем для установки толстого клиента выполняю:
sudo apt install ./1c-enterprice-8.3.18.1334-client*.deb
А для установки тонкого клиента:
sudo apt install ./1c-enterprice-8.3.18.1334-thin-client*.deb
Обратите внимание, что при установке тонкого клиента (thin-client) сервер 1С удаляется. Я тонкого клиента ставить на сервер 1С не буду.
11. Особенности размещения файла настроек HASP для 1С в Linux
Первая заключается в том, что если потребуется получать лицензию от ключа на другой машине, то необходим файл nethasp.ini. Но если в Windows его достаточно положить в установочную директорию 1С, подкаталог conf, то в Linux его нужно разместить ниже по дереву: в директорию релиза. Я для этого создал символическую ссылку на каталог в /opt/1cv8/conf:
sudo ln -s /opt/1cv8/conf/ /opt/1cv8/x86_64/8.3.18.1334/conf/
Теперь 1С будет видеть мои сетевые ключи.
12. Проверка соединения с базой данных
Для проверки работы толстого клиента, пробую подключится ко внешнему 1C серверу с помощью 1С:Документооборот:
Заработал, и довольно быстро для толстого клиента и виртуальной машины. С кодировками русского языка проблем не возникает.
13. Создание базы данных на сервере 1С
Создаю пустую базу для разработки на сервере СУБД. Указываю наименование информационной базы и её расположение. В данном примере будет использоваться база данных с именем test.
14. Настройки для подключения к серверу 1С и СУБД
Когда вы подключаетесь к серверу необходимо указывать либо доменное имя + имя, либо прописывать IP + имя сервера 1С Ubuntu в файле /etc/hosts вашей машины. Postgres Pro Std относительно сервера находится локально, поэтому указываем адрес 127.0.0.1. Защищённое соединение я не настраивал по тем же соображениям: сервер СУБД находится локально. Указываю логин суперпользователя postgres и пароль secret1c, которые установил при начальной настройке СУБД.
Теперь можно экспериментировать с пустой базой test.
15. Запуск базы данных на сервере 1С в разных режимах
Запускаю в режиме конфигуратора с правами суперпользователя root:
sudo /opt/1cv8/x86_64/8.3.18.1334/1cv8
16. Публикация конфигурации 1С на web-сервере
Команда для установки web-севера Apache 2 выглядит вот так:
sudo apt -y install apache2
После того как конфигуратор запустился от суперпользователя, можно публиковать базу на web-сервере. Для этого в режиме конфигуратора нужно открыть меню Администрирование и выбрать пункт Публикация на веб-сервере.
Указываю имя БД на web-сервере, в моём случае test. Выбираю в строке Веб-сервер значение Apache 2.4. Указываю домашний каталог для веб-приложения 1С. В моём случае /home/user/testDB/web. Нажимаю кнопку Опубликовать, а затем соглашаюсь перезапустить Apache2.
17. Проверка запуска базы данных 1С в режиме веб-приложения
Для проверки можно с самого сервера перейти по адресу http://127.0.0.1/test. Или зайти с любого другого сетевого устройства (планшет, смартфон, компьютер) по сетевому адресу или имени сервера 1С:
Выводы
Теперь вы знаете как выполняется установка 1C Ubuntu 20.04. При установке предварительно закачанных пакетов сервера 1С требуется минимум усилий и внимания к деталям, что позволяет автоматизировать установку скриптом на bash.
В современной Ubuntu 64-bit при установке приходится понижать версии различных пакетов, в том числе ответственных за шифрование и обеспечение защиты системы в целом. Для серверов, так или иначе подключённых в общий доступ, необходимо настраивать файрвол (брандмауэр), применять дополнительные пакеты для защиты, например, от перебора паролей fail2ban или использовать сторонние сервисы, созданные для предотвращения автоматизированных или направленных атак.
В целом производительность ОС Ubuntu 20.04 (64-bit) позволяет использовать более «тяжёлые» базы данных, использовать кластер серверов 1С и СУБД, подключать большое количество пользователей как в режиме тонкого клиента 1С, так и в режиме RDP (удалённых рабочих столов) с гарантированно минимальными затратами на аппаратную часть сервера и лицензирование необходимого ПО.
С точки зрения конфигурации сервера на 10 пользователей, моя любимая система выглядит так:
Процессор AMD Ryzen 7 PRO на материнской плате MSI B450M MORTAR MAX, с четырьмя модулями оперативной памяти, видеокартой AMD Radeon R9 Gamer Series 8Gb, с двумя хранилищами на 1000 Gb SSD M.2 (накопитель Kingston KC2000). Такой системный блок, в сборе с корпусом и блоком питания, сегодня может стоить приблизительно 85 000 рублей. В связи с тем, что пропускная способность накопителей и оперативной памяти заявлены приблизительно равными, обмен между хранилищем данных и ОЗУ будет происходить примерно на одинаковой скорости. Поэтому в такой конфигурации не потребуется проводить тонкий тюнинг сервера 1С, СУБД.