Рубрики
BUH \ 1с \ sbis \ сбис \ etc

1С:Предприятие 8.3 + PostgreSQL 9.4 на базе Debian 8 «Jessie»

Ссылки:

http://nixway.org/how-to/1c-predpriyatie-8-3+postgresql-na-baze-debian-8-jessie/
http://webhamster.ru/mytetrashare/index/mtb0/1403508881d2lp0cn7oo
https://helpf.pro/faq/view/1556.html
http://infostart.ru/public/325482/

Подготовка сервера:

0. Итак у вас имеется установленный Debian 8. 

1. Поставим последние обновления:
$ su
# apt-get update
# apt-get upgrade
# apt-get dist-upgrade

Подготовка флешки с дистрибутивом 1с:

0. Создаем в корне флешки каталоги:
1с
postgre
hasp
1. Раскидываем пакеты по каталогам, предварительно распаковав их.

Подготовка установки PostgreSQL в связке с 1С:Предприятие:

0. Для начала надо установить необходимые локали. Это en_US.UTF-8 и ru_RU.UTF-8. 
При этом локаль ru_RU.UTF-8 должна быть выбрана по умолчанию. 
dpkg-reconfigure locales - отредактировать список локалей

1. Затем надо установить зависимости:
apt-get install ssl-cert libossp-uuid16 libxslt1.1

3. К сожалению, мейнтейнеры работающие на 1С, не следят за порядком в зависимостях своих пакетов. 
По этой простой причине, нам надо скачать и установить пакет libicu48:
wget http://ftp.ru.debian.org/debian/pool/main/i/icu/libicu48_4.8.1.1-12+deb7u3_amd64.deb
chmod u+x libicu48*.deb - даем права на выполнение
dpkg -i libicu48*.deb - устанавливаем

4. Так же необходимо увеличить максимальный размер сегмента памяти до 64 Мб:
echo kernel.shmmax = `echo 64*1024*1024 | bc` >> /etc/sysctl.conf
sysctl -p -  применить изменения sysctl.conf

5. Переходим в каталог с пакетами PostgreSQL от 1С:
Пример:
cd /mnt/1cinstall/postgres - переходим в каталог
ls -l - поверяем что есть в каталоге
Всего 6 пакетов, которые и нужно установить. В каталоге addons, находятся дополнительные пакеты, их я ставить не буду.
drwxr-xr-x 2 nihi1ist nihi1ist    4096 окт  6 09:50 addons
-rwxr-xr-x 1 nihi1ist nihi1ist  120250 июн  2 12:41 libpq5_9.4.2-1.1C_amd64.deb
-rwxr-xr-x 1 nihi1ist nihi1ist 3657036 июн  2 12:42 postgresql-9.4_9.4.2-1.1C_amd64.deb
-rwxr-xr-x 1 nihi1ist nihi1ist 1069692 июн  2 12:42 postgresql-client-9.4_9.4.2-1.1C_amd64.deb
-rwxr-xr-x 1 nihi1ist nihi1ist   72172 авг 11 19:47 postgresql-client-common_154.1.1C_all.deb
-rwxr-xr-x 1 nihi1ist nihi1ist  163684 авг 11 19:47 postgresql-common_154.1.1C_all.deb
-rwxr-xr-x 1 nihi1ist nihi1ist  457782 июн  2 12:42 postgresql-contrib-9.4_9.4.2-1.1C_amd64.deb

dpkg -i *.deb - устанавливаем
service postgresql status - после установки проверим, запустился ли сервис PostgreSQL

Если пакеты были установлены правильно, то вы получите примерно следующее сообщение (выхлоп):
--------------------------------------------------------------------------------------------
● postgresql.service - LSB: PostgreSQL RDBMS server
   Loaded: loaded (/etc/init.d/postgresql)
   Active: active (running) since Вт 2015-11-10 20:52:32 ALMT; 16s ago
  Process: 14225 ExecStop=/etc/init.d/postgresql stop (code=exited, status=0/SUCCESS)
  Process: 14274 ExecReload=/etc/init.d/postgresql reload (code=exited, status=0/SUCCESS)
  Process: 14235 ExecStart=/etc/init.d/postgresql start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/postgresql.service
           ├─14249 /usr/lib/postgresql/9.4/bin/postgres -D /var/lib/postgresql/9.4/main -c config_file=/etc/postgresql/9.4/main/postgresql...
           ├─14251 postgres: checkpointer process   
           ├─14252 postgres: writer process   
           ├─14253 postgres: wal writer process   
           ├─14254 postgres: autovacuum launcher process   
           └─14255 postgres: stats collector process   

