Установка 1С на Linux

В последнее время наблюдается всё большее упрощение процесса установки 1С под linux. Тут и готовый пакет СУБД от postgrespro.ru (конечно жи, можно использовать и др. СУБД), и единый установочный файл от фирмы 1С.

Всё что ниже, это моя таблетка для памяти, описывающая основные шаги, необходимые для использования 1С под Linux Ubuntu Server

Для всех серверов

Подготовительная команда для всех серверов. Вспомогательные программы, а так же проприетарные шрифты от Microsoft. Их нельзя включать в дистрибутивы, но можно бесплатно скачивать, и устанавливать. Для ubuntu можно установить из репозитория

sudo apt update && sudo apt upgrade -y && sudo apt install sshfs mc tmux htop iotop tree ttf-mscorefonts-installer -y

1C

Последние версии 1С полностью делают все сами, и поставляются в run файле, который просто достаточно сделать исполняемым (chmod +x setup-full-8.3.21.1302-x86_64.run) и выполнить с полными правами (sudo ./setup-full-8.3.21.1302-x86_64.run)

С более ранними релизами несколько по сложнее. Там скачивается сразу несколько файлов, по именам которых нужно понимать, для чего они предназначены. Формат такой:

<префикс>-<тип>[-nls]_<версия>_<архитектура>.<расширение>

Значение имеет тип тип. Могут быть следующие значения

  • common — общие компоненты, от него зависят все остальные компоненты
  • server — компоненты для работы сервера 1С
  • client — клиент. Толстый, тонкий
  • ws — расширение для подключения к web-серверу
  • crs — хранилище конфигураций

Наличие строки nls говорит о том, что в установочном файле присутствуют дополнительные языковые пакеты, помимо русского и ангилйского. Остальные значения очевидны

Итак, для того, что бы работал сервер, нужно сначала запустить установку common — файла, затем server.

Общий вид команды установки следующий (можно использовать маску файла)

sudo dpkg -i <file_name>

Для запуска сервера его нужно активировать. Для этого под полными правами выполняем команду

systemctl enable srv1cv83.service

Запускаем

systemctl start srv1cv83.service

Проверяем статус

systemctl status srv1cv83.service

Если планируется подключение в пользовательском режиме, то после предыдущих двух ставится пакет тип client.

Установка клиента у меня прервалась с ошибкой

1c-enterprise83-client зависит от libwebkitgtk-3.0-0 (>= 1.2.5), однако:                                                  
  Пакет libwebkitgtk-3.0-0 не установлен.

Решил следующим образом:

  • в файл /etc/apt/sources.list добавил строку deb http://kz.archive.ubuntu.com/ubuntu bionic main universe, запустил sudo apt update.
  • в процессе обновления получил ошибку
Пол:5 http://kz.archive.ubuntu.com/ubuntu bionic InRelease [242 kB]                                                   
Ошб:5 http://kz.archive.ubuntu.com/ubuntu bionic InRelease
  Следующие подписи не могут быть проверены, так как недоступен открытый ключ: NO_PUBKEY 3B4FE6ACC0B21F32
  • Получил соответствующий ключ командой sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32 (идентификатор взял из предыдущей сообщения ошибки). Получил вывод
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).          
Executing: /tmp/apt-key-gpghome.hBUCUkEv2H/gpg.1.sh --recv-keys --keyserver keyserver.ubuntu.com 3B4FE6ACC0B21F32
gpg: ключ 3B4FE6ACC0B21F32: импортирован открытый ключ "Ubuntu Archive Automatic Signing Key (2012) <ftpmaster@ubuntu.com>"                                                              
gpg: Всего обработано: 1                                                                                 
gpg:               импортировано: 1                                                                                                                                                                                

Обратил внимание на deprecated Warning. т.е. нужно искать новый способ. После этого apt updateотработало без ошибок. Можно устанавливать зависимость:

sudo apt-get install -y libwebkitgtk-3.0-0

И сам deb пакет

sudo dpkg -i 1c-enterprise83-client_8.3.16-1296_amd64.deb

К 1С будем подключаться через WEB? Тогда после common и server ставим web. С crs — аналогично

Установка 1С завершена

PostgreSQL

Для работы БД 1С требуется установка linicu

apt install libicu-dev

Так же желательно проверить локаль сервера (locale -a). Изменение локали делаем через dpkg-reconfigure locales.

После установки можно изменить каталог БД. Для этого есть параметр -D у initdb

/opt/pgpro/1c-14/bin/pg-setup initdb -D /mnt/disk1/data

Дистрибутив можно запросить на сайте 1c.postgres.ru

В ответ прилетает письмо следущего вида:

Вы получили это письмо, поскольку запрашивали инструкции по установке postgreSQL для 1с на сайте 1c.postgres.ru/.

Используйте инструкции для установки postgreSQL для 1с. Обратите внимание, что команды должны выполняться от пользователя с правами суперпользователя.

wget https://repo.postgrespro.ru/pg1c-14/keys/pgpro-repo-add.sh
sh pgpro-repo-add.sh

Если наш продукт единственный Postgres на вашей машине и вы хотите
сразу получить готовую к употреблению базу:

apt-get install postgrespro-1c-14


Если у вас уже установлен другой Postgres и вы хотите чтобы он
продолжал работать параллельно (в том числе и для апгрейда с более
старой major-версии):

