среда, 28 декабря 2011 г.

Установка PC-Banking под Linux

    Устанавливаем пакеты Sun Java. Для большинства людей и целей хватит следующих пакетов:sun-java6-jresun-java6-pluginsun-java6-fonts. Ставим: sudo apt-get install sun-java6-jre sun-java6-pluginsudo apt-get install sun-java6-fonts. Если же вам нужна Java development kit, тогда нужно ещё добавить sun-java6-jdksun-java6-jresun-java6-pluginsun-java6-fontssun-java6-jdksudo apt-get install sun-java6-jre sun-java6-plugin sun-java6-jdksudo apt-get install sun-java6-fonts.Теперь скажем системе использовать Sun Java JRE по умолчанию: sudo update-java-alternatives --set java-6-sun. Далее необходимо перезагрузить браузер для использования плагина sun-java6-plugin.Если вы хотите проверить вашу версию java – вы можете это сделать вот так:

java -version
Установка клиента

1. Под root создать в /usr/local каталог ibank с правами:
- для запуска под несколькими пользователями изменить группу, на группу
пользователей и выставить права rwx rwx r - -
- для запуска под одним пользователем изменить владельца и группу и выставить
права rwx- - - - - -
2. Скопировать файл pc-banking-linux-i586.tar.bz2 в /usr/local/ibank
3. Распаковать архив командой tar –xjf ./ pc-banking-linux-i586.tar.bz2
4. Изменить файл iBank2 PC.sh:

#!/bin/sh
echo ===========================
echo Starting PC_Banking...
echo ===========================
JAVA_HOME=/usr/lib/jvm/java-6-sun
JAVACMD=$JAVA_HOME/bin/java
export LANG=ru_RU.CP1251
echo Using JAVA_HOME: $JAVA_HOME
$JAVACMD -Xmx256m -cp launcher.jar com.bifit.launcher.Launcher


Обратите внимание на переменную JAVA_HOME – здесь указывается путь к
виртуальной машине JAVA. Также, для верного отображения данных необходимо
запускать программу в локали ru_RU.CP1251. В последней строке указывается
максимально допустимый объем оперативной памяти, выделяемой для программы.
Рекомендуется ставить 50% от имеющейся.
Если у вас отсутствует локаль ru_RU.CP1251 (в выводе команды locale –a
нет такой записи), то необходимо установить её командой:

localedef –с –i ru_RU –f CP1251 ru_RU.CP1251

5. Для удобства запуска сделайте ярлык.

Установка драйверов HP P1102 Ubuntu

Вариант №1 (установка через утилиту foo2zjs):

sudo wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz
sudo tar zxf foo2zjs.tar.gz
cd foo2zjs
make
sudo make install
system-config-printer

Далее устанавливаем локально принтер. Сетевой же устанавливаем, как принтер интернет печати, например:
192.168.10.20:631/printers/HP1102

Вариант №2 (установка через утилиту HPLip):

Если в системе установлен старый пакет, то удаляем его:
sudo apt-get purge hplip
Качаем HPLIP 3.11.1 с сайта http://prdownloads.sourceforge.net/hplip/hplip-3.11.1.run
В терминале запускаем sh hplip-3.11.1.run
sudo reboot
в терминале hp-setup --> устанавливаем принтер и работаем.

Настройка x11vnc. Запуск при старте системы Ubuntu

  1.     sudo apt-get install x11vnc
  2.     sudo mcedit /etc/gdm/init/Default перед "exit0" добавляем строку: /usr/bin/x11vnc -dontdisconnect -notruecolor -noxfixes -shared -forever -rfbport 5900 -bg -o /var/log/x11vnc.log
  3.     Эту же строку добавляем в конце конфига: sudo mcedit /etc/gdm/Presession/Default
  4.     sudo mcedit /etc/gdm/gdm.conf-custom также в конец добавить: KillInitClients=true
  5.     sudo reboot

Установка PostgreSQL 9.0.1 + 1С 8.2 Server + 1C 8.2 (клиент под wine 1.2).