ноя 10 20:52:32 as1 postgresql[14235]: Starting PostgreSQL 9.4 database server: main.
--------------------------------------------------------------------------------------------

Если же вы получите сообщение похожее на это:
---------------------------------------------
● postgresql.service - LSB: PostgreSQL RDBMS server
   Loaded: loaded (/etc/init.d/postgresql)
   Active: active (exited) since Вт 2015-11-10 20:28:40 ALMT; 10min ago

ноя 10 20:28:40 as1 postgresql[11850]: No PostgreSQL clusters exist; see "man pg_createcluster" ... (warning).
---------------------------------------------
Нас интересует последняя строчка, где сообщается, что кластер PostgreSQL не обнаружен.

Чтобы исправить эту ситуацию, достаточно просто перезапустить сервис PostgreSQL:
service postgresql restart
После чего снова проверьте статус сервиса. 
В итоге вы должны получить что-то похожее на первое сообщение.


6. После установки нужно еще немного подправить конфигурационный файл. Как ни странно PostgreSQL будучи установленным из пакетов 1С, 
содержит неправильные настройки для обработки экранирующих символов, и при создании базы выдает ошибку:

syntax error at or near "SECOND" at character 127
или
syntax error at or near "SECOND" at character 227

Чтобы избежать вышеуказанных ошибок нужно отредактировать настройки PostgreSQL:
vim /etc/postgresql/9.4/main/postgresql.conf
Приведя нижеуказанные параметры к следующему виду:
--------------------------------------------------
backslash_quote = on
escape_string_warning = off
standard_conforming_strings = off
Обновим конфигурацию, не перезапуская сервис:
--------------------------------------------------
service postgresql reload

7. Зададим пароль внутреннему пользователю PostgreSQL, предварительно авторизировавшись под системным пользователем postgres. 
su postgres - авторизация
cd - переход в домашний каталог текущего пользователя
$ psql -U postgres -c "alter user postgres with password '123456';" - cмена пароля у внутреннего пользователя PostgreSQL
Где -U postgres - системный пользователь от имени которого будет запущен psql, 
user postgres - внутренний пользователь БД, 
ну а 123456 - произвольный пароль который будет задан внутреннему пользователю БД.
Если смена пароля прошла успешно, вы должны получить сообщение: ALTER ROLE
exit - выход из окружения системного пользователя postgres


8. Напоследок зафиксируем пакеты PostgreSQL, чтобы они не обновлялись из стандартных репозиториев:
apt-mark hold libpq5 postgresql-9.4 postgresql-client-9.4 postgresql-client-common postgresql-common postgresql-contrib-9.4
Если команда выполнена правильно, вы должны получить следующее сообщение:
-------------------------------------------------------------------------
libpq5 помечен как зафиксированный.
postgresql-9.4 помечен как зафиксированный.
postgresql-client-9.4 помечен как зафиксированный.
postgresql-client-common помечен как зафиксированный.
postgresql-common помечен как зафиксированный.
postgresql-contrib-9.4 помечен как зафиксированный.
На этом установка PostgreSQL закончена.
-------------------------------------------------------------------------

Установка сервера 1С:Предприятие 8.3:

Теперь нам предстоит установка сервера 1С:Предприятие. 
Как и в случае с PostgreSQL нам предстоит ряд подготовительных работ необходимых для штатного функционирования сервера 1С:Предприятие.

1. Переходим в из каталога postgres в каталог 1c:
cd ../1c

2. Устанавливаем дополнительные пакеты, которые необходимы для работы сервера:
apt-get install imagemagick libglib2.0-0 libgsf-1-114 ttf-mscorefonts-installer t1utils unixodbc --no-install-recommends

