1С 8.2 сервер + PostgresSQL@Etersoft 8.4.4 на Ubuntu Server 10.04.*

Nigelist
Nigelist написал #1 Автор

В Google можно найти кучу статей на вышеуказанную тему. Но в комментариях к этим статьям пишут, что у многих установленная по инструкции связка не работает. Решил попробовать сам, устанавливал сервер 1C:Предприятие 8.2 + Postgres@Etersoft 8.4.4 на базе Ubuntu Server 10.04.* i386. Во избежание проблем, новичкам советую, при установке сервера, выбирать русскую локаль по-умолчанию. У меня все завелось... smile

Для тех кто плохо разбирается в линуксе, настоятельно рекомендую устанавливать все по инструкции. И очень-очень внимательно... Если что-то не получается максимально подробно описывайте вашу проблему. В ином случае вы не дождетесь нормального ответа.

  1. Итак у вас имеется установленный Ubuntu Server 10.04.* (При установке не выбирайте установку стандартного постгреса). Сразу же поставьте последние обновления:
sudo apt-get update  
sudo apt-get dist-upgrade
  1. Дистрибутивы можно скачать из интернета сразу на сервер или скопировать заранее скачанные дистрибутивы через самбу. Я предполагаю, что самба может быть настроена не у всех, потому воспользуемся флешкой. Берем флешку, закидываем в нее заранее скачанные дистрибутивы в отдельные папки:
1с  
postgres  
hasp

Перед этим заранее распаковав дистрибутивы из архивов.

  1. Создаем директорию, к которой будем монтировать флешку:
sudo mkdir /opt/1cinstall
  1. Подключаем флешку к серверу, просматриваем как она подключилась:
sudo fdisk -l

У меня это sdb1, теперь монтируем флешку сразу в папку 1с:

sudo mount /dev/sdb1 /opt/1cinstall/1c
  1. Проверяем что намонтировали:
ls /opt/1cinstall

Т.к. на моей флешке ничего не было кроме папок с дистрибутивами, отобразились только они:

1с  
postgres  
hasp
  1. Во время установки постгреса нам потребуются права рута, потому переходим в режим рута:
sudo -i
  1. На данный момент последняя стабильная версия от Etersoft это 8.4.4, ее то мы и будем устанавливать. Переходим в папку postgres:
cd /opt/1cinstall/postgres

Проверяем что есть в папке:

ls

Должно быть четыре пакета:

libpq5.2-8.4eter_8.4.4-eter1.1ubuntu_i386.deb  
postgresql-8.4eter-contrib_8.4.4-eter1.1ubuntu_i386.deb  
postgresql-8.4eter-server_8.4.4-eter1.1ubuntu_i386.deb  
postgresql-8.4eter_8.4.4-eter1.1ubuntu_i386.deb
  1. Меняем параметр ядра linux SHMMAX на 128Мб, насколько я знаю делать это надо на 32-битной машине:
echo "kernel.shmmax = 134217728" >> /etc/sysctl.conf  
echo "kernel.shmall = 134217728" >> /etc/sysctl.conf

Применяем изменения:

sysctl -p
  1. Далее нам необходимо добавить группу postgres, но проблема в том, что необходимый нам id -26, занят группой tape. В данном случае я решил назначить группе postgres необходимый id и сделать ее первичной, а группу tape сделать вторичной. Итак, приступим:
nano /etc/group

Находим строку:

tape:x:26:

Приводим ее к виду:

postgres:x:26:tape
  1. Для нормально работы PostgreSQL, требуется библиотека libreadline.so.5. Но у нас будет установлена более новая библиотека. Просмотрим библиотека какой версии стоит у нас:
ls -l /lib

Ниже приведу часть выхлопа, который нам необходим:

...  
lrwxrwxrwx  1 root root      18 2012-01-22 15:39 libreadline.so.6 -> libreadline.so.6.2  
-rw-r--r--  1 root root  204856 2011-02-24 06:53 libreadline.so.6.2  
...

Итак мы выяснили, что у нас стоит библиотека версии 6.2. На нее то мы и будем создавать сим-линк:

cd /lib  
ln -s libreadline.so.6.2 libreadline.so.5
  1. Устанавливаем дополнительные библиотеки:
apt-get install libicu-dev libxslt1.1 libxml2 libossp-uuid16
  1. Переходим в папку с дистрибутивом постгреса:
cd /opt/1cinstall/postgres
  1. Устанавливаем постгрес:
dpkg -i *.deb
  1. Даем права на папку pgsql пользователю и группе postgres:
chown postgres:postgres /var/lib/pgsql

Кто не уверен, проверьте сменился ли владелец папки:

ls -l /var/lib

В выведенном на экран списке найдите папку pgsql, ее свойства должны быть примерно такими (на дату создания папки не обращайте внимания smile ):

drwxr-xr-x 4 postgres    postgres    4096 2011.02.18 10:09
  1. Запускаем постгрес:
service postgresql start

Если постгрес уставлен правильно, то вы увидите сообщение:

Initializing database:                                                                   DONE  
Starting postgresql service:                                                             DONE
  1. Задаем пароль пользователю postgres:
passwd postgres
  1. Задаем пароль внутреннему пользователю PostgreSQL, предварительно авторизировавшись под пользователем postgres:
su -l postgres  
psql  
alter user postgres with password 'YOUR_PASSWORD';  
\q  
exit

Где YOUR_PASSWORD - пароль который вы хотите задать для внутреннего пользователя постгрес.

  1. Также нам необходимо настроить pg_hba.conf. Но перед этим сделаем бэкап этого файла:
cp /var/lib/pgsql/data/pg_hba.conf /var/lib/pgsql/data/pg_hba.conf.default

Открываем pg_hba.conf:

nano /var/lib/pgsql/data/pg_hba.conf

Находим следующие строки:

#IPv4 local connections:  
#host    all         all         127.0.0.1/32          ident

Раскомментируем вторую строку и приведем к следующему виду:

#IPv4 local connections:  
host    all        postgres         127.0.0.1/32          md5

Этой правкой мы дали разрешение пользователю postgres коннектиться с любой базой с локального хоста, при этом требуется пароль.

  1. Теперь рассмотрим значения параметров в файле postgresql.conf, файл расположен в той же папке, что и pg_hba.conf. Параметры зависят от многих факторов, настраиваются индивидуально и служат для обеспечения максимальной производительности. Хотя и по умолчанию база будет работать (не забывайте перед правкой делать бэкап):
  • listen_addresses = ‘127.0.0.1′ – если соединения с базой будут только с локального хоста, то надежнее сделать именно так, чтобы порт 5432 слушался только на адресе 127.0.0.1.
  • fsync = off – значение on сильно снижает производительность, поскольку все транзакции непосредственно пишутся на жесткий диск без использования кэширования, но повышается надежность. Значение off есть смысл устанавливать, когда установлены надежные диски и надежный же UPS.
  • effective_cache_size = 2048MB – на моем сервере 4Гб ОЗУ, поэтому я предположил, что этот параметр надо выставить в половину ОЗУ, как рекомендует 1С для PosgreSQL.
  • work_mem = 16MB – насколько я понимаю, этот параметр зависит от среднего размера таблиц, в любом случае, для тонкой настройки надо тестировать на конкретном сервере с конкретной базой.

Более подробно о настройках pg_hba.conf и postgresql.conf можно почитать здесь и здесь.

  1. Перезапускаем постгрес:
service postgresql restart

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

Stopping postgresql service:                                                             DONE  
Starting postgresql service:                                                             DONE

Если вы увидели вышеуказанное сообщение, значит мы правильно установили и настроили постгрес.

  1. Теперь нам предстоит установка 1С сервера. Переходим в из папки postgres в папку 1c:
cd ../1c
  1. Устанавливаем пакеты:
dpkg -i 1c*.deb
  1. Устанавливаем дополнительные пакеты, которые необходимы для нормальной работы сервера:
apt-get install imagemagick libglib2.0-dev libgsf-1-114 texlive-base ttf-mscorefonts-installer unixodbc
  1. Далее нам необходимо проверить, все ли пакеты необходимые для корректной работы сервера 1С установлены. Сделать это можно с помощью утилиты config_server, которая входит в комплект дистрибутива сервера 1С. Переходим в каталог утилиты:
cd /opt/1C/v8.2/i386/utils

Где i386 - разрядность системы. Для 32-битных системы надо указывать - i386, а для 64-битных систем указывать - x86_64
Запускаем config_server:

./config_server

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

  1. Теперь добавим локаль. Переходим в папку locale:
cd /usr/lib/locale  
ln -s en_US.utf8 en_US  
cd /usr/share/locale  
ln -s en en_US
  1. Даем пользователям 1С сервера права на запись:
chown -R usr1cv82:grp1cv82 /opt/1C
  1. Добавляем сервер 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С сервер в автозагрузку. Если вы не получили этого сообщения, значит что то сделали неправильно. Точно следуйте инструкции и все получится.

  1. Перезагружаем сервер. Проверяем запускаются ли при старте системы постгрес и сервер 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: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:1563                  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
  1. Так же для профилактики можно проверить, все ли процессы сервера запущены нормально:
ps aux|grep 1c

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

usr1cv82   762  0.0  2.3 104408 12080 ?        Ssl  14:41   0:01 /opt/1C/v8.2/i386/ragent -daemon  
usr1cv82   765  0.0  3.5 147068 18068 ?        Sl   14:41   0:04 /opt/1C/v8.2/i386/rmngr -port 1541  
usr1cv82   785  0.0 13.9 312112 70828 ?        Sl   14:41   0:03 /opt/1C/v8.2/i386/rphost -range 1560:1591 -reghost 1cserver -regport 1541 -pid 0277dd48-5d08-11e0-bb9c-0800273075f1
  1. Также нам необходим веб-сервер apache, без него нельзя реализовать новые возможности 1С:Предприятия 8.2. У меня apache был установлен вместе с пакетом LAMP, еще на этапе установки ОС. Если же у вас его нет, установим его:
apt-get install apache2

Если вы не планируете использовать apache для других целей, то он готов к работе с 1С сервером. Все сервер 1С:Предприятие готов к работе.

Очень часто, люди установившие данную связку в первый раз, не знают какие HASP-ключи им необходимы. Для полноценной работы вплоть до 12 пользователей, необходим лишь сетевой HASP-ключ на определенное количество пользователей. Данный HASP-ключ имеет маркировку NETXX ORGL8, где - XX количество лицензий. В случае если планируется больше 12 пользователей, также необходим серверный HASP-ключ, который имеет маркировку - ENSR8. Более подробно о ключах и ценах на них вы можете прочитать здесь.

ВАЖНО: Для 64-битной ОС нужен 64-битный серверный HASP-ключ. 32-битный серверный HASP-ключ на 64-битной ОС работать не будет!

Для нормальной работы HASP-ключей, необходимо установить драйвер для HASP-ключа и менеджер лицензий. Что мы и проделаем ниже.

  1. Я решил воспользоваться драйверами от Etersoft. Пакеты необходимые под архитектуру вашего сервера вы найдете по следующим ссылкам х86 х64. Авторизируемся под рутом:
sudo -i
  1. Монтируем флешку, как это было указано в главе "Подготовка сервера". Переходим в папку с дистрибутивами HASP-драйверов:
cd /opt/1cinstall/hasp
  1. Устанавливаем скачанные пакеты:
dpkg -i *.deb
  1. Выключаем сервер:
shutdown -h now
  1. Ставим ключ, включаем сервер. Загружаются только те драйверы, ключ для которых вставлены в сервер. Проверить работает ли HASP-ключ можно командой:
sudo service haspd status

Установка на x64 машине

Поскольку некоторые программы в пакете haspd являются 32-битными, в системе должна быть установлена поддержка 32-битных программ. В Ubuntu это пакет ia32-libs.

  1. Для начала укажем параметры сервера в hosts:
192.168.11.4     1cserver



Где 192.168.11.4 - ip адрес машины на которой установлен 1С сервер, а 1cserver - имя машины на которой установлен 1С сервер. Файл hosts находится в директории:

%SystemRoot%\system32\drivers\etc
  1. Через оснастку Администрирование серверов 1С Предприятия, оснастка находится в:
Меню Пуск » Программы » 1С Предприятие 8.2 » Дополнительно

Создадим центральный сервер:


Указываем параметры вновь создаваемого сервера 1С:


Где 1cserver - имя машины на которой установлен 1С сервер

Далее создадим базу на 1С сервере, через добавление новой базы данных в клиенте 1С:


Указываем псевдоним БД, т.е. имя которое будет отображаться в списке доступных БД:


Указываем параметры вновь создаваемой БД, сервер на котором БД будет создана, пользователя через которого будем коннектиться и др.:


Где 1cserver - netbios имя нашего сервера, base - имя создаваемой базы, postgres - пользователь постгреса.

Основные настройки закончены, остальное не так важно и настраивается индивидуально:


Основные моменты: толстый клиент - все обработки и вычисления производятся на стороне клиента, тонкий клиент - вычисления производятся на стороне сервера.

Теперь попробуйте запустить конфигуратор и загрузить туда какие нибудь данные. У меня процесс прошел на ура:


Для резервного копирования я решил использовать встроенную утилиту PostgreSQL.

Описание
pg_dump - это утилита для резервного копирования базы данных PostgreSQL. Она создает непротиворечивую резервную копию базы даже если она используется в это время. pg_dump не блокирует другие пользовательские подключения к базе данных (чтения и записи).
Дампы могут быть записаны в формате скрипта или файла архива. Скриптовые дампы – это простые текстовые файлы, содержащие набор SQL команд, требуемых для восстановления базы данных на период времени, когда они были сохранены. Для восстановления с такого файла сценариев его содержимое перенаправляют в psql. Скриптовые файлы могут быть использованы для восстановления базы данных даже на других машинах и других архитектурах; с некоторой модификацией, даже на других SQL серверах управления базами данных.

Альтернативные архивные форматы файла для восстановления базы данных используются с pg_restore. Они дают возможность pg_restore выбрать что восстанавливать или даже изменить порядок приоритетов пунктов при восстановлении. Архивные форматы файлов разработанные портативными для всех архитектур.
Использование одного из архивных форматов файла и комбинирование с pg_restore, pg_dump обеспечивает гибкий механизм архивирования и переноса. pg_dump может быть использован для резервного копирования всей базы данных, тогда с помощью pg_restore можно посмотреть содержимое архива и/или выбрать какие части базы данных нужно восстановить. Наибольшую гибкость выходного файла имеет пользовательский формат «custom» (-Fc). Он дает возможность выбора и изменения порядка всех пунктов архивирования, и использует сжатие по умолчанию.

Во время работы pg_dump следует проверять вывод на предмет каких-либо предупреждений (вывод на stderr), особенно в свете ограничений, перечисленных ниже.

