1с порядок сортировки не поддерживается базой данных

Обновлено: 29.06.2022

Заказали виртуальный сервер на FastVPS, купили мини сервер 1С и пришло время установки.

В сети нашлась хорошая статья, где все по порядку:

Итак, устанавливаем минимальный CentOS, настраиваем имена хостов, DNSы и сетевые подключения и приступаем собственно к установке серверных компонентов.

1. Установка Postgre SQL server

Для установки использовался рекомендованный (адаптированный) 1С дистрибутив, для чего потребуется скачать его из раздела поддержки пользователей сайта 1С. В моём случае это был "Дистрибутив СУБД PostgreSQL для Linux x86 (64-bit) одним архивом (RPM)", который я сохранил в /root/temp. Распаковываем архив:

Устанавливаем в следующей последовательности:

yum install postgresql92-libs-9.2.1-1.1C.x86_64.rpm

yum install postgresql92-9.2.1-1.1C.x86_64.rpm

yum install postgresql92-server-9.2.1-1.1C.x86_64.rpm

yum install postgresql92-contrib-9.2.1-1.1C.x86_64.rpm

Все недостающие зависимости (пакеты) будут установлены в процессе установки этих rpm, хотя на сайте 1С рекомендуют предварительно установить пакеты readline, libtermcap, krb5-libs и openssl, но в моём случае они либо уже были установлены, либо не были обнаружены в репозиториях.

2. Первый запуск Postgre SQL server

В отличии от сценариев установки большинства знакомых мне sql-серверов, postgres требует предварительной инициализации перед запуском, для чего существует два пути - первый, правильный:

Файлы, относящиеся к этой СУБД, будут принадлежать пользователю "postgres".

От его имени также будет запускаться процесс сервера.

Кластер баз данных будет инициализирован с локалью "ru_RU.UTF-8".

Кодировка БД по умолчанию, выбранная в соответствии с настройками: "UTF8".

Выбрана конфигурация текстового поиска по умолчанию "russian".

исправление прав для существующего каталога /var/lib/pgsql/9.2/data. ок

создание подкаталогов. ок

выбирается значение max_connections. 100

выбирается значение shared_buffers. 32MB

создание конфигурационных файлов. ок

создание базы template1 в /var/lib/pgsql/9.2/data/base/1. ок

инициализация pg_authid. ок

инициализация зависимостей. ок

создание системных представлений. ок

загрузка описаний системных объектов. ок

создание правил сортировки. ок

создание преобразований. ок

создание словарей. ок

установка прав для встроенных объектов. ок

создание информационной схемы. ок

загрузка серверного языка PL/pgSQL. ок

очистка базы данных template1. ок

копирование template1 в template0. ок

копирование template1 в postgres. ок

ВНИМАНИЕ: используется проверка подлинности "trust" для локальных подключений.

Другой метод можно выбрать, отредактировав pg_hba.conf или используя ключи -A,

--auth-local или --auth-host при следующем выполнении initdb.

Готово. Теперь вы можете запустить сервер баз данных:

/usr/pgsql-9.2/bin/postgres -D /var/lib/pgsql/9.2/data

/usr/pgsql-9.2/bin/pg_ctl -D /var/lib/pgsql/9.2/data -l logfile start

Или тот же вывод на английском языке:

could not change directory to "/root"

The files belonging to this database system will be owned by user "postgres".

This user must also own the server process.

The database cluster will be initialized with locale "ru_RU.UTF-8".

The default database encoding has accordingly been set to "UTF8".

The default text search configuration will be set to "russian".

fixing permissions on existing directory /var/lib/pgsql/9.2/data . ok

creating subdirectories . ok

selecting default max_connections . 100

selecting default shared_buffers . 32MB

creating configuration files . ok

creating template1 database in /var/lib/pgsql/9.2/data/base/1 . ok

initializing pg_authid . ok

initializing dependencies . ok

creating system views . ok

loading system objects' descriptions . ok

creating collations . ok

creating conversions . ok

creating dictionaries . ok

setting privileges on built-in objects . ok

creating information schema . ok

loading PL/pgSQL server-side language . ok

vacuuming database template1 . ok

copying template1 to template0 . ok

copying template1 to postgres . ok

WARNING: enabling "trust" authentication for local connections

You can change this by editing pg_hba.conf or using the option -A, or

--auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

/usr/pgsql-9.2/bin/postgres -D /var/lib/pgsql/9.2/data

/usr/pgsql-9.2/bin/pg_ctl -D /var/lib/pgsql/9.2/data -l logfile start

Или второй, более простой, но не всегда дающий необходимый результат (зависит от региональных настроек сервера, но у меня иногда приводивший к установке базы данных без поддержки необходимого collation ru_RU.UTF-8):

Инициализируется база данных: [ OK ]

Ошибка установки или изменения национальных настроек информационной базы