3. В репозиториях ttf2pt1 его нету, скачаем из архива Debian: 
wget http://archive.debian.org/debian/pool/main/t/ttf2pt1/ttf2pt1_3.4.4-1.4_amd64.deb - скачиваем ttf2pt1
wget http://ftp.ru.debian.org/debian/pool/main/t/t1lib/libt1-5_5.1.2-3.6_amd64.deb - Докачиваем libt1-5 от которого зависит ttf2pt1
chmod u+x ttf2pt1*.deb libt1*.deb - даем права на выполнение
dpkg -i ttf2pt1*.deb libt1*.deb - устанавливаем пакеты

4. Посмотрим, какие пакеты есть у нас в каталоге:
Всего 8 пакетов, из которых нам для функционирования сервера 1С:Предприятия необходимы 3 пакета: 
1c-enterprise83-common, 1c-enterprise83-server, 1c-enterprise83-ws.
ls -l - проверяем каталог
-------------------------------------------------
-rwxrwxrwx 1 nihi1ist nihi1ist 206202908 ноя 19 05:45 1c-enterprise83-client_8.3.7-1776_amd64.deb
-rwxrwxrwx 1 nihi1ist nihi1ist  19879626 ноя 19 05:45 1c-enterprise83-client-nls_8.3.7-1776_amd64.deb
-rwxrwxrwx 1 nihi1ist nihi1ist  33830518 ноя 19 05:45 1c-enterprise83-common_8.3.7-1776_amd64.deb
-rwxrwxrwx 1 nihi1ist nihi1ist   1607830 ноя 19 05:45 1c-enterprise83-common-nls_8.3.7-1776_amd64.deb
-rwxrwxrwx 1 nihi1ist nihi1ist 174945770 ноя 19 05:45 1c-enterprise83-server_8.3.7-1776_amd64.deb
-rwxrwxrwx 1 nihi1ist nihi1ist  60668720 ноя 19 05:45 1c-enterprise83-server-nls_8.3.7-1776_amd64.deb
-rwxrwxrwx 1 nihi1ist nihi1ist 135750258 ноя 19 05:45 1c-enterprise83-thin-client_8.3.7-1776_amd64.deb
-rwxrwxrwx 1 nihi1ist nihi1ist   9980106 ноя 19 05:45 1c-enterprise83-thin-client-nls_8.3.7-1776_amd64.deb
-rwxrwxrwx 1 nihi1ist nihi1ist    190046 ноя 19 05:45 1c-enterprise83-ws_8.3.7-1776_amd64.deb
-rwxrwxrwx 1 nihi1ist nihi1ist     11986 ноя 19 05:46 1c-enterprise83-ws-nls_8.3.7-1776_amd64.deb
-rwxr-xr-x 1 nihi1ist nihi1ist    173740 фев 24  2013 libt1-5_5.1.2-3.6_amd64.deb
-rwxr-xr-x 1 nihi1ist nihi1ist    236970 июн  8  2008 ttf2pt1_3.4.4-1.4_amd64.deb
-------------------------------------------------

Пояснениями по назначению пакетов:
----------------------------------
1c_enterprise83-client…	Компоненты клиента 1С Предприятие 8.3 для Linux
1c_enterprise83-thin-client…	Компоненты тонкого клиента 1С Предприятие 8.3 для Linux
1c_enterprise83-common…	Общие компоненты 1С Предприятие 8.3 для Linux
1c_enterprise83-server…	Сервер 1С Предприятие 8.2 для Linux
1c_enterprise83-ws…	Компоненты интернет-сервисов 1С Предприятие 8.3 для Linux
1c_enterprise83-…-nls…	Компоненты необходимые для ОС не поддерживающих кириллическую кодировку
---------------------------------- 

5. Устанавливаем необходимые пакеты:
dpkg -i 1c-enterprise83-common_8*.deb 1c-enterprise83-server_8*.deb 1c-enterprise83-ws_8.3*.deb

6. Даем пользователю usr1cv8 и группе grp1cv8 права на установочную директорию 1С:Предприятия:
chown -R usr1cv8:grp1cv8 /opt/1C

