В сфере IT существует несколько вполне законных способов сэкономить. Можно перевести предприятие на Linux, можно использовать Zentyal вместо службы Active Directory, а еще можно настроить под Linux сервер 1С, переведя работу бухгалтерии на бесплатную платформу. Чем мы сегодня и займемся, попутно сэкономив еще и на сервере терминалов.
УСТАНОВКА И НАСТРОЙКА
Серверная версия 1С для Linux допускает до 14 технологических клиентских подключений даже без лицензии, но это не означает, что лицензию не нужно покупать. Можно установить программу, протестировать и оценить ее возможности. Дистрибутив доступен на портале 1С при наличии подписки ИТС, если хорошенько поискать, в интернете можно найти и другие источники загрузки.
Для начала работы с 1С в Linux (я использую CentOS 7 и 1С вер‐ сии 8.3.2033) нужно установить PostgreSQL. Но перед этим придется подклю‐ чить репозитории PostgreSQL для 1С:
1 |
sudo rpm ‐ivh http://1c.postgrespro.ru/keys/postgr espro‐1c‐centos94.noarch.rpm |
Далее переходим непосредственно к установке PostgreSQL Pro:
1 |
$ sudo yum update && sudo yum install postgresql‐pro‐1c‐9.5 |
Для удобства администрирования базы можно установить в своей локальной системе pgAdmin, версии которого имеются не только для Linux, но также для Windows и macOS. А можно использовать консоль — su postgres. Затем под учеткой пользователя postgres инициализируем служебные базы данных с русской локализацией:
1 |
$ initdb ‐‐locale=ru_RU.UTF‐8 |
Теперь запускаем сервер СУБД PostgreSQL:
1 2 3 |
systemctl enable postgresql‐9.5 systemctl start postgresql‐9.5 systemctl status postgresql‐9.5 |
Переходим к 1С. Установочный пакет сервера 1С для Linux представляет собой архив с именем rpm64.tar.gz. Распакуй хранящиеся внутри файлы расширением .rpm в какую‐нибудь папку, перейди в нее и запусти установку программы следующей командой:
1 |
$ yum localinstall *.rpm |
Если ты не используешь дополнения 1С, расширения, какие‐либо нестандартные конфигурации, то одним сервером на Linux вполне можно обойтись. Конфигурации 1С, отличающиеся от типовых, а также некоторые дополнительные модули и библиотеки 1С используют для обмена данными между базами COM‐объекты. Если на твоем предприятии используется именно такая конфигурация (например, расширение или отдельная база для обмена с «1С Мобильная торговля» либо аналогичными конфигура‐ циями), без установки 1С‐сервера на Windows не обойтись. Такой сервер использует СУБД MSSQL, которая, в свою очередь, может крутиться на любом сервере, в том числе на Linux.
Процесс установки 1С на Windows не представляет ни малейших сложностей, важно лишь при выборе устанавливаемых компонентов выбрать
Средства администрирования сервера, 1С‐сервер (если ставим 1С‐серверсразу на Windows) и сбросить флажок установки драйвера защиты. Все остальные параметры можно оставить по умолчанию.
Подведем промежуточный итог: у нас установлены серверы 1С под Win‐ dows и CentOS и сервер СУБД PostgreSQL под CentOS 7. Настало время создать новую базу данных в консоли управления 1С.
Внимательно прописываем имя базы (оно будет отображаться в консоли управления 1С‐сервера), описание базы, в поле Сервер баз данных можно вбить IP‐адрес СУБД сервера, если это не одна и та же машина, или имя сер‐ вера (в этом случае не забудь предварительно настроить DNS или файл hosts). В поле База данных вводим имя базы данных для PostgreSQL.
Пользователь сервера БД для PostgreSQL — это postgres, а пароль этойучетки мы задавали при установке. В Microsoft SQL пользователя зовут sa, его пароль также задается в процессе установки сервера. Далее опци‐ онально выбираем раздачу лицензий сервером 1С. Устанавливаем флажок Создать базу данных в случае ее отсутствия и нажимаем ОК. Аналогичным образом создаем необходимое количество баз.
Теперь нужно позаботиться о резервных копиях. Существует несколько путей решения этой задачи. Можно бекапить сервер целиком (это особенно удобно, если сервер развернут на виртуальной машине), а можно бекапить только базы. Мы будем сохранять в резервной копии и то и другое! Бекап сервера целиком мы рассмотрим в самом конце, когда все настроим, а сейчас займемся бекапом баз PostgreSQL.
БЕКАПИМ БАЗЫ POSTGRESQL
Для организации резервного копирования БД существует множество раз‐ личных программ. Но, как мне кажется, для такой простой задачи совсем необязательно ставить какое‐то дополнительное ПО, тем более в Postgres есть специальная утилита pg_dump. Поэтому мы напишем небольшой скрипт, который будет бекапить базу и сохранять ее туда, куда нам нужно.
Предварительно подготовим место, куда будем складывать резервные копии. Предположим, в нашей сети есть сервер samba с разграничением доступа. Создадим на этом сервере пользователя backup с паролем password. Теперь создадим серверную папку /home/samba/backup/pgsql/, в которую разрешим запись только этому пользователю.
Следующим шагом настроим в CentOS с сервером 1С поддержку samba:
1 |
$ sudo yum install cifs‐utils |
Пускай временным каталогом у нас будет /var/backup. В таком случае скрипт для резервного копирования баз данных будет выглядеть следующим образом:
1 |
#!/bin/bash timed=$(date +%Y‐%m‐%d‐%k‐%M) # |
определяем время начала скрипта для дальнейшей подстановки в имя дампа mountpoint=$(df ‐h | grep backup) # определяем, подключена ли шара
1 |
t="base1_$timed.sql.tgz" h="base2_$timed.sql.tg" r="base3_$timed.sql.tgz" a="base4_$timed.sql.tgz" # |
задаем переменные для имен файлов созданных дампов (в принципе, этого можно не делать, а подставить выражение base1_$time.sql.tgz непосредственно в pg_dump).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
if [ ‐n "$mountpoint" ]; then # проверяем условие — подключена ли шара echo "Снимаю дамп баз данных" sudo ‐u postgres pg_dump ‐Fc ‐U postgres ‐v ‐b ‐f /var/backup/$t base1 sudo ‐u postgres pg_dump ‐Fc ‐U postgres ‐v ‐b ‐f /var/backup/$h base2 sudo ‐u postgres pg_dump ‐Fc ‐U postgres ‐v ‐b ‐f /var/backup/$r base3 sudo ‐u postgres pg_dump ‐Fc ‐U postgres ‐v ‐b ‐f /var/backup/$a base4 если шара подключена, снимаем резервные копии echo "Копирую резервные копии в хранилище бекапов" sudo cp /var/backup/{$t,$h,$r,$a} /mnt/backpgsql/ # |
копируем резервные копии на удаленную шару (для особо параноидальных админов можно делать это через SSH, только заранее необходимо сгенерировать и подсунуть ключи).
1 2 3 4 5 6 7 |
echo "Удаляю временные файлы" sudo rm ‐r /var/backup/* # удаляем резервные копии из нашего временного каталога exit else |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
echo "Подключаю хранилище бекапов" # если шара не подключена, то сначала подключим ее, а далее все то же самое, что и в первой части скрипта sudo mount ‐t cifs //192.168.1.1/backup/pgsql/ /mnt/backpgsql/ ‐o username=backup,password=password,iocharset=utf8,file_mode=0777, dir_mode=0777 echo "Снимаю дамп баз данных" sudo ‐u postgres pg_dump ‐Fc ‐U postgres ‐v ‐b ‐f /var/backup/$t torg sudo ‐u postgres pg_dump ‐Fc ‐U postgres ‐v ‐b ‐f /var/backup/$h him sudo ‐u postgres pg_dump ‐Fc ‐U postgres ‐v ‐b ‐f /var/backup/$r roznitsya sudo ‐u postgres pg_dump ‐Fc ‐U postgres ‐v ‐b ‐f /var/backup/$a accounting echo "Копирую резервные копии в хранилище бекапов" sudo cp /var/backup/{$t,$h,$r,$a} /mnt/backpgsql/ echo "Удаляю временные файлы" sudo rm ‐r /var/backup/* exit fi |
Сохраняем скрипт в файл /opt/backup.sh. Делаем файл исполняемым командой sudo chmod +x /opt/backup.sh и добавляем в crontab такую строку:
0 23 * * * /opt/backup.sh
Запускать скрипт мы будем каждый день в 23:00. Что ж, с PostgreSQL закон‐ чили. Идем дальше.
HASP
Для нормальной работы сервера 1С необходимо установить в системе менеджер лицензий HASP LM. В CentOS это делается при помощи двух команд:
-
1wget http://centos.name/file/hasplm_install.sh
1 |
-
1sh hasplm_install.sh
В моем случае на физическом хосте установлена ОС Ubuntu 16.04, внутри которой крутятся две виртуальные машины с CentOS. На одной работают серверы 1C и СУБД, на второй — Windows Server 2008. Можно пробросить USB‐ключ 1С прямо в виртуалку (виртуализация KVM, libvirt‐bin), а можно установить HASP LM в хостовую систему Ubuntu, что мы и сделаем.
Заходим по адресу http://ftp.etersoft.ru/pub/Etersoft/HASP/last/ Ubuntu/ и выбираем нужную версию Ubuntu. Внутри выбранной папки обна‐ ружится два файла, выкачиваем оба с помощью wget:
- wget haspd‐modules_7.40‐eter10ubuntu_i386.deb
- wget haspd_7.40‐eter10ubuntu_i386.deb
Далее командой dpkg ‐i /haspd* устанавливаем оба пакета. Если возникают ошибки, необходимо определить зависимости:
1 |
$ sudo apt ‐f install |
Еще может потребоваться подключить архитектуру i386:
1 |
$ sudo dpkg ‐‐add‐architecture i386 |
Или установить на всякий случай следующую библиотеку::
1 |
$ sudo apt‐get install libc6:i386 |
Открыв браузер и набрав IP‐адрес сервера, на порту 1947 мы можем увидеть страницу сервиса, на которой отображаются только новые ключи. А можем и ничего не увидеть, в этом случае придется пробрасывать порты через SSH:
1 |
$ ssh admin@192.168.1.1 ‐L 8888:localhost:1947 ‐N |
Где:
- ssh — установка соединения SSH;
- admin — логин на сервере, откуда пробрасывается порт;
- 168.1.1 — IP‐адрес сервера, откуда пробрасывается порт;
- L — этот ключ говорит о том, что нужно с удаленной машины пробросить порт на локальную (ключ R, наоборот, пробрасывает локальный порт на удаленную машину);
- localhost — указывает на то, что нам нужно пробросить порт самого сервера;
- 1947 — пробрасываемый порт, к которому нужно получить доступ;
- N — этот ключ блокирует вывод в консоль терминала, чтобы не устанав‐ ливать полноценную SSH‐сессию.
Теперь можно ввести в браузере адрес http://localhost:8888, после чего ты наконец получишь доступ к веб‐интерфейсу сервиса HASP. Разреши в нас‐ тройках вход в этот интерфейс по сети и сохрани эти настройки. Теперь можно выключить проброс порта и заходить на страницу HASP просто по IP‐адре‐ су с указанием порта 1947.
Обращаю твое внимание на то, что здесь будут отображаться только новые ключи Safenet, и управлять доступом можно только для этих новых ключей. Управление старыми ключами выполняется по старинке. Теперь добавим в файл /etc/hasplm/hasplm.ini следующие строки:
[NHS_IP]
NHS_IP_LIMIT = 192.168.1.0/24
Этот параметр не позволит клиентам из других сетей получать лицензии. Проверить, видит ли система ключ, можно при помощи команды lsusb. Если все хорошо, ты увидишь примерно такое сообщение:
Bus 001 Device 003: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
На этом этапе можно запускать стандартные конфигурации 1С и тестировать их. Важно лишь не забывать о нескольких важных моментах: PostgreSQL не умеет работать с COM, а линуксовый 1С‐сервер не умеет работать с MSSQL, это ограничение заложено разработчиком.
Чтобы не плодить сервера СУБД, для 1С‐сервера под Windows в CentOS можно установить Microsoft SQL Server Express: эта СУБД полностью бесплат‐ ная и для нашей небольшой базы подходит как нельзя кстати. Хороший ману‐ ал по SQL Server Express можно найти на сайте самой корпорации Microsoft, правда представлен он на английском языке.
УСТАНАВЛИВАЕМ SQL SERVER EXPRESS
Чтобы сервер 1С под Windows мог работать с базами данных на Linux‐сер‐ вере, нужно проделать следующие несложные манипуляции. Подключаем репозиторий:sudo curl ‐o /etc/yum.repos.d/mssql‐server.repo https://packages. microsoft.com/config/rhel/7/mssql‐server‐2017.repo
Устанавливаем MSSQL‐сервер:
1 |
$ sudo yum install ‐y mssql‐server |
Теперь нам необходимо сконфигурировать только что установленный
MSSQL‐сервер:
1 |
$ sudo /opt/mssql/bin/mssql‐conf setup |
Отвечаем на вопросы системы. Нас спросят о том, какая сборка использует‐ ся на нашем сервере и какую версию мы хотим установить (выбираем MSSQL Express — так как он бесплатен и отвечает нашим требованиям). После этого можно установить в Windows программу Microsoft SQL Server Management Studio и подключиться к серверу по его IP‐адресу с использованием логина sa и пароля, указанного в процессе создания базы. Аналогично тому, как мы делали это в PostgreSQL, в консоли Windows‐сервера 1С создаем и подключаем базу MSSQL.
В результате мы имеем связку из двух серверов. На одном у нас установлена CentOS с сервером 1С и двумя СУБД — PostgreSQL и MSSQL. Вто‐ рой 1С‐сервер работает на Windows, нужен он только для одной базы MSSQL, поскольку в PostgreSQL не поддерживается COM.
Осталось дело за малым. Раз уж мы потратили деньги на покупку Windows Server, сервер терминалов сделаем на Linux.
СЕРВЕР ТЕРМИНАЛОВ ДОМЕННЫХ ПОЛЬЗОВАТЕЛЕЙ XRDP
Для установки XRDP‐сервера у нас, как это обычно бывает в Linux, есть несколько путей. В большинстве дистрибутивов Linux его можно установить пакетом, например в Debian/Ubuntu это делается следующей командой:
1 |
$ sudo apt install xrdp |
А можно пойти по пути сборки пакета или установки из скрипта:
-
1wget http://adminguide.ru/wp‐content/uploads/2018/11/ install‐xrdp‐2.2.zip
1 |
-
1unzip ./install‐xrdp‐2.2.zip
1 |
-
1chmod +x install‐xrdp‐2.2.sh && ./install‐xrdp‐2.2.sh
Если сводить баланс в 1С ты планируешь под веселую музычку, для чего потребуется использование колонок или наушников с удаленной системы, нужно установить пакет xrdp‐pulseaudio‐installer.
В процессе установки все необходимые пароли будут запрошены автоматически. После установки пробуем подключиться к серверу любым удобным RDP‐клиентом:
Перед подключением необходимо убедиться, что выбрана нужная раскладка клавиатуры для ввода пароля в RDP‐сессию, поскольку на этапе локскрина переключить язык не удастся.
Никаких лицензий в данном случае не требуется! Теперь запускаем 1С и спо‐ койно работаем. По большому счету интерфейс 1С в Linux ничем не отличается от 1C в Windows.
ИТОГИ
Для небольшого предприятия установка 1С на Linux‐сервер позволит оптимизировать затраты, поскольку версия программы для Linux по своим функциям позволяет решать большинство типичных бухгалтерских задач. Если принципиально необходимо реализовать обмен данными между базами использованием COM‐объектов, без 1С‐сервера под виндой обойтись не удастся. В этом случае СУБД MSSQL можно развернуть на Linux‐сервере. Ну а сэкономленные средства тратим на пиво развитие IT‐инфраструктуры или закупку нового оборудования, которого, как известно, никогда не бывает достаточно.