На сайте http://v8.1c.ru/overview/postgres_patches_notes.htm есть три пача 1c_FULL_90-0.19.patch, postgresql-1c-9.0.1.patch, applock-1c-9.0.1.patch. Мои попытки пропатчить ними PostgreSQL не принесли результата. На какой PostgreSQL я не пытался их наложить без внесения изменений в исходники он либо не собирается, либо не работает с 1С. Поэтому для корректной установки PostgreSQL я использовал уже исправленные исходники PostgreSQL 9.0.1 для 1С, любезно предоставленные Alsigned http://www.alsigned.ru/?dl_name=postgresql-9.0.1-1C.tar.gz (спасибо огромное ему за труд).

В данной статье описывается сборка и установка PostgreSQL-9.0.1 для работы с сервером 1С Предприятия 8.2 (платформа 8.2.14,540), используемая операционная система Ubuntu 10.04 x86.

1. Установка PostgreSQL 9.0.1

Устанавливаем необходимые для сборки пакеты:
# apt-get install libreadline-dev libicu-dev patch zlib1g-dev

Переходим в директорию /usr/local/src, скачиваем и распаковываем исходники:
# cd /usr/local/src
# wget http://www.alsigned.ru/?dl_name=postgresql-9.0.1-1C.tar.gz -O postgresql-9.0.1.tar.gz
# tar xzvf postgresql-9.0.1.tar.gz

Переходим в каталог с исходниками, конфигурируем, собираем и устанавливаем:
# cd postgresql-9.0.1
# ./configure --disable-integer-datetimes --prefix=/usr
# make && make install

Переходим в каталог contrib, собираем и устанавливаем:
# cd contrib
# make && make install

2. Настройка PostgreSQL 9.0.1

Создаем пользователя и группу postgres:
# groupadd -r postgres
# useradd -g postgres -r -d /mnt/base/utp -s /bin/bash postgres

Создаем директорию для PostgreSQL
# mkdir /mnt/base/utp
# chown postgres:postgres /mnt/base/utp

Генерируем локали en_US и ru_RU.UTF-8 необходимые для работы PostgreSQL с 1с:
# locale-gen en_US ru_RU.UTF-8

Инициализируем базу и установим пароль для postgres. На 32-битной машине может потребоваться сделать

# echo 134217728 >/proc/sys/kernel/shmmax
# echo 134217728 >/proc/sys/kernel/shmall

И чтобы руками их постоянно не менять,впишем их значения в sysctl.conf

# echo kernel.shmmax=134217728 >>/etc/sysctl.conf
# echo kernel.shmall=134217728 >>/etc/sysctl.conf

Инициализируем БД:
# su postgres
postgres@pgsrv$ initdb -D /mnt/base/utp --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.

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".
. . . . .
. . . . .
Success. You can now start the database server using:
postgres -D /mnt/base
or
pg_ctl -D /mnt/base/utp -l logfile start

Запускаем PostgreSQL:
postgres@pgsrv$ pg_ctl -D /mnt/base/utp start

server starting

Задаем пароль пользователя БД:
postgres@pgsrv$ psql -U postgres -c "alter user postgres with password 'наш_пароль';"
postgres@pgsrv$ exit

Делаем скрипт для запуска-остановки, для этого создаем файл /etc/init.d/postgresql следующего содержания:

#!/bin/sh
# Скрипт запуска/остановки PostgreSQL-9.0-1C
DATADIR=/mnt/base/utp
PGCTL=/usr/bin/pg_ctl
PGUSER=postgres
case $1 in
start)
sudo -u $PGUSER -H $PGCTL -D $DATADIR start
;;
stop)
sudo -u $PGUSER -H $PGCTL -D $DATADIR stop
;;
restart)
sudo -u $PGUSER -H $PGCTL -D $DATADIR stop
sudo -u $PGUSER -H $PGCTL -D $DATADIR start
;;
*)
echo start|stop|restart
return 1;
;;
esac

Даем разрешения на запуск и добавляем сервис в автозапуск:
# chmod u+x /etc/init.d/postgresql
# update-rc.d postgresql defaults

Теперь необязательное редактирование postgresql.conf . Значения , устанавливаемые в этом файле зависят от многих факторов и собственно служат для настройки оптимальной производительности.

# nano /mnt/base/utp/postgresql.conf