7. В выхлопе установщика вы можете заметить предупреждение:
-----------------------------------------------------------
update-rc.d: using dependency based boot sequencing
insserv: warning: script 'K01srv1cv83' missing LSB tags and overrides
insserv: warning: script 'srv1cv83' missing LSB tags and overrides
-----------------------------------------------------------
Начиная с версий 8.3.7, данная проблема исправлена. 
Потому, если вышеуказанного сообщения вы не получали, можете пропустить пункты 8 и 9.

8. Сообщение описанное в пункте 7 мы получаем из-за отсутствия в скрипте запуска LSB-тегов. 
Ошибка не критична и никак не повлияет на работу сервера 1С:Предприятие. 
Но её легко можно решить, для этого добавим LSB-теги в сценарий сервиса 1С:Предприятие:
# vim /etc/init.d/srv1cv83
Находим строки:

#!/bin/bash
#------------------------------------------------------------
# 1C:Enterprise server configuration parameters
#------------------------------------------------------------

# 1C:Enterprise server keytab file.
Приводим к следующему виду:

#!/bin/bash
#------------------------------------------------------------
# 1C:Enterprise server configuration parameters
#------------------------------------------------------------

### BEGIN INIT INFO
# Provides:          srv1cv83
# Required-Start:    $remote_fs $network $syslog $named
# Required-Stop:     $remote_fs $network $syslog $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Description:       1C:Enterprise 83 server.
### END INIT INFO

# 1C:Enterprise server keytab file.

9. Перезапускаем службу сервера 1С:Предприятие:
systemctl daemon-reload
service srv1cv83 restart

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

Вы должны получить примерно такое сообщение:
--------------------------------------------
tcp        0      0 0.0.0.0:1560            0.0.0.0:*               LISTEN
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
--------------------------------------------



11. Так же для профилактики можно проверить, все ли процессы сервера запущены:
От имени пользователя usr1cv8 должно быть запущено три процесса: ragent, rmngr и rphost. 
ps aux|grep 1c
--------------
usr1cv8  16832  0.3  1.8 357780 35668 ?        Ssl  21:39   0:01 /opt/1C/v8.3/x86_64/ragent -daemon
usr1cv8  16835  0.8  5.4 955616 104104 ?       Sl   21:39   0:04 /opt/1C/v8.3/x86_64/rmngr -port 1541 -host as1 -range 1560:1591 -clstid 96f2358c-87be-11e5-049f-080027e1f738
usr1cv8  16862  0.3 10.6 848588 204580 ?       Sl   21:39   0:01 /opt/1C/v8.3/x86_64/rphost -range 1560:1591 -reghost as1 -regport 1541 -pid 97c8c4c6-87be-11e5-049f-080027e1f738
root     16940  0.0  0.1  13968  2220 pts/0    S+   21:48   0:00 grep 1c
--------------

Установка драйвера для аппаратной лицензии 1С (HASP) :

Лицензии 1С можно разделить на аппаратные и программные. 
Мы рассмотрим аппаратную лицензию (USB-токен). 

Аппаратные ключи 1С делятся на 3 вида и их можно отличить по цвету:
- зеленый - серверный ключ 1С (сервер 1С:Предприятия),
- синий (фиолетовый) - ключ 1С, который поставляется вместе с конфигурацией и является однопользовательским,
- красный - лицензии на пользователей, данный ключ 1С может приобретаться отдельно в том случае,
 
Клиентское приложение допускает использование следующих ключей HASP:
- локальный клиентский ключ серии ORGL8 на 1 пользователя,
- сетевой клиентский ключ серии ORGL8 на 5, 10, 20, 50, и 100 пользователей,
- сетевой клиентский ключ серии ORGLА на 300 пользователей,
- сетевой клиентский ключ серии ORGLВ на 500 пользователей.

Причём на одном компьютере может быть установлено не более одного ключа одной серии. 
Подробнее о видах лицензии и ключей вы можете прочитать здесь.

