База знаний

www. IT-Mehanika .ru --  журнал доброго админа

Не дадим родную 1С на растерзание вражескому Microsoft.

«...А для правильных пацанов, он делал барабаны!»
из бородатого анекдота

В этой статейке я решил систематизировать опыт, полученный в войне с MS за отказ от использования ее продуктов в применении к 1С. Многие люди удивляются, когда я рассказываю им о внедренной схеме и полученных результатах. Как приятно видеть реакцию, когда человек увидел за пределами навязанных шаблонов решения, которые могут облегчить ему работу и самое главное избавить от зависимости от ОДНОГО производителя софта. В начале неверие, потом - «ну …. я подумаю...» и в конце - «так что же эти гады впаривают??? ОБОРЗЕЛИ !!!». Ладно бы только конечные пользователи, да и франчайзи 1С тоже этим страдают. Их нельзя винить, это беда вообще — жизнь по шаблону. Слишком много шаблонов, причем в красивых обертках и завлекательными обещаниями. Ну хватит лирики.
Бубен №1 — разгонный , для разогрева.

Сразу предупреждаю — это не мануал в классическом виде, это всего лишь опыт внедрения. Спасибо добрым людям в интернете за мануалы и замечания. Установка делалась на базе 3х основных,что позволило сравнивая их, почти избежать проблем. Упомяну их сразу :
http://www.backline.ru/ - кратко, лаконично. Самое оно для начала.
http://pg1c.ru/?page_id=173 - здесь еще и объясняют почему лох :) Спасибо тебе друг!
http://www.lissyara.su/archive/1c_8.2+postgresql/ - это вообще шедевр, человек вначале поставил на FreeBSD  , а потом на Ubuntu. Я бы уже на фряхе умер )))))
Было дано — сервер IBM и Fujitsu , 1C-server x64 и прочее предприятие 8.2. И была ЖАБА !!! Ну не отдавать же стока бабла MS , за их SQL и Server.

Изначально планировалось 1с сервер и  MS-SQL разместить на IBM , а Fujitsu как резерв и файловый сервер. Но появилась вводная — сервер терминалов. Да и душа не лежала размещать на одном серваке двух обжор — 1с и MS-SQL. Итоговое решение — на IBM ставится win 2008 с клиентом 1с  и накатывается сервер терминалов Thinstuff (см. Выбираем терминальный сервер с RDP ). А 1С и сервер SQL? А их поселим на Fujitsu с установленной  Ubuntu x64 10.10, накатив Postgres и показав фигу Microsoft. Ну граждане, платить за MS SQL 55 килорублей , жаба не позволяет ))))  даже Oracle с DB2 на встречу пошли ))))


Процесс установки прост. Почти все по мануалам.
1) Скачиваем 64-битные пакеты сервера 1С и postgresql. Помните, клиент и сервер 1с должны быть одной версии. Я как лох шлепал ушами и глазами, глядя на ошибку «Версии не совпадают»
2) устанавливаем пакеты конвертации из rpm в deb
apt-get install chkconfig alien
Важно ! Не забываем chkconfig иначе ругается при конвертации postgres
3) Postgres берем именно из 1с, а не из репозтариев. Для тех кто не знает , 1с нужен пропатченный postgres.
4) Заходим в каталог, где лежит закаченный postgres и :
cd /usr/local/1c/pgsql
alien --scripts --to-deb *.rpm
groupadd -g 5026 -o -r postgres
useradd -g postgres -o -r -d /var/lib/pgsql -s /bin/bash -c \
"PostgreSQL Server" -u 5026 postgres
dpkg -i *.deb
5) в каталоге где лежит 1с сервер художественно исполняем :
cd /usr/local/1c/
dpkg -i *.deb
aptitude install ttf-mscorefonts-installer  
6) Очень правильно переопределить каталог баз
mkdir /bases
mkdir /bases/basetest
chown -R postgres:postgres /bases
7) Постгресу понадобятся ссылки на старые библиотеки. Сделайте
cd /lib
ln -s libreadline.so.5.2 libreadline.so.4
ln -s libncurses.so libtermcap.so.2
8) ну и собственно инициализация баз с запуском:
su postgres
initdb -D /bases/basetest
pg_ctl -D /bases/basetest -l /bases/basetest/pg.log start
тут постгес долго думает и если вы ему во всем понравились он стартанет !
9) Старт 1с-сервера прост /etc/init.d/srv1cv81 start . Не пугайтесь в названии 81, это жестокое наследие старины )))).
10) Проверяем netstat -atu
результатом должны быть строки :
tcp 0 0 *:1560 *:* LISTEN
tcp 0 0 *:postgresql *:* LISTEN
tcp 0 0 *:1561 *:* LISTEN
tcp 0 0 *:1562 *:* LISTEN
tcp 0 0 *:1563 *:* LISTEN

Ну и как справедливо написал товарищ ship, еще на две копейки
создаем скрипт запуска:
nano /etc/init.d/postgresql
#!/bin/sh
case $1 in
restart)
sudo -u postgres -H pg_ctl -D /bases/basetest -l /bases/basetest/pg.log stop
sudo -u postgres -H pg_ctl -D /bases/basetest -l /bases/basetest/pg.log start
;;
start)
sudo -u postgres -H pg_ctl -D /bases/basetest -l /bases/basetest/pg.log start
;;
stop)
sudo -u postgres -H pg_ctl -D /bases/basetest -l /bases/basetest/pg.log stop
;;
*)
echo start|stop|restart
return 1;
;;
esac
И последний штрих для старта при загрузке :
update-rc.d postgresql defaults
update-rc.d srv1cv81 defaults

У вас в руках сервер 1с с PostgreSQL
Если мы законопослушные и не хотим иметь ограничение в количестве пользователей, надо еще прикрутить HASP для сервера. Перед тем как начать возиться с защитой, внимательно гляньте маркировку ключа ! В моем случае у 1с закончилась синяя пластмасса и думал что ключик фиолетовый (для серверов х32) , оказалось я как дурак пытался завести сервер на ключе для рабочей станции на одного пользователя.... Потом сообразил что нужен зеленый (для серверов х64) , но с синим поражался ошибкам.
Ну здесь делается все как по написанному :
Установка драйвера HASP с менеджером лицензий

aptitude install ia32-libs

cd /usr/local/src
wget ftp://ftp.aladdin.com/pub/hasp/Sentinel_HASP/Linux/Sentinel_HASP_Linux_Run-time_Installer_script.tar.gz
Распаковываем
tar xzf Sentinel_HASP_Linux_Run-time_Installer_script.tar.gz

cd Sentinel_HASP_Linux_Run-time_Installer_script

./dinst .       //не забудьте про точки в начале и конце строки (это для нелинуксоидов )

ежели не взлетит … пробуем второй вариант :
лезем на http://ftp.etersoft.ru/pub/Etersoft/HASP/3.2/x86_64/Ubuntu/10.10/
скачиваем от туда. Я до сих пор не понял , когда вылезают глюки защиты.

Бубен №2 —  пассы над виндосервером

Перед началом колдовства на виндах  дадим команду
hostname
и полученное имя и IP адрес сервера впишем на виндовсе в   C:\Windows\system32\drivers\etc\hosts
что-то типа
192.168.111.14     1сsrv

1) ставим клиента 1с и центр управления серверами. Нужная вещь, т. к. по Линух ее нет.
2) Не спеша как опытные саперы, Через оснастку управления серверами 1с создаем центральный сервер.
3) Унимаем эмоции от увиденного, гасим порыв создать базу и создаем Администратора ! Без него иногда происходят странности в создании клиентом базы, ошибки сыпаться начинают... ну грустно...
4) Задав логин-пароль админу, создаем базу.
5) Если виндовая защита — HASP , это ничего , проверенно годами . А вот с программной , что бы на сервере хранила , это материал отдельной статьи. Я побыл в роли лоха активировав по ошибке ключ ОДНОПОЛЬЗОВАТЕЛЬСКОЙ лицензии, вместо лицензии на 20 пользователей. Откатить обратно 1с не дает, спасибо девочки из поддержки. Успокоила меня рыдающего фразой - «Ну по моему одна 20 пользовательская, это то же что 20 однопользовательских ? ... ». Самое удивительное — слезы высохли, вопли утихли и я решил ввести еще штуки 3 для эксперимента. Сработало!!! Я как лох педальный вынужден был набить 20 серийников !!! Ошибку вызвало то что многоюзеровская лицензия не активировалась и повлекла меня на эксперименты.... Теперь 20 работают )))))
В клиенте создание базы, выглядит так:

колдуя над защитой, помните, никакой удаленки , тока локаль )))))))))


Бубен №3 — прирути Apache и будет тебе сзчазтье ….

"идет по крыше воробей
несет коробочку соплей...."
детсадовский стишок

Идем в любимый терминал под рутом.

mkdir /var/www/erste

/opt/1C/v8.2/x86_64/webinst -apache22 -wsdir erste -dir '/var/www/erste/' -connStr 'Srvr="1csrv";Ref="erste";' -confPath /etc/apache2/httpd.conf

Если будете копировать строку с командой webinst отсюда и получите ошибку, поменяйте все одинарные кавычки на апострофы (Буква Э рядом с Enter)

Убедимся в правильности внесенных изменений

nano /etc/apache2/httpd.conf

LoadModule _1cws_module "/opt/1C/v8.2/x86_64/wsap22.so"

# 1c publication
Alias "/erste" "/var/www/erste/"
<Directory "/var/www/erste/">
AllowOverride None
Options None
Order allow,deny
Allow from all
SetHandler 1c-application
ManagedApplicationDescriptor "/var/www/erste/default.vrd"
</Directory>


Теперь посмотрим что вписалось в файле default.vrd

nano /var/www/erste/default.vrd

<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/erste"
ib="Srvr=&quot;1csrv&quot;;Ref=&quot;erste&quot;;"/>

Далее
chown -R www-data:www-data /var/www/erste

Отключаем в браузере блокировку всплывающих окон, иначе мы ничего не увидим. Рестартуем апач

/etc/init.d/apache2 restart

и заходим браузером на адрес

http://<адрес сервака>/erste/

О Чудо !!!!!!!!!!!! Я Вижу ЭТО !!!!!!!!!!!!!!!

ЧТО ???????????

Ошибку базы , не обнаружен ключ защиты, несовпадение версий либо окно входа в базу  (нужное подчеркнуть). Если вход в базу - вам везет мой друг, если подчеркнули другое — напильничком ее напильничком ….
Если вы бегаете по офису с воплями - "Аллилуя!!!" , не трогайте больше сервер пусть работает
Если вы разговариваете со всеми включая себя на не совсем привычном русском, успокойтесь и приготовьтесь выгребать сопельки и какашки разработчиков.
У меня только с третьего раза прошло без осечки. Еще раз обращаю внимание, смотрите три приведенные ссылки - это мануалы. здесь в первую очередь грабли по которым я ходил.


(Продолжение следует, антракт ... )