listen_addresses = ‘127.0.0.1 //если соединения с базой будут только с локального хоста, то надежнее сделать именно так, чтобы порт 5432 слушался только на адресе 127.0.0.1 (в нашем случае оставляем по умолчанию '*' , т.к. соединения с базой будут не локально!!!).

fsync = off //значение on сильно снижает производительность, поскольку все транзакции непосредственно пишутся на жесткий диск без использования кэширования, но повышается надежность. Значение off есть смысл устанавливать, когда установлены надежные диски и надежный же UPS .

effective_cache_size = 4096MB //На сервере 8Гб ОЗУ, этот параметр надо выставить в половину ОЗУ, как рекомендует 1С для постгреса 8.2

work_mem = 16MB //Насколько я понимаю, этот параметр зависит от среднего размера таблиц, в любом случае, для тонкой настройки надо тестировать на конкретном сервере с конкретной базой (оставляем по умолчанию).

Перезапускаем службу и проверяем, запустился ли PostgreSQL:
# service postgresql restart

Вы должны получить примерно следующее сообщение:
Stopping postgresql service: DONE
Starting postgresql service: DONE

# netstat -atn|grep 5432
Если в ответ получился, вот такой выхлоп, то всё нормально:
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN
или
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN // если Вы в файле postgresql.conf указали слушать только локальные подключения.

На этом этапе установка PostgreSQL завершена. Приходим к установке сервера 1C 8.2.

3. Установка сервера 1cv82

Здесь не должно возникнуть сложностей с установкой, если у вас 10.04 (на 11.04 я безуспешно потратил 2 дня, но об этом позже). Я скачал deb-пакеты версии 8.2.14-540_i386 в каталог /usr/local/srv1c. Вот они:
1c-enterprise82-common-nls_8.2.14-540_i386.deb
1c-enterprise82-common_8.2.14-540_i386.deb
1c-enterprise82-crs-nls_8.2.14-540_i386.deb
1c-enterprise82-crs_8.2.14-540_i386.deb
1c-enterprise82-server-nls_8.2.14-540_i386.deb
1c-enterprise82-server_8.2.14-540_i386.deb
1c-enterprise82-ws-nls_8.2.14-540_i386.deb
1c-enterprise82-ws_8.2.14-540_i386.deb

По сути нам нужны лишь 2 пакета 1c-enterprise82-server_8.2.14-540_i386.deb и 1c-enterprise82-common_8.2.14-540_i386.deb , т.к. пакеты «-nls» - это языковая поддержка. Нам она не нужна, русский язык есть в основной поставке. Пакет «-ws» - это веб-сервисы. Но они есть не просят, поэтому на перспективу я их оставил.
dpkg -i 1c*.deb

Программа устанавливается по умолчанию в каталог /opt/1C/v8.2/i386/

Устанавливаем дополнительные пакеты, которые необходимы для нормальной работы сервера:
# apt-get install imagemagick ttf-mscorefonts-installer libgsf-1-114 texlive-base unixodbc

Далее переходим в каталог утилиты и запускаем config_server:
# cd /opt/1C/v8.2/i386/utils
./config_server

Если утилита немного задумалась и не произошло никакого выхлопа в ответ, то это значит, что сервер 1С настроен правильно и больше ничего не нужно для нормального функционирования.

Даем пользователям 1С сервера права на запись:
# chown -R usr1cv82:grp1cv82 /opt/1C

Добавляем сервер 1С в автозапуск:
# update-rc.d srv1cv82 defaults

В ответ Вы должны получить следующий выхлоп:

Adding system startup for /etc/init.d/srv1cv82 ...
/etc/rc0.d/K20srv1cv82 -> ../init.d/srv1cv82
/etc/rc1.d/K20srv1cv82 -> ../init.d/srv1cv82
/etc/rc6.d/K20srv1cv82 -> ../init.d/srv1cv82
/etc/rc2.d/K20srv1cv82 -> ../init.d/srv1cv82
/etc/rc3.d/K20srv1cv82 -> ../init.d/srv1cv82
/etc/rc4.d/K20srv1cv82 -> ../init.d/srv1cv82
/etc/rc5.d/K20srv1cv82 -> ../init.d/srv1cv82

Перезагружаем сервер. Проверяем запускаются ли при старте системы постгрес и сервер 1С:
netstat -atn |grep 0.0.0.0:15