Порядок сортировки не поддерживается базой данных

Порядок сортировки не поддерживается базой данных

при установке информационной базы. Теперь можно настраивать автоматический запуск sql-сервера и, собственно, запускать его:

Запускается служба postgresql-9.2: [ OK ]

Всё. Для локальных подключений сервер настроен. В моём случае сервер 1С и сервер SQL находятся на разных машинах, поэтому потребуется настроить и удалённые подключения с авторизацией.

В случае каких-то проблем, читаем содержимое файлов:

Для повышения быстродействия документация PostgreSQL рекомендует как минимум унести журнал /var/lib/pgsql/9.2/data/pg_xlog на отдельный физический том и создать симлинк на него в исходном месте; из личных наблюдений - надо ещё и значительно увеличить размер используемой памяти. но необъятное не охватить, поэтому за статьями по оптимизации работы PostgreSQL для 1С предлагаю обращаться в поисковые системы, а оттуда - на профильные форумы.

3. Настройка пользователей (ролей) Postgre SQL server

Для управления PostgreSQL на начальном этапе потребуется сменить текущего пользователя на postgres и создать нового пользователя из командной строки:

-bash-4.1$ cd /usr/pgsql-9.2/bin

-bash-4.1$ createuser --interactive -P

Введите имя новой роли:server1c

Введите пароль для новой роли:

Должна ли новая роль иметь полномочия суперпользователя? (y - да/n - нет) n

Новая роль должна иметь право создавать базы данных? (y - да/n - нет) y

Новая роль должна иметь право создавать другие роли? (y - да/n - нет) n

В принципе, для обслуживания полезно иметь пользователя с правами суперпользователя - создавать его можно тем же путём.

Теперь осталось разрешить удалённое подключение с авторизацией - для этого в файле /var/lib/pgsql/9.2/data/pg_hba.conf потребуется заменить значение ident на md5 в строке "host all all 0.0.0.0/0 md5" и перезапустить сервис.

Не следует забывать и про настройки iptables - для работы Postgre SQL необходимо открыть как минимум порт tcp 5432, хотя привычнее (да и проще) объявить сетевой интерфейс "внутренним" (разрешить все подключения на интерфейсе).

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

4. Установка компонентов сервера 1С

Первый шаг установки сервера 1С мало отличается от аналогичного этапа с SQL-сервером - распаковать скачанный дистрибутив сервера командой tar -vxf rpm64.tar.gz. В итоге получим файлы:

1C_Enterprise83-common-8.3.3-715.x86_64.rpm - основные файлы 1С (включая русский и английский интерфейсы)

1C_Enterprise83-common-nls-8.3.3-715.x86_64.rpm - дополнительные языковые модули

1C_Enterprise83-server-8.3.3-715.x86_64.rpm - сервер 1С

1C_Enterprise83-server-nls-8.3.3-715.x86_64.rpm - дополнительные языковые модули

1C_Enterprise83-ws-8.3.3-715.x86_64.rpm - компоненты вэб-сервера 1С

1C_Enterprise83-ws-nls-8.3.3-715.x86_64.rpm - дополнительные языковые модули

1C_Enterprise83-crs-8.3.3-715.i386.rpm - хранилище конфигураций (только в 32-битном комплекте)

Устанавливаем нужные пакеты командами:

yum install 1C_Enterprise83-common-8.3.3-715.x86_64.rpm

yum install 1C_Enterprise83-server-8.3.3-715.x86_64.rpm

Настраиваем автоматический запуск демона и стартуем его:

Starting 1C:Enterprise 8.3 server: Error: service failed to start!

Starting 1C:Enterprise 8.3 server: OK

Хочу обратить внимание - если сразу после установки сервис (как в приведённом примере) не стартовал, а при второй попытке старта он запустился, скорее всего не настроен DNS - об этом чуть ниже. Если верить информации с многочисленных форумов, то наш сервер уже готов обслуживать до 12 клиентов. Для работы большего числа пользователей, необходимо установить лицензию сервера - либо в виде USB HASP и драйвера, либо в виде электронной лицензии. Про установку аппаратных ключей я уже писал, а установка программных лицензий достаточно проста: запускаем конфигуратор (с клиентской машины; кластер уже должен быть настроен и должна быть информационная база), вызываем "Сервис" - "Получение лицензии", вводим номер комплекта (с коробки или "Регистрационный номер" с карточки из конверта "Пинкоды программной лицензии") и пин-код (с той самой карточки из конверта), ставим галочку "Установка на сервер", вводим имя сервера в соответствующем поле, нажимаем "Далее", говорим, что это - "Первый запуск", заполняем форму "Владелец лицензии" (к стати, я не понял что писать в полях "Фамилия", "Имя", "Отчество" - то ли ответственного за эксплуатацию, то ли генерального директора - оставил поля пустыми, и оно получило лицензию, не ругнувшись), "Далее", "Автоматически" - профит! в /var/1C/licenses на сервере появился файлик XXXXXXXXXXXXXX.lic и серверу "стало хорошо" (если это была многопользовательская лицензия, то клиентам тоже "станет хорошо", т.к. они будут получать лицензии на сервере).