Из вышеуказанного следует - нам нужны два типа лицензий.
Лицензия для сервера 1С:Предприятие и лицензия для клиента 1С:Предприятие. 
Свежий драйвер можно скачать на официальном сайте. 
Большинству подойдет HASP 4, его и скачивайте.

1. Переходим из каталога 1с, в каталог hasp:
cd ../hasp

ls -l - проверим, что есть в каталоге
-------------------------------------
-rw-r--r-- 1 nihi1ist nihi1ist 2918898 авг 26 14:08 aksusbd_7.40-1_i386.deb
-rw-r--r-- 1 nihi1ist nihi1ist   16851 авг 26 14:08 readme.html
-------------------------------------

chmod a+x aksusbd*.deb - дадим права на выполнение владельцу:

dpkg -i aksusbd*.deb - после чего установим пакет

2. После установки сервис не запустился, запустим его:
service aksusbd start - если сервис запустился штатно, команда просто отработает не выдав сообщений. 
service aksusbd status - проверить запущен ли сервис (Вы должны получить сообщение: Active: active, status=0/SUCCESS )
Вы должны получить сообщение:

Предупреждение Для 64-битного сервера 1С:Предприятие, нужен 64-битный серверный HASP-ключ. 
32-битный серверный HASP-ключ с 64-битным сервером 1С:Предприятие работать не будет!
Примечание Сервер 1С:Предприятие под *nix-подобные операционные системы не требует наличия серверного ключа, 
если число пользользователей не превышает 12. 
В этом случае требуется наличие только клиентских лицензий. 
Однако, согласно правилам лицензирования, организация должна приобрести серверный ключ.
На этом установка драйвера закончена.

Установка клиента 1С:Предприятие 8.3

Итак, дано: рабочая станция с Debian 8 «Jessie»
1.  apt-get install libwebkitgtk-1.0-0 imagemagick libglib2.0-0 libgsf-1-114 ttf-mscorefonts-installer t1utils unixodbc --no-install-recommends
2.  cd /mnt/1cinstall/1c
ls -l - посмотрим, что имеется в каталоге
-----------------------------------------
-rwxrwxrwx 1 nihi1ist nihi1ist 206202908 ноя 19 05:45 1c-enterprise83-client_8.3.7-1776_amd64.deb
-rwxrwxrwx 1 nihi1ist nihi1ist  19879626 ноя 19 05:45 1c-enterprise83-client-nls_8.3.7-1776_amd64.deb
-rwxrwxrwx 1 nihi1ist nihi1ist  33830518 ноя 19 05:45 1c-enterprise83-common_8.3.7-1776_amd64.deb
-rwxrwxrwx 1 nihi1ist nihi1ist   1607830 ноя 19 05:45 1c-enterprise83-common-nls_8.3.7-1776_amd64.deb
-rwxrwxrwx 1 nihi1ist nihi1ist 174945770 ноя 19 05:45 1c-enterprise83-server_8.3.7-1776_amd64.deb
-rwxrwxrwx 1 nihi1ist nihi1ist  60668720 ноя 19 05:45 1c-enterprise83-server-nls_8.3.7-1776_amd64.deb
-rwxrwxrwx 1 nihi1ist nihi1ist 135750258 ноя 19 05:45 1c-enterprise83-thin-client_8.3.7-1776_amd64.deb
-rwxrwxrwx 1 nihi1ist nihi1ist   9980106 ноя 19 05:45 1c-enterprise83-thin-client-nls_8.3.7-1776_amd64.deb
-rwxrwxrwx 1 nihi1ist nihi1ist    190046 ноя 19 05:45 1c-enterprise83-ws_8.3.7-1776_amd64.deb
-rwxrwxrwx 1 nihi1ist nihi1ist     11986 ноя 19 05:46 1c-enterprise83-ws-nls_8.3.7-1776_amd64.deb
-rwxr-xr-x 1 nihi1ist nihi1ist    173740 фев 24  2013 libt1-5_5.1.2-3.6_amd64.deb
-rwxr-xr-x 1 nihi1ist nihi1ist    236970 июн  8  2008 ttf2pt1_3.4.4-1.4_amd64.deb
-----------------------------------------

3. Есть два варианта установки клиента. 
Первый вариант - установка полноценного клиента (включает толстый и тонкий клиенты). 
Второй вариант - установка тонкого клиента. 
В случае с установкой полноценного клиента, необходимо также устанавливать и серверную часть.

3.1. Сначала рассмотрим установку полноценного клиента:
dpkg -i 1c-enterprise83-client_8*.deb 1c-enterprise83-common_8*.deb 1c-enterprise83-server_8*.deb ttf2pt1*.deb libt1*.deb

3.2. Тонкий клиент, можно устанавливать на те машины, где не планируется использование толстого клиента.
Преимущество тонкого клиента, это отсутствие зависимостей от компонентов сервера 1С:Предприятие, а также возможность работать через интернет. 
Итак, установка тонкого клиента:
dpkg -i 1c-enterprise83-thin-client_8*.deb

В каких случаях нам необходим толстый клиент?
- Работа с конфигуратором,
- Создание информационных баз,
- Проведение объемных вычислений (в случае толстого клиента, все вычисления проводятся на стороне клиента).

4. Теперь нам необходимо выбрать каким способом мы будем взаимодействовать с сервером. 
В зависимости от обстоятельств и предпочтений, вы можете установить DNS-сервер, или прописывать имя сервера на каждой клиентской машине вручную:
vim /etc/hosts

Публикация ИБ на веб-сервере Apache 2.4:

Хочу обрадовать тех, кому не хватало возможности публикации информационной базы на веб-сервере Apache. 
Добавление поддержки последней версии Apache, я заметил при установке 1С:Предприятие версии 8.3.8.1652.
Может поддержка Apache 2.4 появилась и раньше. Но проверять мне было лень, а новостей на эту тему я не нашел. 
Даже на официальном сайте 1С, на данный момент устаревшая информация. Процесс публикации не изменился. 
Обращаю особое внимание, что процесс установки описан для Apache не ниже 2.4.

Создаем директорию для vrd-файла:
# mkdir -p /var/www/ib/ibname

А также файл конфигурации Apache:
# touch /etc/apache2/conf-available/ibname.conf

Переходим в каталог со утилитой публикации веб-клиента:
# cd /opt/1C/v8.3/x86_64/

Запускаем утилиту:
# ./webinst -apache24 -wsdir ibname -dir '/var/www/ib/ibname' -connstr 'Srvr="as1.nixway.loc";Ref="ibname";' -confPath /etc/apache2/conf-available/ibname.conf
Где /var/www/ib/ibname - директория где будет создан vrd-файл, 
ibname - имя ИБ,
as1.nixway.loc - адрес сервера 1С:Предпрятие, 
а /etc/apache2/conf-available/ibname.conf - путь до конфигурационного файла Apache.

Подключаем конфигурацию:
# a2enconf ibname

Перечитываем конфигурацию Apache:
# service apache2 reload

Если процедура публикации была проведена корректно, ИБ будет доступна по адресу:
http[s]://server_ip|server_name/ibname

Режим — Веб-клиент:

Для подключения к БД PostgreSQL набираем:
# psql -U postgres

Получить список баз данных на сервере после входа можно командой:
# \l

Получить список таблиц в текущей базе данных PostgreSQL:
# \d

Конфигурационные файлы PostgreSQL находятся в:
# mcedit /var/lib/postgresql/8.4/data/postgresql.conf
# mcedit /var/lib/postgresql/8.4/data/pg_hba.conf

Можем удалить все таблицы в базе данных. Подготавливаем файл для выполнения в консоли:
# psql -U postgresql-user -t -d postgresql-db -c \
"SELECT 'DROP TABLE ' || n.nspname || '.' || c.relname || ' CASCADE;' \
FROM pg_catalog.pg_class AS c LEFT JOIN pg_catalog.pg_namespace AS n \
ON n.oid = c.relnamespace WHERE relkind = 'r' AND n.nspname NOT IN \
('pg_catalog', 'pg_toast') AND pg_catalog.pg_table_is_visible(c.oid)" \
> /tmp/droptables

Выполняем удаление всех таблиц:
# psql -U postgresql-user -d postgresql-db -f /tmp/droptables