Достаточно давно была опубликована статья о установке 1С Предприятия 8 на рабочую станцию Ubuntu. Прошло большое количество лет и то что раньше было экзотикой - постепенно становится все более и более привлекательным для организаций.
А учитывая последние события - для ряда предприятий еще и безальтернативным способом.
Что ж. В данной статье мы с нуля поставим современный дистрибутив 1С на версию Ubuntu 22.04 - это дистрибутив с долговременной поддержкой.
Сначала добавляем с список источников получения пакетов новый источник (в нем будет одна нужная библиотека):
sudo nano /etc/apt/sources.list
В конец файла добавляем:
deb http://cz.archive.ubuntu.com/ubuntu focal main universe
Запускаем получение списка новых пакетов,обновление на них и установку библиотеки:
sudo apt-get update
sudo apt-get upgrade
sudo apt install libenchant1c2a imagemagick unixodbc libgsf-1-114 ttf-mscorefonts-installer
Пакет ttf-mscorefonts-installer попросит принять лицензию — соглашаемся. Очищаем и формируем новый кеш шрифтов:
sudo fc-cache -f -v
Ставим русскую локаль:
sudo dpkg-reconfigure locales
Выбираем вдобавок к английской еще и ru_RU.UTF-8 UTF-8
Идем на сайт postgrespro https://postgrespro.ru и скачиваем 15 версию Postgresql. Прямой ссылки на сайте нет, надо оставить свой емайл и данные организации и вам на почту придет ссылка на файлик для добавления нового источника списка пакетов. Закачиваем его на наш Ubuntu сервер и запускаем:
wget https://repo.postgrespro.ru/1c-15/keys/pgpro-repo-add.sh
sh pgpro-repo-add.sh
apt-get install postgrespro-1c-15-contrib
/opt/pgpro/1c-15/bin/pg-setup service enable
/opt/pgpro/1c-15/bin/pg-setup service start
В строках 1 и 2 скачали файл добавления репозитария, 3 строка установка postgrespro, 4 и 5 строка добавление в автозапуск этого сервиса.
Давайте взглянем на статус установленного сервиса:
sudo systemctl status postgrespro-1c-15
status_postgres.png
Сервис запущен и работает.
Нам остается задать пароль для нашего рута postgres от имени которого мы и будем создавать и подключать базы на “Сервере 1С” (вместо слова в кавычках password введите свой пароль):
sudo -u postgres /opt/pgpro/1c-15/bin/psql
ALTER USER postgres WITH PASSWORD 'password';
\q
Обратите внимание на последнюю строку — это мы выходим из psql.
Скачиваем с сайта 1С дистрибутив 1С - server64_8_3_24_1586.zip и сохраняем на Ubuntu. Распаковываем и запускаем:
unzip server64_8_3_24_1586.zip
sudo -s
./installAsRoot
В данном случае мы устанавливаем кластер серверов 1С, сервер администрирования кластера и модули расширения веб-сервера в пакетном режиме.
С версии 8.3.21 1С стал использовать подсистему systemd. В состав дистрибутива включен systemd-сценарий запуска кластера серверов и сервера администрирования (ras) и их конфигурационные файлы. Он находится в папке с платформой – /opt/1cv8/x86_64/номер платформы.
Ниже мы включаем сервис 1С, ставим его в автозагрузку и проверяем статус:
systemctl link /opt/1cv8/x86_64/8.3.24.1586/srv1cv8-8.3.24.1586\@.service
sudo systemctl start srv1cv8-8.3.24.1586@default.service
sudo systemctl enable srv1cv8-8.3.24.1586@default.service
sudo systemctl status srv1cv8-8.3.24.1586@default.service
Устанавливаем Apache2:
apt install apache2
sudo systemctl status apache2
Запускаем кластер управления:
/opt/1cv8/x86_64/8.3.24.1586/ras --daemon cluster
Получаем ИД кластера:
/opt/1cv8/x86_64/8.3.24.1586/rac cluster list
Создаем администратора кластера с ранее полученным ИД (внимание! Включайте мозги — вместо слова login и password добавляете свой логин и пароль):
/opt/1cv8/x86_64/8.3.24.1586/rac cluster admin --cluster=15d8a8bc-1aba-4031-9429-389b92a5491d register --name=login --pwd=password —auth=pwd
Создаем саму базу с названием unf (опять внимание — в конце выполнения этой команды вы получите ИД базы:
sudo /opt/1cv8/x86_64/8.3.24.1586/rac infobase create --cluster=15d8a8bc-1aba-4031-9429-389b92a5491d --cluster-user=login --cluster-pwd=password --create-database --name= unf --descr=mybase --dbms=PostgreSQL --db-server=localhost --db-name= unf --locale=ru --db-user=postgres --db-pwd=password --license-distribution=allow —scheduled-jobs-deny=off
Обращаем внимание на 2 параметра: --license-distribution=allow (это значит мы будем получать лицензии) и --scheduled-jobs-deny=off (это значит включаем запуск регламентных заданий на вновь создаваемой базе).
Однако сама по себе создаваемая база будет пустой — значит надо в нее закачать dt с полученной вами у кого нибудь базой:
sudo /opt/1cv8/x86_64/8.3.24.1586/ibcmd infobase restore --db-server=localhost --dbms=PostgreSQL --db-name=unf --db-user=postgres --db-pwd=password "/home/ubuntu/unf.dt"
Теперь надо, чтобы пользователи могли подключаться по тонкому клиенту или броузеру к базе.
Создаем пустую папку в которой будут настройки:
sudo mkdir -p /var/www/1c/unf
Создаем пустой файлик с настройками:
sudo touch /etc/apache2/conf-available/unf.conf
переходим в каталог 1С:
cd /opt/1cv8/x86_64/8.3.24.1586
запускаем утилиту генерации настроек подключения к 1С через apache2:
sudo ./webinst -apache24 -wsdir unf -dir '/var/www/1c/unf' -connstr 'Srvr="localhost";Ref="unf";' -confPath /etc/apache2/conf-available/unf.conf
Говорим apache2 подхватить настройки:
sudo a2enconf unf
Перезапускаем apache2:
sudo systemctl restart apache2
На этом этапе вы вполне можете открыть вашу базу через незащищенное соединение. Например если у вас IP 31.12.133.41 то строка доступа к базе:
http:// 31.12.133.41/unf. Однако в целях безопасности крайне желательно получить какой нибудь домен, получить на него сертификат, закрыть порт 80 и открыть 443 и входить в базу по этому домену. Например у вас есть домен https://test.ru. У вашего провайдера в настройках DNS записей устанавливаете запись А вашего домен (https://test.ru) на ваш IP 31.12.133.41
И подключаетесь к базе по адресу:
https://test.ru/unf
Установка сертификатов SSL для доступа к базе через защищенное соединение:
sudo apt install snapd
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --apache
Эта утилита задаст ряд вопросов самыми главными из которых будут емайл и домен доступа.
После этого перезагружаем apache2:
sudo systemctl restart apache2
Закрываем порт 80 и открываем 443
sudo ufw deny 80/tcp
sudo ufw allow 443/tcp
Теперь вместо небезопасного протокола http:// 31.12.133.41/unf вы можете подключаться по https://test.ru/unf.
Ну вот и все (хотя на самом деле нет — надо настроить систему бэкапов, реиндексации баз, запустить vacuumdb у postgres, но это все другая история).
Обращайтесь к нам если вам нужно настроить 1С на Linux. Телефон +7 (495) 109-04-3
Ваш комментарий