tcp 0 0 0.0.0.0:1540 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:1541 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:1560 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:1561 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:1562 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:1564 0.0.0.0:* LISTEN

Если в ответ Вы видите такой список портов, то всё отлично (а если, нет портов 1541 или других, то не запустился процесс rphost и это не есть хорошо).

Так же можно для профилактики проверить, все ли процессы сервера запущены нормально:
ps aux|grep 1c

От имени пользователя usr1cv82 должно быть запущено три процесса: ragent, rmngr и rphost. После имен процессов идут номера портов, на которых они работают:

usr1cv82 1217 0.0 0.1 111784 15432 ? Ssl Nov18 1:10 /opt/1C/v8.2/i386/ragent -daemon
usr1cv82 1220 0.4 0.3 262420 32660 ? Sl Nov18 25:54 /opt/1C/v8.2/i386/rmngr -port 1541 -range 1560:1591
usr1cv82 4034 6.5 4.5 651928 375684 ? Sl Nov20 184:46 /opt/1C/v8.2/i386/rphost -range 1560:1591 -reghost titan -regport 1541 -pid 27e017b0-11f0-11e1-7f8e-3c4a92f1a084

Именно здесь у меня и вознгикли проблемы при установке 1С сервера на систему 11.04. Упорно не хотел стартовать rphost и открывать порт 1541, который необходим для удалённого создания кластеров базы 1С.

Если процесса не три, а один (такое почему-то иногда бывает, но только при первоначальном запуске), то делаем:
# invoke-rc.d srv1cv82 stop
Удаляем каталог «.1cv82» в домашней директории пользователя usr1cv82. И перезапускаем сервер заново. Должно стать все нормально.

На этом этапе всё готово для создания БД из под оснастки Windows "Администрирование серверов предприятия".

4. Установка клиента 1С 8.2 Предприятие под Wine 1.2 (Wine Etersoft) на Ubuntu 9.04 - 10.04

Устанавливаем Wine версии не ниже 1.2 из стандартьных репозитариев. Если их нет, то добавьте:
deb ppa.launchpad.net/ubuntu-wine/ppa/ubuntu jaunty main
deb-src ppa.launchpad.net/ubuntu-wine/ppa/ubuntu jaunty main

Процесс установки 1с под wine почти ничем не отличается от такового процесса под Windows. В процессе установки следует помнить, что НЕ НАДО устанавливать HASP DEVICE DRIVER.

Драйвер защиты не устанавливал. После установки на рабочем столе появился ярлык с рюмкой "вина" (с Etersoft был корректный значок ярлыка запуска 1С). Далее, если сервер не локальный, то потребуется прописать в /etc/hosts адрес и имя сервера кластеров.
192.168.10.1 name_server

Затем запускаем winecfg, добавляем в список приложение 1cv8.exe, и для него переопределяем 4 библиотеки:
mshtml, shdocvw, shlwapi и urlmon, затем нажать на OK.
Если вы используете схемы из Панели функций, то Вам приёдётся также дополнительно установить IE6. Для этого Вам понадобиться скачать скрипт Winetricks:
# sh winetricks

В принципе, устанавливать IE и переопределять библиотеки — не обязательно. Тогда все работает, но мы лишаемся синтакс помощника и объекта ПолеHTMLДокумента и т.п. - потому что 1с использует IE для всего этого. Причем лишаемся очень грубо — 1С будет виснуть при попытке работать с этими объектами.

5. Установка HASP и настройка лицензионного подключения к БД.