Для работы с графическими объектами и экспорта в xls, могут потребоваться дополнительные пакеты: ImageMagick, freetype (входит в зависимости ImageMagick), libgsf (входит в зависимости ImageMagick), corefonts (отсутствует в репозитариях CentOS - см. раздел 6); для "ТАКСИ" и "Управляемого приложения" они необходимы, для классического толстого клиента вроде бы не особо нужны, но 1С всё равно ругается на их отсутствие, хоть и работает.

По умолчанию сервер 1С слушает порт tcp 1541(1540) и для соединений использует диапазон портов 1560-1691.

5. Настройка экземпляра (кластера) сервера 1С

Информации о наличии оснастки управления сервером 1С для Linux мне не попадалось, так что для управления сервером будем использовать традиционную оснастку mmc для Windows "Администрирование серверов 1С:Предприятия", которую следует поставить из дистрибутива технологической платформы для Windows.

В результате детального изучения проблемы с применением strace удалось выяснить, что агент сервера при запуске ищет настройки по пути ~/.1cv8/1C/1cv8/ (в домашнем каталоге запустившего пользователя) и если не находит, пытается создать настройки кластера по умолчанию, для чего ему нужно имя хоста (выяснено экспериментально), и если верить "Руководству администратора", нужен корректно работающий DNS; экспериментально же был установлен факт, что сначала ragent читает файл /etc/hosts, затем обращается к DNS-серверу, а затем вызывает uname и снова лезет в hosts и к DNS и если не находит сопоставления, аварийно завершается. Итак, для нормального запуска потребуется полноценная и правильно настроенная сетевая инфраструктура, ну а в отсутствии работающего DNS достаточно дописать строчку в /etc/hosts и привести его примерно к такому виду:

192.168.122.227 vh-1c83.test.lan vh-1c83

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

ОШИБКА: нет прав для изменения параметра "lc_messages"

ОПЕРАТОР: SET lc_messages to 'en_US.UTF-8';

ОШИБКА: нет доступа к языку c

ОПЕРАТОР: CREATE OR REPLACE FUNCTION plpgsql_call_handler() RETURNS language_handler AS '$libdir/plpgsql' LANGUAGE C

ОШИБКА: нет прав для изменения параметра "lc_messages"

ОПЕРАТОР: SET lc_messages to 'en_US.UTF-8';

ОШИБКА: ошибка синтаксиса (примерное положение: "application") в символе 24

ОПЕРАТОР: lock table pg_class in application share mode

ПРЕДУПРЕЖДЕНИЕ: нет незавершённой транзакции

ОШИБКА: тип "mvarchar" не существует в символе 31

ОПЕРАТОР: create table Config (FileName mvarchar(128) not null, Creation timestamp not null, Modified timestamp not null, Attributes int not null, DataSize int8 not null, BinaryData bytea not null, PartNo int not null, PRIMARY KEY (FileName, PartNo))

ОШИБКА: нет прав для изменения параметра "lc_messages"

ОПЕРАТОР: SET lc_messages to 'en_US.UTF-8';

ОШИБКА: нет доступа к языку c

ОПЕРАТОР: CREATE OR REPLACE FUNCTION plpgsql_call_handler() RETURNS language_handler AS '$libdir/plpgsql' LANGUAGE C

Что порадовало - теперь в 1С можно работать непосредственно из Linux, что актуально для компаний, использующих его как основную ОС в корпоративной сети (я сейчас работаю как раз в такой компании); из неожиданностей - что при установке клиента 1С, он заявляет о зависимости от сервера и требует его установки, но потом ставится, прописывает значки запуска в "Офис" - "Финансы" и работает довольно сносно (по ощущениям - чуть менее комфортно, чем 8.2 под Windows, но заметно приятнее, чем тот же 8.2 через WINE от Ethersoft).

6. Установка недостающих зависимостей

Кроме "ImageMagick" и шрифтов, для возможности сохранения в табличные файлы (кроме xls - его я пока не заставил формироваться, хотя xlsx формируется), на клиенте должны быть установлены пакеты "libMagickWand5", "libgomp1", "liblcms2-2" и "libbz2-1" - на ряде машин они отсутствовали. При чём той же разрядности, что и сервер 1С (см. п. 4).

7. Настройка аппаратного hasp для виртуализированного сервера 1С (работающего на виртуальной машине KVM)

Не планировал описывать эту процедуру, но раз уж столкнулся с такой ситуацией, опишу. Итак, на этот раз я использовал драйвер от "Alladin Knowledge Systems USB HASP", предоставляемый компанией Sentinel - мне попались две версии:

Можно воспользоваться драйвером эзерсофт - окончательный выбор следует делать из опыта практической эксплуатации.

В конфигураторе при загрузке базы из dt файла выскочила ошибка:

Ошибка установки или изменения национальных настроек информационной базы
Порядок сортировки не поддерживается базой данных
по причине:
Порядок сортировки не поддерживается базой данных



Для базы-приемника проверяем настройки: "Администрирование -> Региональные установки информационной базы"


Для базы-источника проверяем настройки: загружаем dt файл в новую пустую файловую базу, затем "Администрирование -> Региональные установки информационной базы"


Для базы-приемника выставляем аналогичные настройки, как у базы-источника, которая загружена из dt файла.

Бывает так, что невозможно сменить региональные настройки базы-приемника, тогда приходится менять настройку в отдельной другой среде (другой сервер или другая СУБД, другая версия платформы 1С), в которой загружаем успешно базу из dt файла, меняем настройку на нужную, после чего выгружаем базу в dt файл и загружаем в базу-приемник.

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

Пакеты 1c, postgresql от etersoft поставил. Отредактировал init скрипты для них, чтобы они нормально работали, юзеров и группы и chmod'ы нужные сделал. initdb пустую базу сделала, postgres.conf редактировал, локали en_US.UTF8 en_US.ISO8859-1 стоят, в консоли psql делал
CREATE TRUSTED LANGUAGE plpgsql HANDLER language_handler_in;
REVOKE ALL ON LANGUAGE plpgsql FROM public;

Из остнаски сервер создался, а вот при попытки создания базы ошибка (через пару секунд после нажатия OK):
"Ошибка создания информационной базы:
Ошибка информационной базы
Ошибка установки или изменения национальных настроек информационной базы
Порядок сортировки не поддерживается базой данных"
Записи о базе есть, при попытки подключится к ней через 1С-клиент выдается ошибка о несоответствии региональных настроек, воспользуйтесь конструктором (он тоже ругается).

Может кто помочь?

Подсказали добавить в конфиг строки:
escape_string_warning = off
standard_conforming_strings = on

Теперь другая ошибка:

NOTICE: using pg_pltemplate information instead of CREATE LANGUAGE parameters ERROR: syntax error at or near "SECOND" at character 203 STATEMENT: CREATE OR REPLACE FUNCTION public.datediff(varchar, timestamp, timestamp) RETURNS int4 AS ' DECLARE arg_mode alias for $1; arg_d2 alias for $2; arg_d1 alias for $3; BEGIN if arg_mode = \'SECOND\' then return date_part(\'epoch\',arg_d1) - date_part(\'epoch\',arg_d2) ; elsif arg_mode = \'MINUTE\' then return ceil((date_part(\'epoch\',arg_d1) - date_part(\'epoch\',arg_d2)) / 60); elsif arg_mode = \'HOUR\' then return ceil((date_part(\'epoch\',arg_d1) - date_part(\'epoch\',arg_d2)) /3600); elsif arg_mode = \'DAY\' then return cast(arg_d1 as date) - cast(arg_d2 as date); elsif arg_mode = \'WEEK\' then return ceil( ( cast(arg_d1 as date) - cast(arg_d2 as date) ) / 7.0); elsif arg_mode = \'MONTH\' then return 12 * (date_part(\'year\',arg_d1) - date_part(\'year\',arg_d2)) + date_part(\'month\',arg_d1) - date_part(\'month\',arg_d2); elsif arg_mode = \'QUARTER\' then return 4 * (date_part(\'year\',arg_d1) - date_part(\'year\',arg_d2)) + date_part(\'quarter\',arg_d1) - date_part(\'quarter\',arg_d2); elsif arg_mode = \'YEAR\' then return (date_part(\'year\',arg_d1) - date_part(\'year\',arg_d2)); end if; END ' LANGUAGE 'plpgsql' VOLATILE; create or replace function state_max_bytea(st bytea, inp bytea) RETURNS bytea as ' BEGIN if st is null then return inp; elseif stinp then return inp; else return st; end if; END;' LANGUAGE plpgsql; create or replace function state_max_bool(st bool, inp bool) RETURNS bool as '\n BEGIN if st is null or not st then return inp; else return true; end if; END;' LANGUAGE plpgsql; create or replace function state_min_bool(st bool, inp bool) RETURNS bool as ' BEGIN if st is null or st then return inp; else return false; end if; END;' LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION btrim(bdata bytea, blen int) RETURNS bytea AS $BODY$ DECLARE ln int; res bytea; BEGIN ln := length(bdata); if ln < blen then res := bdata; for i in ln .. blen - 1 loop res := res || '\\000'; end loop; return res; elsif ln >blen then return substring(bdata from 1 for blen); else return bdata; end if; END;$BODY$ LANGUAGE 'plpgsql'; CREATE OR REPLACE FUNCTION BINROWVER(P1 INT4) RETURNS BYTEA AS $BODY$ DECLARE bytearea BYTEA; BEGIN bytearea := SET_BYTE('\\000\\000\\000\\000\\000\\000\\000\\000'::bytea, 4, MOD(P1 / 16777216, 256)); bytearea := SET_BYTE(bytearea, 5, MOD(P1 / 65536, 256)); bytearea := SET_BYTE(bytearea, 6, MOD(P1 / 256, 256)); bytearea := SET_BYTE(bytearea, 7, MOD(P1, 256)); RETURN bytearea; END;$BODY$ LANGUAGE 'plpgsql'; WARNING: there is no transaction in progress

