В последнее время наблюдается всё большее упрощение процесса установки 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="ytzh-pc";Ref="kzaccnt";">
<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