pg_dump создает дамп базы данных в тектовом или другом формате.  
Синтаксис  
pg_dump [OPTION]... [DBNAME]  
General options:  
-f, --file=FILENAME         извлекать в этот файл  
-F, --format=c|t|p          формат извлекаемого файла (custom, tar, plain text)  
-v, --verbose               установить подробный режим  
-Z, --compress=0-9          установить режим сжатия. 0 - без сжатия, 9 - макс. сжатие.  
--lock-wait-timeout=TIMEOUT ошибка при блокировке таблицы, при истечении тайм-аута  
--help                      вывести на экран справку и выйти  
--version                   вывести на экран версию утилиты и выйты  
Опции управления извлекаемыми данными:  
-a, --data-only             скидывать в дамп только данные (определения данных)  
-b, --blobs                 включать большие объекты в дамп  
-c, --clean                 очистка (drop) базы данных перед восстановлением дампа  
-C, --create                создание базы данных перед восстановлением дампа  
-E, --encoding=ENCODING     создавать дамп в определенной кодировке  
-n, --schema=SCHEMA         включать в дамп только перечисленные схемы  
-N, --exclude-schema=SCHEMA исключать из дампа перечисленные схемы  
-o, --oids                  сбрасывать в дамп идентификаторы объектов (OIDs)  
-O, --no-owner              не включать команды задания принадлежности объектов  
при создании дампа в текстовом формате  
-s, --schema-only           включать в дамп только схемы, а не данные.  
-S, --superuser=NAME        указать имя суперпользователя, используется только  
в текстовом формате (plain text)  
-t, --table=TABLE           включать в дамп только перечисленные таблицы  
-T, --exclude-table=TABLE   исключать из дампа перечисленные таблицы  
-x, --no-privileges         не сохранять права доступа. Команды (grant/revoke)  
--binary-upgrade            предназначена для использования вместо утилиты обновления  
--inserts                   сохранять как INSERT-команды, предпочтительнее чем COPY  
--column-inserts            сохранять как INSERT-команды с именами столбцов  
--disable-dollar-quoting    отключить разделитель в виде знака доллара, использовать  
стандартый SQL разделитель  
--disable-triggers          отключить триггеры во время восстановления данных  
--no-tablespaces            не включать в дамп команды создания табличных пространств  
для перечисленных объектов  
--role=ROLENAME             выдавать команду SET ROLE после подключения к базе данных  
--use-set-session-authorization  
включить стандартые SQL-команды SET SESSION AUTHORIZATION  
вместо команд ALTER OWNER для установки права собственности  
объекта  
Опции подключения:  
-h, --host=HOSTNAME      задает сетевое имя машины на которой работает сервер баз данных  
-p, --port=PORT          задает TCP порт на котором сервер прослушивает соединения  
-U, --username=NAME      задает имя пользователя от которого происходит подключение  
-w, --no-password        никогда не выдавать приглашения ввести пароль  
-W, --password           принудительно выдает приглашение ввести пароль  
(должно происходить автоматически)  
Если имя базы данных не указана, то используется переменная окружения PGDATABASE  
Сообщять об ошибках на <pgsql-bugs@postgresql.org>.

На данный момент планируется скрипт со следующими возможностями:

  • возможность указывать кол-во хранимых бэкапов. При превышении допустимого кол-ва хранимых бэкапов, скрипт должен удалять самый старый бэкап
  • использовать встроенные средства для бэкапа (pg_dump)
  • сбрасывать дамп без запроса пароля

А тем кто хочет просто периодически делать бэкап, советую добавить задание в crontab. Например:

30 20  * * *   postgres pg_dump -Fc -Z9 dbname -f /path/to/backup_folder/dbname.dump.out

Где *30 20 * * - время копирования (ежедневно в 20:30), postgres - пользователь от которого будет выполнятся бэкап, dbname** - имя БД, дамп которой будет сохряняться.

Ну и напоследок скрипты от форумчан (сам пока мало смыслю в скриптописании):
[spoiler=1. Скрипт от i2ks]

#!/bin/bash  
#задаем дату и время бекапа  
DATA=`date +%F.%H%M%S`  
#имя хоста. на которм будем выполнять скрипт, можно и не писать, но для меня так проще.  
HOST=`hostname`  

#переходим в каталог для бекапа, сначала проверяем, есть ли каталог с датой, если есть, то переходим в него, если нет то создаем и переходим.  
cd /var/lib/pgsql/9.1/backups  
if [[ -d `date +%F` ]]; then cd `date +%F`  
else  
mkdir `date +%F`  
cd `date +%F`  
fi  

#Dump all BD  
#Полный бекап БД,  
#pg_dumpall > db_all.$HOST.$DATA.sql  
#Необходимо делать хотя бы раз в месяц.   

#Dump DB  
#Дамп БД, где postgres - имя пользователя, namedb - имя базы данных, архив имеет следующий формат.  
#имя базы даннх. имя хоста, дата и время, расширение gz: namedb.linux-pc.2013-02-11.143034.gz  
pg_dump -U postgres namedb | gzip > namedb.$HOST.$DATA.sql.gz  