Из остнаски сервер создался, а вот при попытки создания базы ошибка (через пару секунд после нажатия OK):
"Ошибка создания информационной базы:
Ошибка информационной базы
Ошибка установки или изменения национальных настроек информационной базы
Порядок сортировки не поддерживается базой данных"
Записи о базе есть, при попытки подключится к ней через 1С-клиент выдается ошибка о несоответствии региональных настроек, воспользуйтесь конструктором (он тоже ругается).

initdb с --encoding=UTF8 делал или нет?

Так не делал, но база создавалась так
LANG=ru_RU.utf8 /etc/init.d/postgresql start

При этом в postgres.conf:
lc_messages = 'ru_RU.UTF-8'
lc_monetary = 'ru_RU.UTF-8'
lc_numeric = 'ru_RU.UTF-8'
lc_time = 'ru_RU.UTF-8'

Сейчас попробую. Все то же самое.

Так не делал, но база создавалась так
LANG=ru_RU.utf8 /etc/init.d/postgresql start

При этом в postgres.conf:
lc_messages = 'ru_RU.UTF-8'
lc_monetary = 'ru_RU.UTF-8'
lc_numeric = 'ru_RU.UTF-8'
lc_time = 'ru_RU.UTF-8'

Сейчас попробую. Все то же самое.

Да. Этот релиз.
Только что все заработало. Решение как всегда тривиальное: поставил другую версию postgresql, а именно 8.1.5-17.1C.
Уже подцепил тестовую базу, работает во много раз быстрее. До этого база лежала на samba сервере.

Опять make check, если все нормально make install
11. Запуск postgresql и создание базы:
LANG=ru_RU.utf8 /etc/init.d/postgresql start
Initializing database: [ OK ]
Starting postgresql service: [ OK ]
12. Меняем пароль
psql -h localhost postgres postgres
ALTER USER postgres PASSWORD 'your_new_password';
13. Запуск 1С:
LANG=ru_RU.utf8 /etc/init.d/srv1cv81 start

Заказали виртуальный сервер на FastVPS, купили мини сервер 1С и пришло время установки.

В сети нашлась хорошая статья, где все по порядку:

Итак, устанавливаем минимальный CentOS, настраиваем имена хостов, DNSы и сетевые подключения и приступаем собственно к установке серверных компонентов.

1. Установка Postgre SQL server

Для установки использовался рекомендованный (адаптированный) 1С дистрибутив, для чего потребуется скачать его из раздела поддержки пользователей сайта 1С. В моём случае это был "Дистрибутив СУБД PostgreSQL для Linux x86 (64-bit) одним архивом (RPM)", который я сохранил в /root/temp. Распаковываем архив:

Устанавливаем в следующей последовательности:

yum install postgresql92-libs-9.2.1-1.1C.x86_64.rpm

yum install postgresql92-9.2.1-1.1C.x86_64.rpm

yum install postgresql92-server-9.2.1-1.1C.x86_64.rpm

yum install postgresql92-contrib-9.2.1-1.1C.x86_64.rpm

Все недостающие зависимости (пакеты) будут установлены в процессе установки этих rpm, хотя на сайте 1С рекомендуют предварительно установить пакеты readline, libtermcap, krb5-libs и openssl, но в моём случае они либо уже были установлены, либо не были обнаружены в репозиториях.

2. Первый запуск Postgre SQL server

В отличии от сценариев установки большинства знакомых мне sql-серверов, postgres требует предварительной инициализации перед запуском, для чего существует два пути - первый, правильный:

Файлы, относящиеся к этой СУБД, будут принадлежать пользователю "postgres".

От его имени также будет запускаться процесс сервера.

Кластер баз данных будет инициализирован с локалью "ru_RU.UTF-8".

Кодировка БД по умолчанию, выбранная в соответствии с настройками: "UTF8".

Выбрана конфигурация текстового поиска по умолчанию "russian".

исправление прав для существующего каталога /var/lib/pgsql/9.2/data. ок

создание подкаталогов. ок

выбирается значение max_connections. 100

выбирается значение shared_buffers. 32MB

создание конфигурационных файлов. ок

создание базы template1 в /var/lib/pgsql/9.2/data/base/1. ок

