Для клиентов

Логин:
Пароль:

Загруженность

19.03.2024 - 29.03.2024

Календарь

Ссылки по теме

Установка сервера 1С на Centos 5.5 (Linux) [обновлено 08.07.2012]

Заметки на полях Услуги

Постановка и разработка задачи о создании выделенного сервера 1С

Недавно встала задача о том, чтобы перенести данные 1С с компьютеров бухгалтеров на имеющийся сервер. Сервер работает под управлением CentOS 5.5 и является сервером терминалов (в компании большинство рабочих мест терминальные).
 
Для переноса данных 1С на сервер в сети есть 2 основных пути:
  1. Расшарить каталог на сервере, куда положить файлы с базами 1С (как это работает в виндовой сети). Способ подходит для старых версий 1С и имеет множество минусов. Однако прост, как полено и потому имеет право на существование.
  2. Установить отдельную серверную часть на выделенный сервер и к ней подключаться с клиентских машин. Такая возможность есть в 1С, начиная (если мне память не изменяет) с версии 8.
 
Так как при постановке задачи важным была производительность и защищенность, было решено ставить отдельную серверную часть на сервер. Слава Богу, серверная часть есть под Linux. Для хранения данных она может использовать различные СУБД. Обычно используется PostgreSQL. Наверное потому что его можно использовать бесплатно (правда?).
 
Сказано – сделано.
Поиск в Интернете дал множество статей, которые описывали разные вариации установки. Я не буду пересказывать то, что легко можно найти в сети, а остановлюсь на том, что вызвало у меня затруднения в той или иной степени. Обо всем остальном можно почитать в статях, например вот в этой (пожалуй одной из самых лучших на мой взгляд): http://life.screenshots.ru/the-code-inside/php-platform/linux-1c-setup/
 

Установочные файлы 1C и PostgreSQL

Все необходимые установочные файлы можно скачать с сайта поддержки пользователей http://users.v8.1c.ru/. Для Захода на него понадобятся код пользователя и пароль. Но при лицензионной версии 1С это вопрос решаемый.
С этого сайта можно скачать как серверную часть 1С, так и СУБД PostgreSQL с уже накатными патчами (изменениями), необходимыми для корректной работы 1С.
При установке, у меня возникла проблема с зависимостями. Часть зависимостей легко удовлетворил, найдя соответствующие RPM-ы через сайты поиска по RPM-пакетам для различных версий Linux. Еще, очень помогла сборка PostgreSQL от Etersoft. У них на сервере есть различные версии PostgreSQL, собранные под разнообразные платформы, а также дополнительные файлы, чтобы удовлетворит зависимости.
 

Настройка СУБД PostgreSQL

При запуске PostgreSQL необходимо внимательно следовать инструкции в том, что касается локали и инициализации первоначальной базы данных. Может понадобиться, однако устанавливать свой пароль на пользователя postgres, для этого можно использовать следующий алгоритм:
  1. Из-под root-а войти, как postgres командой: «su postgres»
  2. Войти в БД: «psql»
  3. Если не входит без пароля, то надо убедиться, что в файле /var/lib/pgsql/data/pg_hda.conf была строка: “local all   all   ident”, которая разрешит авторизоваться текущим пользователем при локальном входе.
  4. Когда появится консоль для ввода SQL-команд ввести: «ALTER USER postgres PASSWORD '<новый пароль>';» (без кавычек)
  5. Выйти из консоли командой «\q».
 

Соединение клиента с сервером 1С

При успешном запуске серверной части 1С на сервере будет 3 процесса, типа:
usr1cv82 14603 0.0 0.0 113640 14128 ?        Ssl Aug26   0:34 /opt/1C/v8.2/i386/ragent -daemon
usr1cv82 30233 0.2 0.2 360268 39700 ?        Sl   14:43   1:32 /opt/1C/v8.2/i386/rmngr -port 1541 -range 1560:1591
usr1cv82 30254 27.1 4.1 997564 692868 ?       Sl   14:43 151:09 /opt/1C/v8.2/i386/rphost -range 1560:1591 -reghost xserv -regport 1541 -pid 181...
 