#пауза  
sleep 3  

#remove old arh  
#удаляем старые архивы, а точней файлы старше 7 дней, так же удаляем  пустые каталоги.  

#поиск  
FIND="/usr/bin/find"  
#каталог где ищем  
DIR_FILES="/var/lib/pgsql/9.1/backups*"  
#парвметр удаления: тип - файлы, старше 7 дней.  
PARAM="-type f -ctime +7"  
#удаление  
DEL="| xargs rm -rfv {} \;"  

#---------  
#Delete empty dirs  
#удаляем пустые директории, директории где есть файлы будут не затронуты.  
cd /var/lib/pgsql/9.1/backups/  
rmdir *  

#  
eval $FIND $DIR_FILES $PARAM $DEL  
# или аналогично "/usr/bin/find /var/lib/pgsql/9.1/backups* -type f -ctime +7 | xargs rm -rfv {} \;" , без кавычек.  

exit 0  
#читаем маны man pg_dump , man pg_dumpall  
#see pg_dump and pg_dumpall

[/spoiler]

Перед нами стоит задача - настроить доступ к базам данных сервера 1С:Предприятие через web-клиент (браузер). Чтобы пользователи получили возможность работать с 1С:Предприятие через браузер, без установки клиентского программного обеспечения. Обращаю внимание, на то, что без специального сетевого HASP-ключа, веб-клиент работать не будет.

  1. Итак веб-сервер apache установлен, в наличии имеем корневой каталог:
/var/www

Где находится единственный файл:

index.html

Для начала создадим в корневом каталоге apache, папку base:

mkdir /var/www/base

Где base - имя базы данных к которой необходимо настроить доступ посредством веб-сервера apache.

  1. Добавляем в httpd.conf необходимые данные о базе данных, с помощью скрипта webinst, входящего в состав пакета 1С сервера. Для этого переходим в каталог:
cd /opt/1C/v8.2/i386

Запускаем скрипт с необходимыми параметрами:

./webinst -apache22 -wsdir base -dir '/var/www/base' -connStr 'Srvr="1cserver";Ref="base";' -confPath /etc/apache2/httpd.conf

Где base - имя БД к которой настраиваем доступ, 1cserver - имя сервера на котором установлен 1С сервер.

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

Установка успешно выполнена.  
acp:  /etc/apache2/httpd.conf  
rd:   /var/www/base  
vd:   /etc/apache2/httpd.conf

Также можно проверить правильность настроек, просмотрев что прописалось в файл httpd:

LoadModule _1cws_module "/opt/1C/v8.2/i386/wsap22.so"  
# 1c publication  
Alias "base" "/var/www/base/"  
<Directory "/var/www/base/">  
AllowOverride None  
Options None  
Order allow,deny  
Allow from all  
SetHandler 1c-application  
ManagedApplicationDescriptor "/var/www/base/default.vrd"  
</Directory>

В каталоге базы вы должны найти файл 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="/base"  
ib="Srvr=&quot;1cserver&quot;;Ref=&quot;base&quot;;"/>

Где 1cserver - имя сервера на котором находится 1С сервер, base - имя БД к которой настраиваем доступ, а " - кавычки написанные кодом.

  1. Теперь даем права на директорию:
chown -R www-data:www-data /var/www/base
  1. Перезагружаем apache:
service apache2 restart
  1. В браузере на клиентской машине отключаем блокировку всплывающих окон. Пробуем пройти по адресу:
http://1cserver/base

Где base - имя БД к которой мы настроили доступ, а 1cserver - имя сервера на котором настроен веб-сервер Apache. Видим следующее:


  1. Чтобы решить эту проблему нам необходимо с помощью оснастки "Администрирование серверов 1С Предприятия" в свойствах БД, дать разрешение серверу 1С выдавать лицензии:


Если вы сделали все правильно, то откроется база к которой мы настраивали доступ:


По факту работа через браузер, это работа с помощью тонкого клиента, а для этого конфигурация должна поддерживать работу в режиме управляемого приложения. Иначе никак...

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

  1. Для начала надо сделать бэкапы (резервные копии) баз данных (предварительно выгнав всех из 1С), которые крутятся на сервере. Бэкапы будем делать средствами 1С. Для этого открываем конфигуратор, в меню Сервис выбираем пункт Выгрузить информационную базу:

В открывшемся окне выбираем директорию, куда будет сохраняться бэкап, и указываем имя бэкапа (я просто добавляю к стандартному имени бэкапа дату в формате ГГГГ.ММ.ДД):

  1. Теперь нужно удалить пакеты сервера 1С:Предприятие, которые необходимо обновить. Но перед удалением, завершим процессы сервера 1С:Предприятие:
service srv1cv82 stop

Получаем выхлоп:

Stopping 1C:Enterprise 8.2 server: OK
  1. Затем посмотрим, какие пакеты сервера 1С:Предприятие у нас установлены:
dpkg -l | grep 1c-enterprise

Получаем примерный выхлоп:

ii  1c-enterprise82-common              8.2.14-533                   1C:Enterprise 8.2 common components  
ii  1c-enterprise82-common-nls          8.2.14-533                   National resource files for 1C:Enterpise 8.2 common components for Linux  
ii  1c-enterprise82-server              8.2.14-533                   1C:Enterprise 8.2 server for Linux  
ii  1c-enterprise82-server-nls          8.2.14-533                   National resource files for 1C:Enterpise 8.2 server for Linux  
ii  1c-enterprise82-ws                  8.2.14-533                   1C:Enterpise 8.2 Web-services components for Linux  
ii  1c-enterprise82-ws-nls              8.2.14-533                   National resource files for 1C:Enterpise 8.2 Web-services components for Linux
  1. Мы узнали какие пакеты сервера 1С:Предприятия у нас установлены, можно приступить к их удалению. Пакеты удаляются в обратно порядке:
dpkg -r 1c-enterprise82-ws-nls 1c-enterprise82-ws 1c-enterprise82-server-nls 1c-enterprise82-server 1c-enterprise82-common-nls 1c-enterprise82-common

Проверим, не осталось ли каких либо файлов, после удаления пакетов:

dpkg -l | grep 1c-enterprise

Получаем примерный выхлоп:

rc  1c-enterprise82-server              8.2.14-533                   1C:Enterprise 8.2 server for Linux  
rc  1c-enterprise82-ws                  8.2.14-533                   1C:Enterpise 8.2 Web-services components for Linux

После удаления остались некоторые файлы настроек, их тоже необходимо удалить:

dpkg -P 1c-enterprise82-ws 1c-enterprise82-server

И вновь проверяем, не осталось ли каких либо файлов от пакетов сервера 1С:Предприятие:

dpkg -l | grep 1c-enterprise

Все, команда не показывает никаких пакетов, значит мы полностью удалили сервер 1С:Предприятие.

  1. Теперь можно устанавливать пакеты новой версии сервера 1С:Предприятие. Я не буду описывать этот процесс, т.к. он уже описан в главе *Установка сервера 1С:Предприятие 8.2..**

6. Если вы не планируете обновлять сервер баз данных PostgreSQL, то дальше вам нет необходимости читать главу. Если же вы все же решили поставить новую версию PosgreSQL, то для начала вам надо остановить PostgreSQL:

service posgresql stop
  1. Теперь посмотрим какие пакеты PostgreSQL установлены:
dpkg -l | grep postgre

Получаем примерный выхлоп:

ii  postgre-etersoft-8.4                 8.4.4-eter2ubuntu            PostgreSQL client programs and libraries (Etersoft edition for Selta and 1C)  
ii  postgre-etersoft-8.4-contrib         8.4.4-eter2ubuntu            Contributed source and binaries distributed with PostgreSQL  
ii  postgre-etersoft-8.4-docs            8.4.4-eter2ubuntu            Extra documentation for PostgreSQL  
ii  postgre-etersoft-8.4-plpython        8.4.4-eter2ubuntu            The Python procedural language for PostgreSQL  
ii  postgre-etersoft-8.4-server          8.4.4-eter2ubuntu            The programs needed to create and run a PostgreSQL server
  1. Мы узнали какие пакеты PostgreSQL установлены у нас на сервере, можно приступать к удалению этих пакетов. Удаляем снова в обратном порядке:
dpkg -r postgre-etersoft-8.4-server postgre-etersoft-8.4-plpython postgre-etersoft-8.4-docs postgre-etersoft-8.4-contrib postgre-etersoft-8.4

Проверяем наличие неудаленных частей пакетов:

dpkg -l | grep postgre

Получаем примерный выхлоп:

rc  postgre-etersoft-8.4-contrib         8.4.4-eter2ubuntu            Contributed source and binaries distributed with PostgreSQL  
rc  postgre-etersoft-8.4-server          8.4.4-eter2ubuntu            The programs needed to create and run a PostgreSQL server

Удаляем файлы, оставшиеся после первого удаления:

dpkg -P postgre-etersoft-8.4-server postgre-etersoft-8.4-contrib

При выполнении команды dpkg -P postgre-etersoft-8.4-server, вы получите предупреждение:

(Чтение базы данных ... на данный момент установлено 45206 файлов и каталогов.)  
Удаляется пакет postgre-etersoft-8.4-server ...  
Вычищаются файлы настройки пакета postgre-etersoft-8.4-server ...  
dpkg: предупреждение: при удалении postgre-etersoft-8.4-server не пустой каталог «/var/lib/pgsql/data» не удалён.  
dpkg: предупреждение: при удалении postgre-etersoft-8.4-server не пустой каталог «/var/lib/pgsql» не удалён.

Это предупреждение сообщает, что каталоги с базами данных не были удалены. Это в свою очередь значит, что скорее всего, нам не придется восстанавливать бэкапы после установки новой версии PostgreSQL.

  1. Все, теперь можно устанавливать новую версию PosgreSQL. Но как и в случае с обновлением сервера 1С:Предприятие, я не буду описывать процесс установки PostgreSQL. Этот процесс описан в главе - Установка PostgreSQL@Etersoft 8.4.4.

Идея добавления этой главы, была позаимствована у alsigned. Читая сообщения в теме с просьбами о помощи в решении возникших проблем, замечаю что большая часть ошибок в основном связана либо с невнимательностью, либо с установкой на платформу отличную от указанной в статье. Эта глава посвящена ошибкам возникающим во время установки и настройки сервера 1С:Предприятие и его компонентов.

В качестве примера приведу один из комментариев:

Nigelist спасибо за статью.
Сделал все, как вы написали, только вышла какая-то фигня с локалями. При попытки создания базы данных, с удаленного пк, 1с выдает ERROR: нeвepнoe знaчeниe для пapaмeтpa "lc_messages": "en_US"
Ставил сервер Ubuntu 10.10 английский. Postgres etersoft 8.4.4 1С платформа 8.2.13

И это несмотря на то, что в статье явно указана версия используемой ОС и локаль используемая по-умолчанию.

Потому я напоминаю о необходимости устанавливать те версии дистрибутивов, которые рассмотрены в данной статье. Особенно в тех случаях, когда вы не готовы решать сопутствующие проблемы.

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

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

Со временем, я буду добавлять способы решения наиболее часто встречающихся ошибок. Принимаются пожелания.

[spoiler=1. Перестал запускаться сервер баз данных PostgreSQL]
Чаще всего данная ситуация возникает смены владельца папки:

/var/lib/pgsql

Проверяем, владельца папки:

ls -l /var/lib

Права на папку должны принадлежать пользователю postgres и группе postgres. Если это не так, то необходимо задать права:

sudo chown postgres:postgres /var/lib/pgsql

После этого можно запустить сервер БД:

service postgresql start

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

В принципе процедура настройки импорта лицензий очень проста. Достаточно создать файл конфигурации nethasp.ini в директории:

/opt/1C/v8.2/i386/conf

Создаем файл:

touch /opt/1C/v8.2/i386/conf/nethasp.ini

Открываем для редактирования:

nano /opt/1C/v8.2/i386/conf/nethasp.ini

Вносим нижеуказанные данные:

[NH_COMMON]  
NH_TCPIP = Enabled              ; Метод поиска сервера лицензий  
[NH_TCPIP]  
NH_SERVER_ADDR = 192.168.0.232  ; Список IP адресов серверов лицензий  
NH_PORT_NUMBER = 475            ; Номер слушаемого порта  
; По умолчанию 475  
NH_TCPIP_METHOD = TCP           ; Протокол обмена информацией с сервером лицензий  
; Я предпочитаю использовать TCP  
; По умолчанию UDP

На этом настройка импорта лицензий закончена. Возможно потребуется перезапуск сервера 1С:Предприятие.

ВАЖНО: Каждый веб-клиент открытый в браузере, требует наличия лицензии 1С на рабочее место, точно-такой же как и для платформы 1С (тонкий клиент, толстый клиент, конфигуратор), работающей через обычное соединение.[/spoiler]

1С сервер на Ubuntu 10.04 LTS
Автор: baklan | Pg1C | 02.05.2010, 20:42

1С:Предприятие 8.2 и СУБД PostgreSQL 8.3.7 на Ubuntu Server 9.04
Автор: Ruslan Khissamov | 1C-PRO | 29.10.2009, 17:51

Оптимизация работы Postgre SQL
Автор: Andrey Igorevich | Wiki Etersoft | 2010.08.04, 19:52

Настройки Postgresql для 1с
Автор: SeaSun | 1CLinux | 2010.10.13, 02:23:22

На данный момент это пока все...

umart
umart написал #2

Проделал на этой неделе Ваш же путь, но лучше бы подождал выхода статьи. Некоторые моменты не учёл.
Единственное принципиальное отличие, поднял на виртуальном сервере Proxmox.
В целом, спасибо!

kakawkin
kakawkin написал #3

по этой инструкции поставил 1С 8.1 и не пшло ( после комманды netstat -atn|grep 0.0.0.0:15 ничего не появилось )
Не подскажите мб там вовсе по другому чтоли надо устанавливать

Nigelist
Nigelist написал #4 Автор

umart, я сначала все это тоже на виртуальной машине развернул. Использовал VirtualBox...

kakawkin, точно не скажу. Но есть предположение, что вы неправильно выполнили пункт 8, инструкции по установке 1С сервера. Выложите выхлоп команды:

update-rc.d srv1cv82 defaults

А чего не переходите на 8.2? Ведь переходные конфиги уже выпустили?

Кстати, вы дистрибутив сервера качали на офф.сайте? Если нет, попробуйте достать с офф.сайта или хотя бы с руборда. Свой дистр я брал на руборде.

kakawkin
kakawkin написал #5

просто дали задани - поднять сервак. а саму 1с я не знаю - тоесть инекоторые же юзают 7.7 и бдет ли совместимость там или как-то конвертить все

Nigelist
Nigelist написал #6 Автор

kakawkin, насчёт перехода 7.7 на 8.+ обращайтесь к профи. Сами вы нормально конвертировать не сможете.

Ну подняли вы сервер, и что? Бэкап средствами постгреса делать умеем? Это самое элементарное что надо предусмотреть...

Проблему с добавлением 1С сервера в автозапуск вы решили?

sdv2010
sdv2010 написал #7

Nigelist, По поводу статьи - как и обещал пошел тестить твой мануал - как закончу, сообщу результат :D
Разобрался с терминальным доступом и победил клавиатуру - могу прислать заготовку статьи, если посчитаешь что полезно....можно будет добавить....
Вы где-то упомянули об backup 1C8 с помощью Postgres...можно узнать версии 1С и Postgres на которых это работает....раньше были проблемы. Ну и ссылочку если возможно!!!!

Nigelist
Nigelist написал #8 Автор

Nigelist, По поводу статьи - как и обещал пошел тестить твой мануал - как закончу, сообщу результат :D
Разобрался с терминальным доступом и победил клавиатуру - могу прислать заготовку статьи, если посчитаешь что полезно....можно будет добавить....
Вы где-то упомянули об backup 1C8 с помощью Postgres...можно узнать версии 1С и Postgres на которых это работает....раньше были проблемы. Ну и ссылочку если возможно!!!!

Ну-с, ждем отзыва... А по поводу заготовки статьи по терминалу присылай протестирую, выложу в массы... smile

По поводу бэкапа БД 1С, средствами постгреса еще не пробовал. Читаю тут книжку - "Дж Уорсли Дж Дрейк - PostgreSQL для профессионалов", посмотрим что начитаю... :rolleyes: Работает со всеми версиями, но есть тонкости создания и восстановления бэкапа. Читал, но не помню где.

Еще хочу поднять подключение к БД 1С сервера через апач.

kakawkin
kakawkin написал #9

все пашет отлично - просто замечательно!

Nigelist
Nigelist написал #10 Автор

sdv2010, по поводу терминального доступа, предлагаю дружно посмотреть в сторону RX@Etersoft. smile Так как в этой теме работаем на Ubuntu, то вот линки:
x86
x64

kakawkin
kakawkin написал #11

я не очень силен в серверах - но думаю что с терминальным сервером надо сделать следующее:
1) Установить на ubuntu postgresql && 1c server по данной инструкции - хорошая инструкция
2) далее установить пакеты RX@Etersoft
3) бросить 1С файлики
и далее клиенты не зависят от своей 1С ( где то одну конфигурацию добавить, то записи где-то изменить ) апросто запускают с сервака и тем самым надо обслуживать одну копию 1С а не все 20 или 30 ???

sdv2010
sdv2010 написал #12

Nigelist,
Терминальный сервер только что поставил на базе Ubuntu-32x-PAE + RX, но отдельно от сервера 1С...
Там есть нюансы - постараюсь до конца недели выложить...Кстати для тех кому это интересно ....каждая терминальная сессия с запуском 1С 8.1 отжирает из оперативы около 300 мб, нагрузка на процессор незначительна... Поэтому если будете разворачивать все на одной машине - берите оперативной памяти с избытком, иначе уход в swap и дикие тормоза при транзакциях!!!! Это для начинающих и раздумывающих... smile

Nigelist
Nigelist написал #13 Автор

Nigelist,
Терминальный сервер только что поставил на базе Ubuntu-32x-PAE + RX, но отдельно от сервера 1С...
Там есть нюансы - постараюсь до конца недели выложить...Кстати для тех кому это интересно ....каждая терминальная сессия с запуском 1С 8.1 отжирает из оперативы около 300 мб, нагрузка на процессор незначительна... Поэтому если будете разворачивать все на одной машине - берите оперативной памяти с избытком, иначе уход в swap и дикие тормоза при транзакциях!!!! Это для начинающих и раздумывающих...

Значит нужно посмотреть в сторону апача. Может он меньше будет оперативы отъедать... Кстати ты не пробовал в

/var/lib/pgsql/data/postgresql.conf

В строке fsync = off, поменять значение на on? Интересно будет больше отъедать или меньше?

sdv2010
sdv2010 написал #14

Nigelist,
По поводу "В строке fsync = off, поменять значение на on? Интересно будет больше отъедать или меньше?" - памяти больше не отъедает ( визуально smile ), но быстродействие системы страдает существенно....
Однако я работаю только fsync = on, так как сильно плохо с питанием сервера, но при этом за 1,5 года НЕ БЫЛО случаев , чтобы сервер сам не рестартанул и 1С не запускалась!!!! Вывод - такой вариант очень надежен в плане сохранности базы 1С, можно даже без необходимости и бэкапы не делать!!!! Если большой интерес сравнить - предлагай метод - попробую и выложу на обсуждение...

sdv2010
sdv2010 написал #15

Nigelist, в почтовый ящик посмотри!!!