инициализация pg_authid. ок

инициализация зависимостей. ок

создание системных представлений. ок

загрузка описаний системных объектов. ок

создание правил сортировки. ок

создание преобразований. ок

создание словарей. ок

установка прав для встроенных объектов. ок

создание информационной схемы. ок

загрузка серверного языка PL/pgSQL. ок

очистка базы данных template1. ок

копирование template1 в template0. ок

копирование template1 в postgres. ок

ВНИМАНИЕ: используется проверка подлинности "trust" для локальных подключений.

Другой метод можно выбрать, отредактировав pg_hba.conf или используя ключи -A,

--auth-local или --auth-host при следующем выполнении initdb.

Готово. Теперь вы можете запустить сервер баз данных:

/usr/pgsql-9.2/bin/postgres -D /var/lib/pgsql/9.2/data

/usr/pgsql-9.2/bin/pg_ctl -D /var/lib/pgsql/9.2/data -l logfile start

Или тот же вывод на английском языке:

could not change directory to "/root"

The files belonging to this database system will be owned by user "postgres".

This user must also own the server process.

The database cluster will be initialized with locale "ru_RU.UTF-8".

The default database encoding has accordingly been set to "UTF8".

The default text search configuration will be set to "russian".

fixing permissions on existing directory /var/lib/pgsql/9.2/data . ok

creating subdirectories . ok

selecting default max_connections . 100

selecting default shared_buffers . 32MB

creating configuration files . ok

creating template1 database in /var/lib/pgsql/9.2/data/base/1 . ok

initializing pg_authid . ok

initializing dependencies . ok

creating system views . ok

loading system objects' descriptions . ok

creating collations . ok

creating conversions . ok

creating dictionaries . ok

setting privileges on built-in objects . ok

creating information schema . ok

loading PL/pgSQL server-side language . ok

vacuuming database template1 . ok

copying template1 to template0 . ok

copying template1 to postgres . ok

WARNING: enabling "trust" authentication for local connections

You can change this by editing pg_hba.conf or using the option -A, or

--auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

/usr/pgsql-9.2/bin/postgres -D /var/lib/pgsql/9.2/data

/usr/pgsql-9.2/bin/pg_ctl -D /var/lib/pgsql/9.2/data -l logfile start

Или второй, более простой, но не всегда дающий необходимый результат (зависит от региональных настроек сервера, но у меня иногда приводивший к установке базы данных без поддержки необходимого collation ru_RU.UTF-8):

Инициализируется база данных: [ OK ]

Ошибка установки или изменения национальных настроек информационной базы

Порядок сортировки не поддерживается базой данных

Порядок сортировки не поддерживается базой данных

при установке информационной базы. Теперь можно настраивать автоматический запуск sql-сервера и, собственно, запускать его:

Запускается служба postgresql-9.2: [ OK ]

Всё. Для локальных подключений сервер настроен. В моём случае сервер 1С и сервер SQL находятся на разных машинах, поэтому потребуется настроить и удалённые подключения с авторизацией.

В случае каких-то проблем, читаем содержимое файлов:

Для повышения быстродействия документация PostgreSQL рекомендует как минимум унести журнал /var/lib/pgsql/9.2/data/pg_xlog на отдельный физический том и создать симлинк на него в исходном месте; из личных наблюдений - надо ещё и значительно увеличить размер используемой памяти. но необъятное не охватить, поэтому за статьями по оптимизации работы PostgreSQL для 1С предлагаю обращаться в поисковые системы, а оттуда - на профильные форумы.

3. Настройка пользователей (ролей) Postgre SQL server

Для управления PostgreSQL на начальном этапе потребуется сменить текущего пользователя на postgres и создать нового пользователя из командной строки:

-bash-4.1$ cd /usr/pgsql-9.2/bin

-bash-4.1$ createuser --interactive -P

Введите имя новой роли:server1c

Введите пароль для новой роли:

Должна ли новая роль иметь полномочия суперпользователя? (y - да/n - нет) n

Новая роль должна иметь право создавать базы данных? (y - да/n - нет) y

Новая роль должна иметь право создавать другие роли? (y - да/n - нет) n

В принципе, для обслуживания полезно иметь пользователя с правами суперпользователя - создавать его можно тем же путём.

Теперь осталось разрешить удалённое подключение с авторизацией - для этого в файле /var/lib/pgsql/9.2/data/pg_hba.conf потребуется заменить значение ident на md5 в строке "host all all 0.0.0.0/0 md5" и перезапустить сервис.

Не следует забывать и про настройки iptables - для работы Postgre SQL необходимо открыть как минимум порт tcp 5432, хотя привычнее (да и проще) объявить сетевой интерфейс "внутренним" (разрешить все подключения на интерфейсе).

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

4. Установка компонентов сервера 1С