Дабы не замарачиваться, возьмем уже готовые и собранные пакеты HASP драйвера и демона на ETRESOFT`e. Копируем пакеты в директорию установки /usr/local/HASP и устанавливаем:#cd /usr/local/HASP
#dpkg -i *.deb

тушим сервер:
#shutdown -h now

вставляем флешки-ключи и запускаем сервак...

Проверить работает ли HASP-ключ можно командами:
#service haspd status

должно быть что то похожее на:
Hardware protection keys support bundle. Etersoft (c) 2008-2010
HASPD package 3.2 with /dev/bus/usb support
Aladdin HASP 4/HL/SRM driver status:
kernel module aksparlnx is not loaded (WARNING: HASP LPT keys support is disabled! Run service haspd build if needed.)
aksusbd is running
winehasp is running
hasplm is running
hasplmd is running
Daemon version: 1.14 (#7779) - key API (USB) version: 3.88 (parallel driver not available)
/proc/bus/usb workaround is enabled
Smartkey 3 USB/LPT driver status:
skeyd is stopped
SafeNet Sentinel status:
usbsentinel is stopped
SntlKeysSrvrlnx is stopped

Ну и еще одна проверка:
#netstat -ap | grep hasp

должны увидеть, что демон слушает 475 порт:

tcp 0 0 *:1947 *:* LISTEN 1143/hasplmd
udp 0 0 localhost:2790 *:* 1125/winehasp
udp 0 0 *:1947 *:* 1143/hasplmd
udp 0 0 *:475 *:* 1134/hasplm
udp 0 0 *:51937 *:* 1143/hasplmd
unix 3 [ ] STREAM CONNECTED 6106 1134/hasplm
unix 3 [ ] STREAM CONNECTED 5392 1143/hasplmd
unix 3 [ ] STREAM CONNECTED 5390 1143/hasplmd
unix 2 [ ] DGRAM 5150 1143/hasplmd
unix 2 [ ] DGRAM 5137 1134/hasplm
unix 2 [ ] DGRAM 5124 1125/winehasp

6. Создаем скрипт автоматического BACKUP`a БД.

Этот скрипт нужен для автоматического бекапа БД, чистки от старых бекапов и восстановления БД из бекапа (в случае необходимости).

Собственно, приступим, создаем директорию бекапов и скрипт сответственно:#mkdir /mnt/1c/Backup1C
#cd /mnt/1c/Backup1C/
#mcedit backup1c

и в ставляем в скрипт следующее содержание:
#!/bin/bash
  
# Скрипт запуска резервного копирования БД 1С (храним 5 последних копий)

  
BACKUPDIR=/mnt/1c/Backup1C/ # Директория хранения бэкапов
DATENAME=`date +%d.%m.%Y-%H.%M` # Дата/Время в имени файла бэкапа
LOGFILE=/var/log/Backup1C.log # Хранилище лог-файлов
X=1 # Счетчик файлов
FILEMASK="*.backup" # маска файлов
KEEP=4 # сколько файлов (бэкапов) надо оставлять

  
cd $BACKUPDIR
echo Удаление старых резервных копий базы данных...

  
for i in `ls -t $BACKUPDIR/$FILEMASK`
do
if [ $X -le $KEEP ]
then
((X++))
continue
fi
rm $i
done

  
echo Начато резервное копирование базы данных...

  
pg_dump -Fc -U postgres "utp" > $DATENAME.utp.backup
echo "Резервное копирование БД УТП завершено: $DATENAME" > $LOGFILE

  
# Команда для восстановления БД из Backup
# pg_restore –U postgres –d utp –v /ПУТЬ/ИМЯФАЙЛА.utp.backup

  
####LAST LINE. DO NOT REMOVE####


Смысл дествий скрипта такой:
Проверка количества старых бекапов, удаление всех старых бекапов (кроме 4х последних - параметр KEEP) и непосредственный бекап текущего состояния БД с логированием в /var/log/Backup1C.log

Теперь, для автоматического выполнения этого скрипта, добавим его в crontab:
#mcedit /etc/crontab

и добавляем туда строку:
00 3 * * * root /mnt/1c/Backup1C/backup1c

т.е. скрипт /mnt/1c/Backup1C/backup1c будет выполняться каждый день в 3:00

7. Восстановление БД из BACKUP`a.

Все действия выполняются от имени пользователя postgres. Логинимся в него:

$sudo su postgres

Далее порядок действий такой:

удаляем существующую БД
$dropdb <ИМЯ_БД>

создать новую БД с 0-шаблоном
$createdb -T template0 <ИМЯ_БД>

восстановить данные из backup`a во вновь созданную БД
$pg_restore -d <ИМЯ_БД> <ПУТЬ+ИМЯ_BACKUP`a>

через оснастку "Администрирование серверов предприятия" добавить БД в кластер 1С.

Желаю, Вам, удачи в установке и настройке связки! Ведь именно без удачи настроить Linux, ой как, не просто )) ИМХО.