apt-get install postgrespro-1c-14-contrib
/opt/pgpro/1c-14/bin/pg-setup initdb
/opt/pgpro/1c-14/bin/pg-setup service enable
/opt/pgpro/1c-14/bin/pg-setup service start

Те дистрибутивы, что размещены на сайте 1С для Ubuntu требуют слишком много зависимостей. Пока не решил вопрос

Подключение к серверу

Сразу после установки можно подключится к СУБ через утилиту командной строки psql от польователя ОС postgres

sudo su postgres
psql

Если получаем ошибку вроде

psql: error: подключиться к серверу через сокет "/var/run/postgresql/.s.PGSQL.5432" не удалось: Нет такого файла или каталога
        Сервер действительно работает локально и принимает подключения через этот сокет?

то необходимо проверить значение параметра unix_socket_directories файла postgresql.conf, и передать правое значение в psql через параметр -h

# postgresql.conf
unix_socket_directories = '/tmp'
psql -h '/tmp'

Создание пользователя для 1С

Подключившись к СУБД можно создать отдельного пользователя для 1С

CREATE ROLE onec WITH
  LOGIN
  SUPERUSER
  INHERIT
  CREATEDB
  CREATEROLE
  REPLICATION
  BYPASSRLS;

тут мы создали пользователя с теми же правами что и postgres

Затем назначим ему нужный пароль:

ALTER USER onec WITH password 'password';

Параметры postgres

Прочитать можно с помощью psql То, что “подтянулось” из файлов конфигурации можно посмотреть в таблице pg_file_settings (вроде бы начиная с pg 10)

например, следующим запросом

SELECT
	sourceline, name, setting, applied
FROM pg_file_settings
WHERE sourcefile LIKE '%postgresql.conf'

Все активные параметры (как прочитанные из конф. файлов, так и установленные “по умолчанию”) можно посмотреть в таблице pg_settings.

SELECT 
	name, setting, unit, boot_val, 
	reset_val, source, sourcefile, 
	sourceline, pending_reset, context
FROM pg_settings
WHERE name='work_mem' \gx

Установить пароль дефолтного юзера postgres можно так:

ALTER USER postgres WITH PASSWORD 'some-pass'

Apache

Загрузку модуля осуществляется строкой

LoadModule _1cws_module "/opt/1cv8/x86_64/8.3.21.1302/wsap24.so"

Ее “ложу” в файл etc/apache2/mods-available/wsap24.load (для Apache 2.4)

Загрузка производится из папки etc/apache2/mods-enabled/ (в файле etc/apache2/apache2.conf стоит инклюд). Поэтому делаем симлинк на в эту папку.

Если текущая папка /etc/apache2, то софт-линк делаем командой

ln -s mods-available/wsap24.load mods-enabled/wsap24.load

Это делается для того, что бы можно было “включать/выключать” модуль, без необходимости удаления файла (просто удаляем сим-линк)

Если надо добавить новые порты для 1С, то сначала правим файл ports.conf (он тоже инклюдится в главный файл). Добавляем туда строку Listen 8080

Описание публикаций 1С размещаю по отдельным файлам. Что бы это можно было сделать, на отдельном виртуальном хосте в sites-available ложу такой conf файл

<VirtualHost *:8080>
        #ServerName www.example.com:8080
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
        #LogLevel info ssl:warn
        ErrorLog ${APACHE_LOG_DIR}/1c_8080_error.log
        CustomLog ${APACHE_LOG_DIR}/1c_8080_access.log combined
        #Include conf-available/serve-cgi-bin.conf
        IncludeOptional sites-available/1cpublications/*.conf 
</VirtualHost>

На этот файл тоже делаем ссылку в каталог site-enabled, что бы файл читался апачем

ln -s ./sites-available/1cpublications.conf ./sites-enabled/1cpublications.conf

В предпоследней строке говорится, что нужно инклюдить все конфигурационные файлы из папки, куда буду ложить их описание. Это позволит описание публикации для каждой базы разместить в отдельном файле

Описание конкретной публикации, в свою очередь, выглядит следующим образом

Alias "/kzaccnt" "/var/www/1cpub/kzaccnt/"   
<Directory "/var/www/1cpub/kzaccnt/">
    AllowOverride All
    Options None
    Order allow,deny
    Allow from all
    SetHandler 1c-application
    ManagedApplicationDescriptor "/var/www/1cpub/kzaccnt/default.vrd"
</Directory>

dafault.vrd имеет типовой формат, свойственный 1С. Приведу для полноты картины свой:

<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
                xmlns:xs="http://www.w3.org/2001/XMLSchema"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                base="/kzaccnt"
                ib="Srvr=&quot;ytzh-pc&quot;;Ref=&quot;kzaccnt&quot;;">
        <ws />
</point>

Внешний вид дерева папок Apache

apache2.conf  
apache2.conf.bak   
conf-available
    charset.conf
    ..................
    serve-cgi-bin.conf
conf-enabled
    ..................
envvars
magic
mods-available  
    ..................
    wsap24.load
mods-enabled
    .................   
    wsap24.load -> ../mods-available/wsap24.load
ports.conf
sites-available
    000-default.conf
    1cpublications
        kzaccnt.conf
    1cpublications.conf
    default-ssl.conf
sites-enabled
    000-default.conf -> ../sites-available/000-default.conf
    1cpublications.conf -> ../sites-available/1cpublications.conf

7 directories, 193 files

Закладка Постоянная ссылка.