Первый шаг установки сервера 1С мало отличается от аналогичного этапа с SQL-сервером - распаковать скачанный дистрибутив сервера командой tar -vxf rpm64.tar.gz. В итоге получим файлы:

1C_Enterprise83-common-8.3.3-715.x86_64.rpm - основные файлы 1С (включая русский и английский интерфейсы)

1C_Enterprise83-common-nls-8.3.3-715.x86_64.rpm - дополнительные языковые модули

1C_Enterprise83-server-8.3.3-715.x86_64.rpm - сервер 1С

1C_Enterprise83-server-nls-8.3.3-715.x86_64.rpm - дополнительные языковые модули

1C_Enterprise83-ws-8.3.3-715.x86_64.rpm - компоненты вэб-сервера 1С

1C_Enterprise83-ws-nls-8.3.3-715.x86_64.rpm - дополнительные языковые модули

1C_Enterprise83-crs-8.3.3-715.i386.rpm - хранилище конфигураций (только в 32-битном комплекте)

Устанавливаем нужные пакеты командами:

yum install 1C_Enterprise83-common-8.3.3-715.x86_64.rpm

yum install 1C_Enterprise83-server-8.3.3-715.x86_64.rpm

Настраиваем автоматический запуск демона и стартуем его:

Starting 1C:Enterprise 8.3 server: Error: service failed to start!

Starting 1C:Enterprise 8.3 server: OK

Хочу обратить внимание - если сразу после установки сервис (как в приведённом примере) не стартовал, а при второй попытке старта он запустился, скорее всего не настроен DNS - об этом чуть ниже. Если верить информации с многочисленных форумов, то наш сервер уже готов обслуживать до 12 клиентов. Для работы большего числа пользователей, необходимо установить лицензию сервера - либо в виде USB HASP и драйвера, либо в виде электронной лицензии. Про установку аппаратных ключей я уже писал, а установка программных лицензий достаточно проста: запускаем конфигуратор (с клиентской машины; кластер уже должен быть настроен и должна быть информационная база), вызываем "Сервис" - "Получение лицензии", вводим номер комплекта (с коробки или "Регистрационный номер" с карточки из конверта "Пинкоды программной лицензии") и пин-код (с той самой карточки из конверта), ставим галочку "Установка на сервер", вводим имя сервера в соответствующем поле, нажимаем "Далее", говорим, что это - "Первый запуск", заполняем форму "Владелец лицензии" (к стати, я не понял что писать в полях "Фамилия", "Имя", "Отчество" - то ли ответственного за эксплуатацию, то ли генерального директора - оставил поля пустыми, и оно получило лицензию, не ругнувшись), "Далее", "Автоматически" - профит! в /var/1C/licenses на сервере появился файлик XXXXXXXXXXXXXX.lic и серверу "стало хорошо" (если это была многопользовательская лицензия, то клиентам тоже "станет хорошо", т.к. они будут получать лицензии на сервере).

Для работы с графическими объектами и экспорта в xls, могут потребоваться дополнительные пакеты: ImageMagick, freetype (входит в зависимости ImageMagick), libgsf (входит в зависимости ImageMagick), corefonts (отсутствует в репозитариях CentOS - см. раздел 6); для "ТАКСИ" и "Управляемого приложения" они необходимы, для классического толстого клиента вроде бы не особо нужны, но 1С всё равно ругается на их отсутствие, хоть и работает.

По умолчанию сервер 1С слушает порт tcp 1541(1540) и для соединений использует диапазон портов 1560-1691.

5. Настройка экземпляра (кластера) сервера 1С

Информации о наличии оснастки управления сервером 1С для Linux мне не попадалось, так что для управления сервером будем использовать традиционную оснастку mmc для Windows "Администрирование серверов 1С:Предприятия", которую следует поставить из дистрибутива технологической платформы для Windows.

В результате детального изучения проблемы с применением strace удалось выяснить, что агент сервера при запуске ищет настройки по пути ~/.1cv8/1C/1cv8/ (в домашнем каталоге запустившего пользователя) и если не находит, пытается создать настройки кластера по умолчанию, для чего ему нужно имя хоста (выяснено экспериментально), и если верить "Руководству администратора", нужен корректно работающий DNS; экспериментально же был установлен факт, что сначала ragent читает файл /etc/hosts, затем обращается к DNS-серверу, а затем вызывает uname и снова лезет в hosts и к DNS и если не находит сопоставления, аварийно завершается. Итак, для нормального запуска потребуется полноценная и правильно настроенная сетевая инфраструктура, ну а в отсутствии работающего DNS достаточно дописать строчку в /etc/hosts и привести его примерно к такому виду:

192.168.122.227 vh-1c83.test.lan vh-1c83

::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

ОШИБКА: нет прав для изменения параметра "lc_messages"

ОПЕРАТОР: SET lc_messages to 'en_US.UTF-8';

ОШИБКА: нет доступа к языку c

