Установка сервера 1с предприятия на Linux становится все более и более популярной, особенно радует возможность отказа от не дешевого Microsoft SqlServer. Однако многих отпугивает сложность установки и по-сути отсутствие документации со стороны 1с. В данной статье описывается пошаговая установка и настройка.
В статье используются операционная система Fedora 14 x64, имя сервера 1csrv.mydomain.local, текущий релиз сервера 1с предприятия 8.2.13.205, релиз PostgreSQL сервера 9.0.1.
Если вы хотите использовать Postgresql 8.4.1, то подробное описание сборки и установки можно найти здесь.
1. Сборка и установка Postgresql 9.0
Устанавливаем необходимые для сборки пакеты:
[root@localhost ~]# yum install rpm-build gcc make glibc-devel bison flex python-devel tcl-devel readline-devel zlib-devel openssl-devel krb5-devel e2fsprogs-devel gettext pam-devel openldap-devel icu libicu libicu-devel
Загружаем и устанавливаем исходники postgresql 9.0
[root@localhost ~]# wget http://v8.1c.ru/overview/postgresql_patches/9-0-1/postgresql-9.0.1-1.1C.src.rpm [root@localhost ~]# rpm -i postgresql-9.0.1-1.1C.src.rpm
Исправляем в файле /usr/lib/rpm/macros параметр %_default_patch_fuzz, для чего меняем значение с 0 на 2
%_default_patch_fuzz 2
В файле/root/rpmbuild/SOURCES/postgresql.init меняем
PGENGINE=/usr/pgsql/bin PGDATA=/var/lib/pgsql/data PGLOG=/var/lib/pgsql/pgstartup.log
В файле спецификации /root/rpmbuild/SPECS/postgresql-9.0-1C.spec в нижеуказанных строчках меняем значения postgresql-9.0 на postgresql
525 chkconfig --add postgresql 530 sbin/service postgresql condstop >/dev/null 2>&1 531 chkconfig --del postgresql 537 /sbin/service postgresql condrestart >/dev/null 2>&1
На всякий случай выкладываю исправленные postgresql.init и postgresql-9.0-1C.spec
Добавляем мягкие ссылки на библиотеки icu
[root@localhost ~]# ln -s /usr/lib64/libicuuc.so /usr/local/lib64/libicuuc.so.34 [root@localhost ~]# ln -s /usr/lib64/libicui18n.so /usr/local/lib64/libicui18n.so.34 [root@localhost ~]# ln -s /usr/lib64/libicudata.so /usr/local/lib64/libicudata.so.34
Собираем
[root@localhost ~]# rpmbuild -ba --define 'runselftest 0' /root/rpmbuild/SPECS/postgresql-9.0-1C.spec
Здесь параметр runselftest можно убрать, но тогда сборку пакетов придется делать из под ограниченного пользователя, postgresql не сможет создать тестовую базу из под su. По завершении устанавливаем собранные пакеты:
[root@localhost ~]# rpm -i /root/rpmbuild/RPMS/x86_64/*.rpm
Инициализируем базу данных postgresql:
[root@localhost ~]# su postgres bash-4.1$ /usr/pgsql/bin/initdb -D /var/lib/pgsql/data --locale=ru_RU.UTF-8 The files belonging to this database system will be owned by user "postgres". This user must also own the server process. ......... Success. You can now start the database server using: /usr/pgsql/bin/postgres -D /var/lib/pgsql/data or /usr/pgsql/bin/pg_ctl -D /var/lib/pgsql/data -l logfile start bash-4.1$ exit
Включаем в автозагрузку и запускаем сервис postgresql:
[root@localhost ~]# chkconfig postgresql on [root@localhost ~]# service postgresql start Starting postgresql service: [ OK ]
Добавляем мягкую ссылку на библиотеку libpq.so.5 -она понадобится для работы psql
[root@localhost ~]# ln -s /usr/pgsql/lib/libpq.so.5 /usr/lib64/libpq.so.5
Задаем пароль пользователя postgres:
[root@localhost ~]# su postgres bash-4.1$ psql postgres could not change directory to "/root/rpmbuild/SPECS" psql (9.0.1) Type "help" for help. postgres=# alter user postgres with password '123456'; ALTER ROLE postgres=# \q bash-4.1$ exit exit
На этом установку PostgreSQL-9.0.1 можно считать завершенной.
2. Установка 1c
Отключаем SELinux, для этого открываем файл /etc/sysconfig/selinux и меняем значение параметра SELINUX на disabled. Для применения настроек необходим перезапуск системы.
Очень важно правильно прописать имя хоста в файле /etc/hosts, во время первичной установки это имя будет прописано как имя сервера в файле 1CV8Reg.lst, в случае несоответствия сервер 1с предприятия попросту не запустится и все параменты в этом файле придется прописывать вручную.
127.0.0.1 localhost 1csrv 1csrv.mydomain.local 192.168.1.132 1csrv 1csrv.mydomain.local
Заодно проверяем соответствие параметра HOSTNAME с именем сервера в файле /etc/sysconfig/network
NETWORKING=yes HOSTNAME=1csrv.mydomain.local
Чтобы применить изменения в имени хоста необходимо перезапустить сервис network и перелогиниться для смены переменных среды.
Также имя хоста должно правильно разрешаться со всех машин где установлен 1с или консоль управления.
Берем с диска ИТС или с сайта обновлений установочные пакеты сервера 1с предприятия для Linux и переносим их на наш сервер удобным способом:
1C_Enterprise82-common-8.2.13-205.x86_64.rpm 1C_Enterprise82-server-8.2.13-205.x86_64.rpm 1C_Enterprise82-ws-8.2.13-205.x86_64.rpm 1C_Enterprise82-common-nls-8.2.13-205.x86_64.rpm 1C_Enterprise82-server-nls-8.2.13-205.x86_64.rpm 1C_Enterprise82-ws-nls-8.2.13-205.x86_64.rpm
Устанавливаем вышеуказанные пакеты, в конце установки сервере 1с предприятия запустится автоматически:
[root@localhost 8.2.13.205]# rpm -i 1C_Enterprise82-common-8.2.13-205.x86_64.rpm 1C_Enterprise82-server-8.2.13-205.x86_64.rpm 1C_Enterprise82-ws-8.2.13-205.x86_64.rpm 1C_Enterprise82-common-nls-8.2.13-205.x86_64.rpm 1C_Enterprise82-server-nls-8.2.13-205.x86_64.rpm 1C_Enterprise82-ws-nls-8.2.13-205.x86_64.rpm Starting 1C:Enterprise 8.2 server: OK
Теперь установку можно считать завершенной – подключаемся к серверу консолью управления, создаем базу и работаем.
3. Заключение
Установка сервера 1с предприятия проходит в штатном режиме – главная затычка правильно прописать имя сервера и отключить SELinux. Но когда дело касаться сборки Postgresql от версии к версии натыкаешься на все новые и новые “грабли”, и скажем для новичка даже при наличии достаточно подробного описания установка превращается в одно сплошное гугление, которое отнюдь не всегда заканчивается успехом.
Отсюда появилась идея создать репозиторий с собранным и готовым к установке пакетами PostgreSQL-1С для Fedora/RHEL/CentOS.
Если у вы хотите помочь в развитии данного проекта, особенно в области тестирования или сборки пишите – мои контакты на странице о блоге. Буду рад любой помощи.
Обсудить статью на форуме http://forum.alsigned.ru/viewtopic.php?f=4&t=8.
Проблемы при настройке 1с предприятия http://forum.alsigned.ru/viewforum.php?f=5.
184 Коммент. : “Установка 1С 8.2 и Postgresql 9.0 на Linux”
@Alsigned
[root@1csrv kripta]# service srv1cv82 stop
Stopping 1C:Enterprise 8.2 server: Warning: server not running!
OK
[root@1csrv kripta]# rm -f /home/usr1cv82/.1cv82/1C/1Cv82/srvribrg.lst
[root@1csrv kripta]# rm -f /home/usr1cv82/.1cv82/1C/1Cv82/reg_1541/1CV8Reg.lst
[root@1csrv kripta]# service srv1cv82 start
Starting 1C:Enterprise 8.2 server: OK
[root@1csrv kripta]# netstat -ltnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1363/rpcbind
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1619/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1492/cupsd
tcp 0 0 0.0.0.0:1560 0.0.0.0:* LISTEN 1697/rmngr
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 1652/postmaster
tcp 0 0 0.0.0.0:1561 0.0.0.0:* LISTEN 2834/ragent
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1768/sendmail: acce
tcp 0 0 0.0.0.0:1562 0.0.0.0:* LISTEN 2840/rphost
tcp 0 0 0.0.0.0:1563 0.0.0.0:* LISTEN 2840/rphost
tcp 0 0 0.0.0.0:1540 0.0.0.0:* LISTEN 2834/ragent
tcp 0 0 0.0.0.0:1541 0.0.0.0:* LISTEN 1697/rmngr
tcp 0 0 0.0.0.0:36108 0.0.0.0:* LISTEN 1383/rpc.statd
tcp 0 0 :::111 :::* LISTEN 1363/rpcbind
tcp 0 0 :::22 :::* LISTEN 1619/sshd
tcp 0 0 ::1:631 :::* LISTEN 1492/cupsd
tcp 0 0 :::5432 :::* LISTEN 1652/postmaster
tcp 0 0 :::34952 :::* LISTEN 1383/rpc.statd
@Aleksandr
Ну все сервер 1с у тебя запустился и работает
@Alsigned
Спасибо.
Может подскажите как открыть порты в Fedore (первый опыт на Linux).
С клиентской машины telnet на 1540 не проходит, соответственно и подключиться не могу.
@Aleksandr
Тк сервер локальный, то самый простой вариант – отключить файрволл.
chkconfig iptables off
service iptables stop
@Alsigned
Спасибо.
Все завелось.
Пойду обучаться линуху.
@Alsigned
Поспешил.
При попытке создания базы выдает:
Ошибка соединения с рабочим процессом.
Ошибка получения IP адреса по символическому адресу:
serv_add=/tcp://1csrv.mydomain.local:1562 descr=Ошибка сетевого доступа
Решилось так:
прописал на Win машине в hosts полное имя сервака 1csrv.mydomain.local.
@Alsigned
При попытке создания базы ругается на пароль пользователя.
Пробовал менять пароль для postgres, перезапускал сервис, ничего не изменилось.
Кроме того, попытался перезагрузить сервак, после чего вернулась проблема с запуском сервера 1С, пришлось опять “пересоздавать конфигурашку” и отключать файрвол, хотя все это уже делалось и chkconfig iptables off выполнялось.
@Aleksandr
Пароль меняешь через alter user postgres with password ’123456′?
Что в файле /var/lib/pgsql/data/pg_hba.conf?
По поводу сброса настроек 1с – что-то мне подсказывает что здесь поработал NetworkManager
chkconfig –list
Добрый день, @Alsigned
Да, пароль меняю именно так.
/var/lib/pgsql/data/pg_hba.conf
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# “local” is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
#host all all 127.0.0.1/32 trust
# IPv6 local connections:
#host all all ::1/128 trust
host all all 0.0.0.0/0 md5
@Alsigned
Предшествующие проблемки решил.
Подскажите какой именно драйвер ключа нужно установить для сервера предпредприятия х64 и как это правильно сделать.
Пробовал скачивать и ставить с http://www3.safenet-inc.com/support/hasp-srm/enduser.aspx#Runtime, но на подключении 13 пользователя начинает ругаться на отсутствие ключа.
CentOS 6.0
http://v8.1c.ru/overview/postgresql_patches/9-0-3/postgresql-9.0.3-3.1C.src.rpm
Error: install: cannot stat `/usr/local/lib64/libicuuc.so.46′: No such file or directory
Compililisia s takimi ssilkami
ln -s /usr/lib64/libicuuc.so.42.1 /usr/local/lib64/libicuuc.so.46
ln -s /usr/lib64/libicui18n.so.42.1 /usr/local/lib64/libicui18n.so.46
ln -s /usr/lib64/libicuuc.so.42.1 /usr/local/lib64/libicudata.so.46
rpm -i /root/rpmbuild/RPMS/x86_64/*.rpm
error: unpacking of archive failed on file /usr/pgsql/lib/libicudata.so.46;4e51d6ef: cpio: Digest mismatch
Error ((
Собрал, все запустилось, ошибок нет.
Запускаю с ВИНДЫ клиента, создаю базу, получаю следущее:
«Ошибка при создании базы. Ошибка при выполнении операйии с инф. базой.
Ошибка СУБД: DATABASE не пригоден для использованияю»
Запускаю pgAdmin, показывает, что база создана!
Дистрибутив PostgreSQL честно тянул с http://v8.1c.ru/overview/postgresql_patches/9-0-3/postgresql-9.0.3-3.1C.src.rpm дистрибутив сервера предприятия 8.2.13-219. ОС CentOS 6.0 64х битная.
Нет все же 1С как была балалайкой так и осталась. По нормальному сделать её не могут ну ни как.
[root@kki-postgreesql Desktop]# psql -U postgres -c “SELECT version();”
version
——————————————————————————–
———————————–
PostgreSQL 9.0.3 on x86_64-unknown-linux-gnu, compiled by GCC gcc (GCC) 4.4.4 2
0100726 (Red Hat 4.4.4-13), 64-bit
(1 row)
[root@kki-postgreesql Desktop]# rpm -qa | grep postgresql
postgresql-test-9.0.3-3.1C.x86_64
postgresql-9.0.3-3.1C.x86_64
postgresql-docs-9.0.3-3.1C.x86_64
postgresql-libs-9.0.3-3.1C.x86_64
postgresql-devel-9.0.3-3.1C.x86_64
postgresql-libs-8.4.7-1.el6_0.1.x86_64
postgresql-server-9.0.3-3.1C.x86_64
[root@kki-postgreesql Desktop]#
Я прошу прощения за некоторый флуд. Пишу по мере разборок с платформой.
ERROR: type “mvarchar” does not exist at character 31 это то что выскакивает перед тем как БД создаётся.
Насколько я понял из всех форумов, которые лопатил что mvarchar это тип данных созданный в postgresql специально под нужды 1с и именно из-за него дистрибутив из коробки не работает с 1с. Но я то качал 9.0.3 с сайта для которого написано что он уже пропатчен.
Привет, @ar2d2
PostgreSQL-9.0.3-3.1C собирается с пол пинка, без сучка и задоринки, особенно в сравнении с предыдущими версиями 9.0.1 и 8.4. Мне честно говоря даже не хочется писать статью на эту тему
Что касается твоей проблемы – непонятно откуда у тебя взялся postgresql-libs-8.4.7-1.el6_0.1.x86_64 и где установленный пакет postgresql-contrib отсутствие которого является причиной обоих ошибок “ERROR: type «mvarchar» does not exist at character 31″ и “Ошибка СУБД: DATABASE не пригоден для использования”. Что находится в директории /root/rpmbuild/RPMS/x86_64 из которой все устанавливается?
CentOS 5.6 x64
rpm -i postgresql-9.0.1-1.1C.src.rpm ничего не выдает
[root@localhost ~]# rpm -i postgresql-9.0.1-1.1C.src.rpm
[root@localhost ~]#
При попытке установить пакет через графическую программу “установка пакетов” выдает сначала ошибку:
“Не удается установить исходные пакеты”
Потом:
“Для установки не был задан ни один пакет”
В ОС после установки не изменял ничего, все делал по вышеуказанной инструкции.
Пробовал установить другие rpm пакеты – все ок, устанавливаются.
Подскажите, в чем может быть проблема?
Привет, @Cliff
Комманда rpm -i ничего и не должна выводить в случае если во время установки не было обнаружно ошибок. Если нужен более ифрмативный вывод можно использовать:
rpm -ihvv postgresql-9.0.1-1.1C.src.rpm
Стоит обратить внимание что в статье используется Fedora 14 и путь установки исходников ~/rpmbuild, когда в CentOS 5.6 этот путь будет /usr/src/redhat. Таким образом установленные исходники стоит искать именно там.
Все победил. Завтра лог выложу ибо скриптом писал все с консоли. Мож кому пригодится ибо некоторые отличия под цент ос все же есть. Но победил я странно. Я изначально при установке выбрал что операционка должна быть русской. После этого все встало как влитое. Помучался с ключем, но даже сам не понял как, но заставил хасп работать. Аладдин так всех любит что дрова 32 бит онли. Теперь есть другая мега большая проблема может кто подскажет. А то весь мой труд на смарку и здравствуй виндовс сервер и виндовс сиквел 2005. А именно:
1с теперь не подхватывает аутентификацию операционной системы. Видит только своих пользователей. В конфигураторе даёт выбрать и настроить права пользователю ОС, но не заходит под ним. Предлагает выбрать только своих. А смысл тогда переходить на бесплатный постгри с такими вилами. Может как то можно решить эту проблемку.
Привет, @ar2d2
Если у тебя есть Windows Server и SQL 2005, зачем тогда переводить все на linux? Как показывает практика быстрее и стабильнее сервер 1с предприятия от перехода на linux работать не будет, и уж точно не увиличится производительность от перехода с MS SQL2005 на PostgreSQL. Другое дело когда софт не лицензионный, но здесь нужно прикидывать объем трудозатрат на установку-обслуживание и объем возможных трудностей в эксплуатации, не редко купить получается дешевле чем внедрить что-то из OpenSourсe
Что касается Windows-аутентификации – сервер 1с предприятия сам ее не подхватит, нужно настроить kerberos аутентификацию для пользователея usr1cv82 в домене Windows при помощи keytab. Полученный при этом usr1cv82.keytab бросить в директорию /opt/1C/v8.2/x86_64(i386) и дать пользователю usr1cv82 права на чтение. Среди заказчиков на установку сервера 1с предприятия под linux аутенитификая пользователей через AD теребование крайне редкое – приближенно 1 из 30, таким образом в большинстве случаев люди обходятся встроенной аутентификацией 1с.
кошмар на виртуалки пробую скомпилить постгрю 4 часа 20 минут компилилась и оказалось что ссылки не те =(
Привет, @Денис
PostgeSQL на Core 2 собирается за 3 минуты, а за 4 часа можно всю систему пересобрать.
Может у тебя виртуалка подтормаживает, например qemu-kvm без аппаратной виртуализации работает
У меня виртуалка на atom525 работает и на неё гиг памяти, я контроллер по тупости поставил ide а не sata вот и тупило,сейчас вроде по ловчей
Значит говорите уступает в производительность секвелу?
А вальсирование с конфигами не помогает?
@Денис
По скорости проведения одной и той же базы на приближенно равных железках MS SQL выигрывает процентов на 20-30. И никакой брейк с конфигами не помогает
опять теперь непонятно не найден фаил /usr/local/lib/libicuuc.so.46 ссылка есть в папке /usr/local/lib/libicuuc.so.46 и ссылается на /usr/lib/libicuuc.so конечный фаил тоже есть
@Денис
Какая у тебя ОС? Какую версию PostgreSQL ты собираешь? Судя по версии библиотек это 9.0.3 хотя может разное быть
да postresql 9.0.3 с сайта 1с система centos 6
из имеющихся библиотек только 42.1 лежат
@Денис
Если система 32-битная, то чудес-небывает:
ln -s /usr/lib/libicui18n.so /usr/local/lib/libicui18n.so.46
ln -s /usr/lib/libicudata.so usr/local/lib/libicudata.so.46
ln -s /usr/lib/libicuuc.so /usr/local/lib/libicuuc.so.46
Это должно работать.
Нет чудо не свершилось, пробую указать так
ln -s /usr/lib/libicui18n.so /usr/local/lib/libicui18n.so.42.1
ln -s /usr/lib/libicudata.so usr/local/lib/libicudata.so.42.1
ln -s /usr/lib/libicuuc.so /usr/local/lib/libicuuc.so.42.1
сработало
Alsigned, большое спасибо, все заработало .
Установил на CentOS 5.6 x64 Postgre 9.0.3
Отличия от руководства:
1) исходники в /usr/src/redhat
2) мягкие ссылки на so.46
3) postgresql.init и postgresql-9.0-1C.spec менять не нужно, в 9.0.3 они уже верные
А да, еще при установке одного из пакетов постгри поругалось на контрольные суммы, так что этот пакет пришлось устанавливать с –nomd5
Здравствуй, Alsigned.
1С работает, но возникла проблема с архивированием.
CentOS 5.5, Postgres 903 пропатчений 1С.
Выполняю команду:
# pg_dump -Fc > .dump
Все отлично – дамп создан. Теперь восстанавливаю базу:
# pg_restore -d .dump
команда отрабатывет но на екран выводнятся сообщение об ошибке по каждой таблице и соответсвенно база остается в исходном состоянии ( не обновляется ).
Как вернуть базу к архивному состоянию ?
пропали названия баз в командах ! Повторяю команды :
# pg_dump -Fc base > base.dump
# pg_restore -d base base.dump
Здравствуй, Alsigned!
Поставил на OpenSuse 11.1 – 8Gb оперативы, 15 пользователей. Все работает, большое спасибо, но примерно 1 раз в полчаса возникает конфликт блокировок. Пока проблему решил перезапуском процесса ragent через crontab 1 раз в полчаса. Какие мысли?
@Peka
При восстановлении базы PostreeSQL наталкивается на уже существующие в базе данных записи и выводит ошибку, что определенная структура уже существует:
Делаем резервную копию базы:
Восстанавливаем (сначала удаляем basa2, создаем пустую и заливаем данные)
Вот
Здравствуй, Alsigned.
Благодарю за подсказку, но такого востановления не очень хочется.;)
bash-3.2$ pg_dump -Fc Buh > /tmp/Buh.sql
could not change directory to “/root”
bash-3.2$ dropdb Buh
could not change directory to “/root”
bash-3.2$ createdb Buh
could not change directory to “/root”
bash-3.2$ pg_restore -d Buh /tmp/Buh.sql
could not change directory to “/root”
pg_restore: [archiver (db)] Error while PROCESSING TOC:
pg_restore: [archiver (db)] Error from TOC entry 192; 1255 17404 FUNCTION vassn(boolean) postgres
pg_restore: [archiver (db)] could not execute query: ERROR: function “vassn” already exists with same argument types
Command was: CREATE FUNCTION vassn(boolean) RETURNS integer
LANGUAGE plpgsql
AS $_$
DECLARE bexpr alias for $1;
BEGIN
if bexpr
th…
WARNING: errors ignored on restore: 1
а кто сталкивался с тем что posqtgres от 1С использует только одно ядро? может подскажите куда копать?
Привет, Peka.
Если во время резервного копирования с базой никто не работает, то восстановление не должно вызывать проблема. Разве что что-нить в конфигурации не так.
Если можешь выложи базу, так будет проще разобраться.
Привет, admin
Это одна из особенностей PosgreSQL на одно соединение использовать одно ядро
Сколько у тебя процессов сервера 1с и сколько пользователей работают с базой?
Как ты определяешь что PostgreSQL работает на одном ядре?
Alsigned, спасибо за ответ.
Видимо разработчики 1С не утрудили себя приспособить 1С к этому. Хотя я уверен что это не сложно.
В повседневной работе жалоб нет, проблемы возникают при закрытии месяца (один клиент = одно соединение = PG использует один процессор).
Определил очень наглядно htop’ом. (а ввод/вывод был вообще не занят).
http://www.opennet.ru/openforum/vsluhforumID3/80145.html#17
Уважаемые, читатели.
Комментариев к статьям стало слишком много и что бы их немножко систематизировать переношу обсуждение в мини-форум.
Обсуждение и дополнение непосредственно статьи http://forum.alsigned.ru/viewtopic.php?f=4&t=8
Если у вас трудности в настройке, установке или эксплуатации 1с предприятия – вам сюда http://forum.alsigned.ru/viewforum.php?f=5, и не стесняйтесь создавать новую тему.
Заранее спасибо за понимание.
С уважением, Alsigned.