Проверять процессы надо немного погодя после старта сервера 1С, так как иногда, при некоторых ошибках некоторые из них могут завершаться. Одна из причин завершения процессов – невозможность определить имя хоста (оно должно преобразовываться в IP).
Для отладки и того, чтобы получить сообщение об ошибке, можно попробовать запускать падающий процесс вручную, почитать какие у него есть параметры для более развернутых сообщениях об ошибках.
 
Важно, чтобы версии 1С-сервера и клиента полностью совпадали, иначе соединения не произойдет (будет выдана ошибка, сообщающая о версии сервера и клиента).
 
При создании новой базы данных через клиента 1С, если соединение произошло успешно, серверная часть будет пытаться создать базу в postgresql. Здесь важно, чтобы базы такой действительно не существовало до этого, так как в противном случае может возникнуть ошибка, которая может сбить с толку. У меня при таком случае сначала возникла ошибка «ERROR: language "plpgsql" does not exist.», которая устраняется ручным созданием языка через консоль SQL-команд, но после нее выходит ошибка: «Ошибка type "mvarchar" does not exist at charter 31», которая при поиске в интеренете уводит в сторону установки библиотеки icu. На этот ложный путь я убил огромное количество времени. Однако в моем случае (ICU была установлена, обновлена) надо было всего лишь использовать пустую базу.
 
Если база успешно создалась, в нее можно загрузить данные через Конфигуратор: Администрирование -> Загрузить базу. Для этого, конечно, надо предварительно базу выгрузить (аналогично). На этом этапе могут возникнуть ошибки типов данных и конструкций языка. Обычно они свидетельствуют о неправильно настроенном PostgreSQL (проверьте внесли ли вы все изменения в конфигурационный файл postgresql.conf), не измененных параметрах систему (kernel.shmall, kernel.shmmax), или то, что вы поставили PostgreSQL без патчей от 1С.
 

Имеющиеся нерешенные проблемы

Потеря связи по timeout-у

После установки связки PostgreSQL + 1C-server бухгалтеры были переведены на новые базы данных. Из объективных (а при работе с таким контингентом приходится производить такую фильтрацию) жалоб поступила только одна: через некоторое время бездействия на компьютере сессия 1С-клиента отваливается от 1С-сервера и не восстанавливается, что приводит к закрытию всех окон и необходимости открывать базу заново.
Есть предположение, что это связано с какими-то таймаутами на соединение с сервером, однако тот факт, что больше ни у одного бухгалтера таких проблем не возникало, наводит на мысль, что проблема может крыться в настройках конкретного рабочего места или проблем с сетью по пути к конкретному клиентскому компьютеру.

Имя сервера 1С

После удаления из сети контроллера несуществующего домена и настройки Samba на одноранговую сеть (а заодно и обновление ее до версии Samba 3.6), виндовые машины перестали видеть сервер просто по имени, например server1c. Также по этому имени не проходят ping-и. Хотя по имени "server1c." (c точкой) все нормально работает. Nslookup server1c дает верные данные (DNS работает нормально).

Очевидно проблема с тем, что windows пытается найти server1c, как имя машины в виндовой сети, но ответить о том, что это за машина некому. Проблема решается прописыванием этого имени и его IP-адреса в файл hosts:

11.22.33.44      server1c

Однако лучше всего найти правильные параметры конфигурирации Sambа, чтобы все это работало без правки клиентских машин. Работы по поиску ведутся.

ФИО*:
email*:
Отзыв*:
Код*
# Артём ответить
>надо было всего лишь использовать пустую базу.
Что это значит?
19/05/2015 14:11:52
# Дима ответить
Тоже не понял. Так как поборол в итоге mvarchar?
22/06/2015 16:45:37
# Andres Danilov ответить
Имелось в виду, что когда прописываешь базу данных в 1C, то ее не должно существовать в PostgreSQL. Даже пустой. Надо, чтобы 1С сама создавала эту базу с нуля.
Если базу создала не 1С (например админ руками через консоль), то могут быть такие вот ошибки.

Полсе того, как 1С сама создаст базу, в нее можно будет загрузить данные средствами 1С из ранее созданной выгрузки.
23/06/2015 08:04:42