ОПЕРАТОР: CREATE OR REPLACE FUNCTION plpgsql_call_handler() RETURNS language_handler AS '$libdir/plpgsql' LANGUAGE C

ОШИБКА: нет прав для изменения параметра "lc_messages"

ОПЕРАТОР: SET lc_messages to 'en_US.UTF-8';

ОШИБКА: ошибка синтаксиса (примерное положение: "application") в символе 24

ОПЕРАТОР: lock table pg_class in application share mode

ПРЕДУПРЕЖДЕНИЕ: нет незавершённой транзакции

ОШИБКА: тип "mvarchar" не существует в символе 31

ОПЕРАТОР: create table Config (FileName mvarchar(128) not null, Creation timestamp not null, Modified timestamp not null, Attributes int not null, DataSize int8 not null, BinaryData bytea not null, PartNo int not null, PRIMARY KEY (FileName, PartNo))

ОШИБКА: нет прав для изменения параметра "lc_messages"

ОПЕРАТОР: SET lc_messages to 'en_US.UTF-8';

ОШИБКА: нет доступа к языку c

ОПЕРАТОР: CREATE OR REPLACE FUNCTION plpgsql_call_handler() RETURNS language_handler AS '$libdir/plpgsql' LANGUAGE C

Что порадовало - теперь в 1С можно работать непосредственно из Linux, что актуально для компаний, использующих его как основную ОС в корпоративной сети (я сейчас работаю как раз в такой компании); из неожиданностей - что при установке клиента 1С, он заявляет о зависимости от сервера и требует его установки, но потом ставится, прописывает значки запуска в "Офис" - "Финансы" и работает довольно сносно (по ощущениям - чуть менее комфортно, чем 8.2 под Windows, но заметно приятнее, чем тот же 8.2 через WINE от Ethersoft).

6. Установка недостающих зависимостей

Кроме "ImageMagick" и шрифтов, для возможности сохранения в табличные файлы (кроме xls - его я пока не заставил формироваться, хотя xlsx формируется), на клиенте должны быть установлены пакеты "libMagickWand5", "libgomp1", "liblcms2-2" и "libbz2-1" - на ряде машин они отсутствовали. При чём той же разрядности, что и сервер 1С (см. п. 4).

7. Настройка аппаратного hasp для виртуализированного сервера 1С (работающего на виртуальной машине KVM)

Не планировал описывать эту процедуру, но раз уж столкнулся с такой ситуацией, опишу. Итак, на этот раз я использовал драйвер от "Alladin Knowledge Systems USB HASP", предоставляемый компанией Sentinel - мне попались две версии:

Можно воспользоваться драйвером эзерсофт - окончательный выбор следует делать из опыта практической эксплуатации.

Причина ошибки – несоответствие системных настроек и настройки 1С.
Кстати, если операционная система локализована и региональные настройки установлены корректно, то при установке 1С ее настройки будут приведены в соответствие с системными.

Проверка корректности настроек

I. Системные настройки (для локализованной русифицированной версии Windows)

1. Откройте Пуск – Настройка – Панель управления – Язык и региональные стандарты.
2. На вкладке Региональные параметры в выпадающем списке должно быть – Русский.
3. На вкладке Языки – Подробнее… – диалоговое окно Языки и службы текстового ввода – вкладка Параметры – Язык ввода по умолчанию должно быть – Русский-Русская.
4. На вкладке Дополнительно должно быть – Русский.

II. Настройки 1С

1. Запустите программу 1С. В окне Запуск 1С выделите нужную информационную базу.
2. В выпадающем списке В режиме выберите Конфигуратор – OK.
3. Запустится Конфигуратор. Выберите меню Администрирование – Кодовая страница таблиц ИБ…
4. В окне Кодовая страница таблиц информационной базы в выпадающем списке должно быть – 1251 – Русский, белорусский, болгарский и сербский языки.

В качестве крайней меры иногда рекомендуют отключать проверку соответствия порядка сортировки. Для этого в каталоге информационной базы нужно создать сигнальный файл с именем OrdNoChk.prm (с произвольным содержимым). Но:
1. Если вы используете компоненту УРИБ (управление распределенными информационными базами), – при отключении проверки порядка сортировки, – НЕ СЛЕДУЕТ использовать символы любых алфавитов, кроме латинского, в трехбуквенном идентификаторе информационных баз, входящих в состав распределенной базы.
2. Следует иметь в виду, что отключение проверки идентичности порядка сортировки может привести к неожиданному – для пользователя программы 1С ! – порядку следования строк, например, при формировании отчетов.

Устранение ошибки в Windows Vista

Если при соединении с sql сервером лезет ошибка - переписываем с компа с winXP файлы windows/system32 sqlsrv32.dll и sqlsrv32.rll на комп с вистой (предварительно дав права на их перезапись)

Распечатать

Похожие FAQ

Еще в этой же категории

Читайте также: