Дано:
Сервер с установленной OS CentOS 6.4 x64
Задача:
Установить сервер 1с 8.3 x64, установить и настроить СУБД PostgreSQL 9.1.2, установить HASP ключ и организовать доступ к 1с 8 через WEB интерфейс.
Решение:
Установка 1с 8.3
Перед установкой новой версии 1с 8, необходимо удалить предыдущую версию 1с 8, если она установлена.
Команда для удаления всех установленных пакетов:
# rpm -erpm —qa|grep 1C_
Или ищем все пакеты 1С 8 и удаляем по одному:
# rpm -qa | grep -i 1C_
Порядок установки пакетов следующий:
# rpm -ihv 1C_Enterprise83-common-8.3.3-687.x86_64.rpm
# rpm -ihv 1C_Enterprise83-common-nls-8.3.3-687.x86_64.rpm
# rpm -ihv 1C_Enterprise83-server-8.3.3-687.x86_64.rpm
# rpm -ihv 1C_Enterprise83-server-nls-8.3.3-687.x86_64.rpm
# rpm -ihv 1C_Enterprise83-ws-8.3.3-687.x86_64.rpm
# rpm -ihv 1C_Enterprise83-ws-nls-8.3.3-687.x86_64.rpm
Настроим запуск ragent, как демон.
# /opt/1C/v8.3/x86_64/ragent -daemon
# /etc/init.d/srv1cv83 start
Если необходимо будет изменить настройки портов запуска ragent (к примеру, для создания кластера), то для этого надо будет отредактировать файл /etc/sysconfig/srv1cv83
В Windows изменение портов производится в реестре.
Просмотреть состояние ragent
# pgrep –f –l ragent
Посмотреть порты, которые слушает ragent:
# netstat -lnp | grep ragent
*************************************
Если после старта 1с 8.3
# service srv1cv83 start
или
# /etc/init.d/srv1cv83 start
у вас возникнет ошибка
Starting 1C:Enterprise 8.2 server: Error: service failed to start!
FAILED
То, первое на что надо обратить внимание, это посмотреть журнал ошибок системы:
# cat /var/log/messages
Если в журнале ничего не будет сказано, то просто попробуйте перегрузить систему.
Иногда может SELinux блокировать 1с 8, тогда следующая команда как раз и разрешает доступ:
# chcon -t textrel_shlib_t ‘/opt/1C/v8.3/ x86_64/backbas.so’
Или можно вообще SELinux отключить. Открываем для редактирования файл /etc/sysconfig/selinux и задаем значение:
SELINUX=disabled
Перегружаемся! #shutdown –r now
*************************************
Ставим отсутствующие TTF-шрифты:
Создадим директорию ~/rpmbuild
# mkdir ~/rpmbuild
Устанавливаем шрифты:
# yum install rpm-build cabextract
# wget http://corefonts.sourceforge.net/msttcorefonts-2.5-1.spec
# rpmbuild -bb msttcorefonts-2.5-1.spec
# rpm -ivh ~/rpmbuild/RPMS/noarch/msttcorefonts-2.5-1.noarch.rpm
Следующий шаг, это надо будет открыть порты.
Порты открываем следующие: 1540,1541,1560:1591 и 475 для получения лицензии из сети, если ключ стоит на другой машине.
1 2 3 4 5 |
# iptables -I INPUT -p tcp --dport 1540:1541 -m state --state NEW -j ACCEPT # iptables -I INPUT -p tcp --dport 1560:1591 -m state --state NEW -j ACCEPT # iptables -I INPUT -p tcp|udp --dport 475 -m state --state NEW -j ACCEPT |
Сохраняем настройки:
# service iptables save
Ошибки
- При запуске службы 1с8 может возникнуть ошибка pid file existed on server start. it can mean that last run failed. При этом сам сервер запустится, но при попытки подключиться к нему, через консоль администрирования, произойдет отказ в подключении, и остановиться служба Ragent. Для решения данной проблемы, надо почистить две папки /tmp и /home/user1cv8
- Ошибка загрузки библиотеки libWand.so. Для решения этой проблемы надо установить пакет ImageMagick.i686:
# yum install ImageMagick.i686
После этого выполняем поиск:
# find /usr/lib/ -name “libMagickWand.so*” -print
Поиск вернет что-то вроде этого
/usr/lib/libMagickWand.so.2.0.0
/usr/lib/libMagickWand.so.2
Далее необходимо создать символическую ссылку на один из этих файлов
# ln -s -T /usr/lib/libMagickWand.so.2.0.0 /usr/lib/libWand.so
После этих операций, 1с 8.3 должна запуститься.
Сборка и настройка PostgreSQL 9.1.2
Устанавливаем недостающие пакеты:
# yum install icu libicu libicu-devel rpm-build wget glibc-devel bison flex readline-devel zlib-devel openssl-devel pam-devel gettext gcc make perl-core python-devel krb5-devel libxml2-devel libxslt-devel openldap-devel e2fsprogs-devel tcl-devel
Скачиваем архив исходных текстов PostgreSQL 9.1 для 1С:
# wget http://v8.1c.ru/overview/postgresql_patches/9-1-2/postgresql91-9.1.2-1.1C.src.rpm
Устанавливаем полученный файл:
# rpm –ihv postgresql91-9.1.2-1.1C.src.rpm
Открываем файл /usr/lib/rpm/macros и вносим изменения в строку:
“%_default_patch_fuzz 0″ вместо 0 пишем 2
Создаем символические ссылки:
# ln -s /usr/lib64/libicuuc.so /usr/local/lib64/libicuuc.so.46
# ln -s /usr/lib64/libicudata.so /usr/local/lib64/libicudata.so.46
# ln -s /usr/lib64/libicui18n.so /usr/local/lib64/libicui18n.so.46
Запускаем сборку:
# rpmbuild -bb –define ‘runselftest 0’ ~/rpmbuild/SPECS/postgresql-9.1.spec
Устанавливаем полученные файлы:
# rpm -ivh ~/rpmbuild/RPMS/x86_64/postgresql91-*.rpm
При установке пакета postgresql91-contrib-9.1.2-1.1C.x86_64 возникает ошибка.
ошибка: распаковка архива не удалась на файле /usr/pgsql/lib/libicudata.so.46;4e9327cc: cpio: Digest mismatch
ошибка: postgresql91-contrib-9.1.2-1.1C.x86_64: install failed
Решение: Запускаем rpm без проверки digest и md5
rpm –nodigest –nomd5 -ihv postgresql91-contrib-9.1.2-1.1C.x86_64
Инициализируем базу данных:
# su postgres -c ‘/usr/pgsql-9.1/bin/initdb -D /var/lib/pgsql/9.1/data –locale=ru_RU.UTF-8’
В файле /var/lib/pgsql/9.1/data/postgresql.conf расскомментируем строчку
#port = 5432
Добавим в автозапуск и запустим службу PostgreSQL:
# chkconfig postgresql-9.1 on
# service postgresql-9.1 start
В файл /etc/sysconfig/iptables добавим строку как раз перед -A INPUT -j REJECT:
-A INPUT -m state –state NEW -m tcp -p tcp –dport 5432 -j ACCEPT
Задаем пароль для суперпользователя «postgres» командой:
# psql -U postgres -c “ALTER USER postgres PASSWORD ‘mypassword'”
Перезапустим iptables
# service iptables restart
В файле /var/lib64/pgsql/9.1/data/postgresql.conf — настройки сервера. Нужно указать параметры
default_with_oid = on
Если вы хотите включить «Автоматическую сборку мусора (Automatic Vacuuming)» в БД (что полезно для слабонагруженных серверов) — то установите такие параметры:
track_counts = on
autovacuum = on
Базы хранятся /var/lib/pgsql/9.1/data/base (путь может отличаться, 9.1 может отсутствовать)
Установка ключа защиты HASP
Для работы веб клиентов с 1с8, понадобится установленный на сервере USB ключ.
Поэтому, вставляем USB ключ в компьютер, и скачиваем драйвера под hasp:
# wget http://download.etersoft.ru/pub/Etersoft/HASP/last/CentOS/6/haspd-3.3-eter5scientific.i586.rpm
# wget http://download.etersoft.ru/pub/Etersoft/HASP/last/CentOS/6/haspd-modules-3.3-eter5scientific.i586.rpm
Производим установку драйверов. В процессе установки могут возникнуть ошибки в плане отсутствия некоторых библиотек для работы с USB. Поэтому перед установкой поставим все необходимые библиотеки:
# yum install libusb.i686 libusb.x86_64 libusb1.i686 libusb1.x86_64
Устанавливаем драйвера:
# rpm -ihv haspd-3.3-eter5scientific.i586.rpm haspd-modules-3.3-eter5scientific.i586.rpm
Настройка доступа через WEB
В качестве веб-сервера будем использовать apache.
Переходим в каталог 1с 8:
# cd /opt/1C/v8.3/x86_64
Запускаем скрипт публикации веб доступа к базе:
# ./webinst -apache22 -wsdir mybase -dir ‘/var/www/html/mysite/’ -connStr ‘Srvr=”mycomp.com”;Ref=”mybase”‘ -confPath /etc/httpd/conf/httpd.conf
Srvr – имя компьютера в сети
–wsdir – имя алиаса для соединения с базой в браузере (http://адрес.сервера/mysite)
–dir – директория где будут располагаться файлы web-интерфейса 1с (точнее говоря один файл default.vrd)
–connStr – строка соединения с базой 1с предприятия, в которой Srvr – адрес сервера 1с предприятия, а Ref – имя базы.
–confPath – расположение конфигурационного файла web-сервера apache
Устанавливаем права для apache:
# chown apache:apache /var/www/html/mysite/default.vrd
Перезапускаем apache
# service httpd restart
После этого доступ к веб версии 1с8 будет доступен по адресу http://адрес.сервера/mysite
Примечание по лицензиям:
Если у вас HASP ключ сетевой, и установлен на другой машине, то в момент подключения клиента, будет появляться ошибка, что не найдена лицензия. Для того, чтобы сервер предприятия, установленный на Linux машине, мог выдать сетевую лицензию, необходимо сделать следующее.
Создаем папку conf в /opt/1C/v8.3/x86_64:
#mkdir /opt/1C/v8.3/x86_64/conf
Далее, в эту папку необходимо скопировать файл nethasp.ini, взять его можно с клиентской машине, где установлен 1с клиент, или просто создать его. В этом файле, необходимо расскоментировать, если файл был скопирован с клиентской машины, или просто внести следующие строки:
[NH_COMMON]
NH_TCPIP = Enabled ; Use the TCP/IP protocol
[NH_TCPIP]
NH_SERVER_ADDR = IP компьютера ; IP addresses of all the NetHASP
NH_PORT_NUMBER = 475 ; Set the TCP/IP port number. This is
NH_TCPIP_METHOD = TCP ; Send a TCP packet or UDP packet
NH_USE_BROADCAST = Disabled ; Use TCPI/IP Broadcast mechanism
Может еще потребуется изменить права на файл:
#chown usr1cv8:grp1cv8 /opt/1C/v8.3/x86_64/conf/nethasp.ini