Решение системных задач для предприятий малого бизнеса.

Игры от YuWik

Открытое ПО: 1С + PostgreSQL на Ubuntu

Константин аватар

Продолжая тему, затронутую с статье "Надо ли ловить рыбу динамитом", можно сказать следующее.
Наиболее частые ответы на вопрос - "Почему вместо ворованного и дорогого программного обеспечения не использовать нормальное и дешевое?" звучат так:
1. Высокая "стоимость владения" - Linux мало кто знает, поэтому если уходит админ, то потом замену найти сложно.
2. Под Linux не работает... и как правило самым важным пунктом среди этого "неработающего" становится бухгалтерия.
По пункту первому можно сразу во первых сказать, что собственно найти нормального (я подчеркиваю - именно с достаточно высоким уровнем квалификации, а не эникейщика) админа под Windows такая же сложная задача, как и под Linux. По поводу "стоимости владения" я попытаюсь в дальнейшем написать отдельную статью, так как тема явно выходит за рамки одного абзаца.
Во втором вопросе ситуация более простая? На сегодняшний день вариантов решения данной проблемы несколько - один из них, воспользоваться коммерческими продуктами - например Wine@ENTEROSOFT, либо CrossOver, либо им подобным - как правило вы получите техническую поддержку, решение ряда проблем и вопросов за в принципе адекватные деньги. Если это вас устраивает - то далее читать вам смысла особо нет.
Второй вариант - воспользоваться наработками сообщества и использовать аналоги этих программ с открытым исходным кодом.
И еще несколько замечаний - в статье принципиально не буду рассматривать варианты "что бы на шару" - если вы используете 1С, то это ваши проблемы и подразумевается что она у вас куплена не на ближайшем радиорынке. Связано это не столько с моей какой то особой любовью к детищу господина Нуралиева, а с тем что во первых на небольшом предприятии собственно 1С и не нужна особо, вполне можно обойтись либо самописной либо бесплатной версией - ИМХО ножки надо протягивать по одежке, а не пользоваться краденным, оправдываясь, что дескать лицензия стоит дорого, либо если вы считаете что лично вам (либо вашему бухгалтеру) без данной программы не жить - то значит вполне логично заплатить за это. Хотя как с моей точки зрения - линейка программ 1С:Бухгалтерия вложенных денег не оправдывает, но так как лично вам надо - заплатите за это денег. Но впрочем это к теме не относится.
Так, как наиболее востребована именно работа с бухгалтерией, в данной статье я опишу как использовать 1С Бухгалтерию 8.1 в файловом и серверном варианте под Linux в гетерогенной сети.
В качестве операционных системы используются Ubunta Server Edition x64 9.04, KUbunta 9.04, Windows XP SP3, Windows Vista Ultima - на клиентских машинах - в зависимости от наличия лицензий. Сеть построена на базе оборудования D-Link, первоначально в большей своей части была беспроводной - но в дальнейшем от беспроводного сегмента вынужденны были отказаться, почему - поясню далее.
Для решения задачи необходимо:

  1. Программа эмуляции - я использую WiheHQ (Wine Is Not Emulator) - для запуска под Linux клиента 1С:Бухгалтерии. В настоящее время стабильная версия - 1.0.1, ее можно использовать в том случае, если вы собираетесь остановится на файл-серверном варианте, либо под SQL-версию используйте 1.1.29 (на текущий момент последний релиз) (НЕ WINE@ENTEROSOFT которая является коммерческим продуктом!!!!)
  2. Для файл-серверной версии (а так же для организации файловых шар, организации домена) необходима samba. Информации по настройкам в Интернете более чем достаточно, поэтому вопросы настройки самбы для работы 1С я не рассматривал, за этим я отсылаю вас в великий гугль - тем более, что стандартные настройки самбы вполне корректно позволяют работать, но тюнинг не помешает.
  3. Если вы планируете использовать сервер терминалов (а если вы используете файл-серверную версию и у вас более 2-3 клиентов - то от этого вы никуда не денетесь) то у вас будет два варианта - либо использовать Free-версии 2X TerminalServer либо FreeNX - в первом случае вы получаете 3 терминальных сессии, во втором 2, либо использовать полностью бесплатный вариант на базе Cygwin, либо использовать XMing (10 английских фунтов). Я бы советовал вариант для FreeNX (она наиболее простая и быстрая), в связи с тем, что для небольшого предприятия в принципе этого должно хватить - либо же вы можете воспользоваться описанием - Cygwin для начинающих.
  4. PostgreSQL - я установил скачанную с сайта компании 1С.
  5. Собственно 1С - серверная (версия под Linux) и клиентская часть. Версия программы - 8.1.14.72, конфигурация "Управление торговлей для Украины" версия 2.3.4.2. Обратите внимание что версия клиента и версия сервера должны совпадать (по крайней мере у меня выдавало ошибку если клиент был более младшей версии).
  6. Так же возможно вам понадобится программа wine-doors, которая может вам помочь, в том случае, если вам нужно запускать на компьютере специфические приложения Windows - типа IE6 и тому подобное. Так же есть ее аналог - winetricks - для рассматриваемых задач они в принципе не нужны, но могут вам пригодится.

Хочу обратить ваше внимание - используя данные программы, не жадничайте - если вам удалось решить поставленную задачу - выделите немного средств и пожертвуйте в те проекты, плодами работы которых вы воспользовались. От вас не убудет если вместо 1000-2000 убитых президентов вы потратите на развитие свободного ПО 20-100 долларов. Если вы можете принять участие в разработке - это тоже не помешает, если не можете - помогите материально.
После того, как вы установили Ubuntu Server Edition, выполните обновление системы и установите самбу. Сложностей тут нет никаких, поэтому останавливаться особо не вижу смысла.
Следующим этапом - скачиваете PostgreSQL (либо берете его на диске ИТС) версии 8.1.5-14.1С.
После установки создаете папку в которой будут находится ваша база данных (например /mnt/smb/data) назначаете для нее владельцем пользователя postgres и группу postgres.
Так же стоит назначить пароль для учетной записи сервера используя команду passwd.
Следующим шагом вам необходимо инициализировать папку базы данных. Делается это следующей командой:

$su postgres -c 'LANG=ru_RU.UTF-8 initdb /mnt/smb/data' 

вы можете получит сообщение о том, что параметр SHMMAX в ядре меньше чем требуемый.

# sysctl -a|grep shmmax

как правило утилита пишет сколько ей надо. Если надо - значит ставите, например:

echo "kernel.shmmax = 134217728" >> /etc/sysctl.conf

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

su postgres -c 'LANG=ru_RU.UTF-8 pg_ctl -D /mnt/smb/data -l /mnt/smb/logfile start'

Если все прошло без ошибок - следующим этапом выполняем:

su postgres -c 'LANG=ru_RU.UTF-8 psql localhost postgres passwd'

Соотвественно вы должны использовать пароль, который вы установили для пользователя postgres.
Здесь его можно поменять:

alter user postgres with password 'YOUR_PASSWORD';
\q

Да и после этого нужно внести изменения в файл data/pg_hba.conf - в конце файла стираем все строки после строки

        # TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

И пишем то, что ниже:

        host    all         all         127.0.0.1/32          md5
        host    all         all         192.168.0.0/24        md5

Сервер перезапускаем.
Все. Теперь вы можете попробовать присоединится любой утилитой для администрирования (я использую pgAdmin III) и проверить работу сервера.
Следующий этап - установка сервера 1С. Так как файлы сервера поставляются в редхатовских пакетах (*.rpm) необходимо выполнить предварительно конвертацию -

$alien --scripts --to-deb *.rpm
...
$dpkg -i *.deb

После необходимо установить wine на клиентской машине - и 1С:Бухгалтерию в ней - при установке программы НЕ ЗАБУДЬТЕ СНЯТЬ ГАЛОЧКУ - инсталлировать HASP-driver. ОБЯЗАТЕЛЬНО! Необходимо в /etc/hosts прописать адрес и имя машины на которой работает сервер. После этого запускаете консоль управления серверами 1С предприятия, (нужно при установке на одном из клиентов выбрать сервер - службу не запускать, после этого в директории появится оснастка управления сервером, на Linux она находится ~/.wine/drive_c/Program Files/1cv81/bin - файл 1CV8 Server.msc), создаете центральный кластер, в него добавляете свой сервер, создаете базу. Все.
Дальше стандартно запускаете 1С - "Добавить" - "Существующую информационную базу" - "На сервере 1С Предприятия" - далее указываете имя вашего сервера (при попытке указать адрес в моей версии wine я стабильно получал ошибку) и имя базы данных - и спокойно работаете.
Перенос данных из файловой БД выполняется простой выгрузкой и загрузкой данных.
Настройка же бухгалтерии на базе файловой БД еще проще. Все что вам нужно - это установить и настроить самбу, поместить либо создать БД.
Но естественно не все так просто.
Типичные ошибки, с которыми вы можете столкнуться:
1. Клиентская машина при попытке соединится вылетает с ошибкой "Внутренняя ошибка" - решение - обновите wine до версии 1.1.29
2. Клиентская машина вылетает при запуске с сообщением "Socket error ..."- решение - пропишите в /etc/hosts адрес вашего сервера
3. Сообщение - "Invalid value for parameter >>”lc_messages”:”en_US”" - решение -

sudo echo "en_US.UTF-8 UTF-8" >> /var/lib/locales/supported.d/en
sudo locale-gen en

В целом вроде все. Если есть вопросы - пишите.
При установке были использованы следующие статьи:

  1. Установка 1с на Linux
  2. Сайт Гилева - Установка 1С в картинках
  3. Сервер 1С 8.1 под Linux (файловый и серверный варианты)
  4. Установка сервера приложений
  5. v8: Установка сервера 1с 8.1 и postgresql на машину с OpenSuse linux
  6. v8: Коды ошибок 1С 8.0

Комментарии

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Re: Открытое ПО: 1С + PostgreSQL на Ubuntu

В «1С:Предприятие» 8.2 появилась поддержка Linux-клиентов.

Читайте о новшествах в версии 8.2 платформы 1С:Предприятия 8 здесь.

Так что все изменяется к лучшему.

Интеллект — это способность избегать выполнения работы, но так, чтобы она при этом была сделана.

Константин аватар

Re: Открытое ПО: 1С + PostgreSQL на Ubuntu

Ну в принципе согласен. Естественно имеется ввиду диапазон адресов ваших сетей. Так же можно включить доверенное соединение для конкретного диапазона - но это как понятно имеет свои минусы.
Кроме того, надо обратить внимание - во первых необходимо дать права доступа на папку 1С для пользователя srv1cv81 и группы grp1cv81 (/opt/1C)
Во вторых - не забыть запустить менеджер сервисов

============================================

Во имя Отца и Сына и Святаго Духа

Lord аватар

Re: Открытое ПО: 1С + PostgreSQL на Ubuntu

Константин написал:
И пишем то, что ниже:
[code]
host all all 127.0.0.1/32 md5
host all all 192.168.0.0/24 md5

Статья на "отлично". Но я бы в последнюю строчку вставил коментарий - что это ВАША СЕТЬ, т.к. у людей сетей может быть несколькои сервер должен обрабатывать их все(или сеть другой конфигурации ну например 10.4.0.0/24)!

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".