Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> программы —> 1С:Предприятие 8.1

1С:Предприятие 8.1 + PostgreSQL на FreeBSD

Автор: f0s.


В этой статье будет описано, как настроить и запустить 1С:Предприятие 8.1 на сервере с FreeBSD. Все настройки производились на:

Система:

[f0s@fileserver] /home/f0s/> uname -a
FreeBSD fileserver.artpaint 6.2-RELEASE-p8 FreeBSD 6.2-RELEASE-p8 #0:
Fri Nov 16 11:36:47 MSK 2007       root@fileserver.artpaint:
/usr/obj/usr/src/sys/fileserver.kern-2007-16-11       amd64



Процессор:

[f0s@fileserver] /home/f0s/> dmesg -a | grep CPU
CPU: Intel(R) Core(TM)2 CPU          6600  @ 2.40GHz (2407.20-MHz K8-class CPU)
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
cpu0: <ACPI CPU> on acpi0
p4tcc0: <CPU Frequency Thermal Control> on cpu0
cpu1: <ACPI CPU> on acpi0
p4tcc1: <CPU Frequency Thermal Control> on cpu1
SMP: AP CPU #1 Launched!
cpu_reset: Stopping other CPUs
CPU: Intel(R) Core(TM)2 CPU          6600  @ 2.40GHz (2407.21-MHz K8-class CPU)
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
cpu0: <ACPI CPU> on acpi0
p4tcc0: <CPU Frequency Thermal Control> on cpu0
cpu1: <ACPI CPU> on acpi0
p4tcc1: <CPU Frequency Thermal Control> on cpu1
SMP: AP CPU #1 Launched!
cpu_reset: Stopping other CPUs
CPU: Intel(R) Core(TM)2 CPU          6600  @ 2.40GHz (2407.21-MHz K8-class CPU)
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
cpu0: <ACPI CPU> on acpi0
p4tcc0: <CPU Frequency Thermal Control> on cpu0
cpu1: <ACPI CPU> on acpi0
p4tcc1: <CPU Frequency Thermal Control> on cpu1
SMP: AP CPU #1 Launched!
cpu_reset: Stopping other CPUs
CPU: Intel(R) Core(TM)2 CPU          6600  @ 2.40GHz (2407.20-MHz K8-class CPU)
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
cpu0: <ACPI CPU> on acpi0
p4tcc0: <CPU Frequency Thermal Control> on cpu0
cpu1: <ACPI CPU> on acpi0
p4tcc1: <CPU Frequency Thermal Control> on cpu1
SMP: AP CPU #1 Launched!



Итак, первым делом надо воткнуть эмулятор линуха. Так как FreeBSD 6.2 не поддерживает LinuxABI ядра ветки 2.6, то устанавливаем FC4.


[f0s@fileserver] //> cd /usr/ports/emulators/linux_base-fc4
[f0s@fileserver] /usr/ports/emulators/linux_base-fc4/> make
[f0s@fileserver] /usr/ports/emulators/linux_base-fc4/> make install
[f0s@fileserver] /usr/ports/emulators/linux_base-fc4/> make clean



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

[f0s@fileserver] //> cd /tmp/1c/lib
[f0s@fileserver] /tmp/1c/lib/> wget \
? ftp://ftp.ipt.ru/pub/download/1C/linux-f8-audit-libs.shar
[f0s@fileserver] /tmp/1c/lib/> wget \
? ftp://ftp.ipt.ru/pub/download/1C/linux-f8-pam.shar
[f0s@fileserver] /tmp/1c/lib/> wget \
? ftp://ftp.ipt.ru/pub/download/1C/audit-libs-1.7.4-1.fc8.i386.rpm
[f0s@fileserver] /tmp/1c/lib/> wget \
? ftp://ftp.ipt.ru/pub/download/1C/pam-0.99.8.1-17.1.fc8.i386.rpm


скаченные RPM-ки кидаем в /usr/ports/distfiles/rpm/i386/fedora/8. Разворачиваем *.shar:

[f0s@fileserver] /tmp/1c/lib/> sh linux-f8-audit-libs.shar
c - linux-f8-audit-libs
x - linux-f8-audit-libs/Makefile
x - linux-f8-audit-libs/distinfo.i386
x - linux-f8-audit-libs/pkg-plist
x - linux-f8-audit-libs/pkg-descr
[f0s@fileserver] /tmp/1c/lib/> sh linux-f8-pam.shar
c - linux-f8-pam
x - linux-f8-pam/Makefile
x - linux-f8-pam/pkg-plist
x - linux-f8-pam/distinfo.i386
x - linux-f8-pam/pkg-descr
[f0s@fileserver] /tmp/1c/lib/>


И устанавливаем:

[f0s@fileserver] /tmp/1c/lib/> cd linux-f8-audit-libs
[f0s@fileserver] /tmp/1c/lib/linux-f8-audit-libs/> make
[f0s@fileserver] /tmp/1c/lib/linux-f8-audit-libs/> make install
[f0s@fileserver] /tmp/1c/lib/> cd linux-f8-pam
[f0s@fileserver] /tmp/1c/lib/linux-f8-pam/> make
[f0s@fileserver] /tmp/1c/lib/linux-f8-pam/> make install



Далее скачиваем порты 1с:


[f0s@fileserver] //> cd /tmp/1c/linux-1c-source/
[f0s@fileserver] /tmp/1c/linux-1c-source/> wget \
? ftp://ftp.ipt.ru/pub/download/1C/linux-1C_Enterprise-common.shar
[f0s@fileserver] /tmp/1c/linux-1c-source/> wget \
? ftp://ftp.ipt.ru/pub/download/1C/linux-1C_Enterprise-server.shar


предварительно скопировав 1С:Предприятие для RPMS (i386) с сайта http://users.v8.1c.ru/ в /usr/ports/distfiles/rpm/1C


Разворачиваем *.shar:

[f0s@fileserver] /tmp/1c/linux-1c-source/> sh linux-1C_Enterprise-common.shar
c - linux-1C_Enterprise-common
x - linux-1C_Enterprise-common/pkg-plist
x - linux-1C_Enterprise-common/Makefile
x - linux-1C_Enterprise-common/distinfo.i386
x - linux-1C_Enterprise-common/pkg-descr
[f0s@fileserver] /tmp/1c/linux-1c-source/> sh linux-1C_Enterprise-server.shar
c - linux-1C_Enterprise-server
x - linux-1C_Enterprise-server/pkg-descr
x - linux-1C_Enterprise-server/Makefile
x - linux-1C_Enterprise-server/distinfo.i386
x - linux-1C_Enterprise-server/pkg-plist


И устанавливаем:

[f0s@fileserver] /tmp/1c/linux-1c-source/> cd linux-1C_Enterprise-server
[f0s@fileserver] /tmp/1c/linux-1c-source/linux-1C_Enterprise-server/> make
[f0s@fileserver] /tmp/1c/linux-1c-source/linux-1C_Enterprise-server/> make install
[f0s@fileserver] /tmp/1c/linux-1c-source/> cd linux-1C_Enterprise-common
[f0s@fileserver] /tmp/1c/linux-1c-source/linux-1C_Enterprise-common/> make
[f0s@fileserver] /tmp/1c/linux-1c-source/linux-1C_Enterprise-common/> make install


На этом этапе могут возникнуть проблемы, в виде:

[f0s@fileserver] /tmp/1c/linux-1c-source/linux-1C_Enterprise-server/> make
===>  linux-1C_Enterprise-server-8.1.12 does not support compat.linux.osrelease=2.4.2.
*** Error code 1

Stop in /tmp/1c/linux-1c-source/linux-1C_Enterprise-server.


тогда просто выставьте на время 2.6.2:

[f0s@fileserver] //> sysctl compat.linux.osrelease=2.6.2


После удачной установки, на всякий случай делаем:

[f0s@fileserver] //> cd /usr/compat/linux/opt/1C/v8.1/i386/ && chmod 777 stlport.so
[f0s@fileserver] //> cd /usr/compat/linux/etc/init.d/


верхней строчкой прописываем:

[f0s@fileserver] /usr/compat/linux/etc/init.d/> cat srv1cv81 | grep bash
#!/usr/compat/linux/bin/bash



1с установлен! Теперь нужно установить БД. Перед этим нам потребуются следующие вспомогательные программки:

[f0s@fileserver] //> cd /usr/ports/textproc/flex/ && make && make install
[f0s@fileserver] /usr/ports/textproc/flex/> make clean
[f0s@fileserver] //> cd /usr/ports/devel/bison/ && make && make install
[f0s@fileserver] /usr/ports/devel/bison/> make clean
[f0s@fileserver] //> cd /usr/ports/devel/readline/ && make && make install
[f0s@fileserver] /usr/ports/devel/readline/> make clean
[f0s@fileserver] //> cd /usr/ports/devel/icu/ && make && make install
[f0s@fileserver] /usr/ports/devel/icu/> make clean



Теперь, с уже известного нами сайта http://users.v8.1c.ru/ скачиваем PostgreSQL Server и кладем его в /tmp/1c/tmp

Далее даем команды:

[f0s@fileserver] /tmp/1c/tmp/> rpm2cpio.pl < postgresql-8.3.3-2.1C.src.rpm | cpio -iv
[f0s@fileserver] /tmp/1c/tmp/> tar xvjf postgresql-8.3.3.tar.bz2
[f0s@fileserver] /tmp/1c/tmp/> cd postgresql-8.3.3


И накладываем патчи:

[f0s@fileserver] /tmp/1c/tmp/> patch -p1 < ../rpm-pgsql.patch
[f0s@fileserver] /tmp/1c/tmp/> patch -p1 < ../postgresql-logging.patch
[f0s@fileserver] /tmp/1c/tmp/> patch -p1 < ../postgresql-test.patch
[f0s@fileserver] /tmp/1c/tmp/> patch -p1 < ../postgresql-perl-rpath.patch
[f0s@fileserver] /tmp/1c/tmp/> patch -p1 < ../postgresql-prefer-ncurses.patch
[f0s@fileserver] /tmp/1c/tmp/> patch -p0 < ../1c_FULL_83-0.19.patch
[f0s@fileserver] /tmp/1c/tmp/> patch -p0 < ../applock-1c-8.3.1.patch
[f0s@fileserver] /tmp/1c/tmp/> patch -p1 < ../postgresql-1c-8.3.patch



Если Вы скачивали патчи напрямую с сайта 1с, то выполните:

cat 1c_FULL_83-0.19.patch | tr -d "\r" > 1c_test.patch

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


После применения патчей запускаем процесс установки:


[f0s@fileserver] /tmp/1c/tmp/> cd postgresql-8.3.3
[f0s@fileserver] /tmp/1c/tmp/postgresql-8.3.3/> ./configure
[f0s@fileserver] /tmp/1c/tmp/postgresql-8.3.3/> make
[f0s@fileserver] /tmp/1c/tmp/postgresql-8.3.3/> make install


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

[f0s@fileserver] /tmp/1c/tmp/postgresql-8.3.3/> cd contrib/
[f0s@fileserver] /tmp/1c/tmp/postgresql-8.3.3/contrib/> gmake all
[f0s@fileserver] /tmp/1c/tmp/postgresql-8.3.3/contrib/> gmake install


Готово. Создадим заранее таких юзеров: pgsql, usr1cv81 и группы pgsql, grp1cv81:

pgsql:*:70:70:PostgreSQL Daemon:/usr/local/pgsql:/bin/csh
usr1cv81:*:30000:30000:User 1C:/usr/compat/linux/opt:/bin/sh


[f0s@fileserver] //> id usr1cv81
uid=30000(usr1cv81) gid=30000(grp1cv81) groups=30000(grp1cv81)
[f0s@fileserver] //> id pgsql
uid=70(pgsql) gid=70(pgsql) groups=70(pgsql)


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

в /etc/sysctl.conf:

kern.ipc.shmall=32768
kern.ipc.shmmax=134217728
kern.ipc.semmap=256



в /boot/loader.conf:

kern.ipc.semmni=256
kern.ipc.semmns=512
kern.ipc.semmnu=256


подробности читаем здесь: http://www.postgresql.org/docs/current/static/kernel-resources.html#SYSVIPC

Далее правим файл: .shrc в домашнем каталоге юзера pgsql


[f0s@fileserver] /usr/local/pgsql/> cat .cshrc
setenv PGLIB /usr/local/lib

# note: PGDATA can be overridden by the -D startup option
setenv PGDATA $HOME/data

#You might want to set some locale stuff here
#setenv PGDATESTYLE ISO
#setenv LC_ALL sv_SE.ISO_8859-1

# if you want to make regression tests use this TZ
#setenv TZ PST8PDT
setenv LANG ru_RU.UTF-8
setenv LC_CTYPE ru_RU.UTF-8
setenv LC_COLLATE ru_RU.UTF-8
setenv LC_TIME ru_RU.UTF-8
setenv LC_NUMERIC ru_RU.UTF-8
setenv LC_MONETARY ru_RU.UTF-8
setenv LC_MESSAGES ru_RU.UTF-8
setenv LC_ALL ru_RU.UTF-8



Добавим в /etc/login.conf:


pgsql:\
        :lang=ru_RU.UTF-8:\
        :setenv=LC_COLLATE=C:\
        :tc=default:


Сохраняем, выходим, даем команду: cap_mkdb /etc/login.conf


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

[f0s@fileserver] /home/f0s/> su - pgsql
%/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
The files belonging to this database system will be owned by user "pgsql".
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".

creating directory /usr/local/pgsql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers/max_fsm_pages ... 32MB/204800
creating configuration files ... ok
creating template1 database in /usr/local/pgsql/data/base/1 ... ok
initializing pg_authid ... ok
initializing dependencies ... ok
creating system views ... ok
loading system objects' descriptions ... ok
creating conversions ... ok
creating dictionaries ... ok
setting privileges on built-in objects ... ok
creating information schema ... ok
vacuuming database template1 ... ok
copying template1 to template0 ... ok
copying template1 to postgres ... ok

WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the -A option the
next time you run initdb.

Success. You can now start the database server using:

    /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
or
    /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start



Далее для удобства можно сделать симлинк, чтобы хранить базу в /var, а
также создадим каталог /var/log/pgsql (с правами pgsql:pgsql), чтобы там
хранить все логи


[f0s@fileserver] //> ln -s /var/db/postgresql /usr/local/pgsql/data
[f0s@fileserver] //> ln -s /var/log/pgsql /var/db/postgresql/pg_log



Теперь идем в /usr/local/pgsql/data/pg_hba.conf и меняем нижнюю строку с md5:

host    all         all         0.0.0.0/0             md5


на trust:

host    all         all         0.0.0.0/0             trust



Далее:


[f0s@fileserver] /usr/local/pgsql/bin/> su pgsql
# cd /usr/local/pgsql/bin
# ./postgres &
# ./psql -h localhost postgres pgsql
Password for user pgsql:
Welcome to psql 8.3.3, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

postgres=# ALTER USER pgsql ENCRYPTED PASSWORD 'pass';
postgres=# \q
# exit
[f0s@fileserver] /usr/local/pgsql/bin/>



потом обратно меняем trust на md5 в pg_hba.conf


Теперь можем начать конфигурирование PostgreSQL. Будем редактировать файл /usr/local/pgsql/data/postgresql.conf


# Путь к конфигам:
data_directory = '/usr/local/pgsql/data'
hba_file = '/usr/local/pgsql/data/pg_hba.conf'
ident_file = '/usr/local/pgsql/data/pg_ident.conf'

listen_addresses = '*'
max_connections = 100

# Дополнительный буфер между диском и процессами Postgre SQL.
# Не следует указывать слишком большой объем,
# т.к. еще существует системный Кэш, контролируемый ОС.
# Значения:
# Средний объём данных и 256–512 МБ доступной памяти: 16–32 МБ
# Большой объём данных и 1–4 ГБ доступной памяти: 64–256 МБ
shared_buffers = 64MB

# Буфер под временные объекты, в основном для временных таблиц.
# Можно установить порядка 16 МБ
temp_buffers = 16MB

# Количество одновременно подготавливаемых транзакций.
# Для работы 1С этот параметр значения не имеет.
max_prepared_transactions = 5

# Специальная память, используется для сортировки и
# кэширования таблиц, для одного запроса.
# При задании этого параметра следует учитывать количество
# конкурентых запросов, выполняемых в один момент времени.
# При памяти 1–4Gb рекомендуется устанавливать 32–128MB
work_mem = 64MB

# Память использующаяся для операций VACUUM, CREATE INDEX,
# ALTER TABLE и FOREGIN KEY.
# Следует устанавливать большее значение, чем для work_mem.
# Слишком большие значения приведут к использованию свопа.
# При памяти 1–4Gb рекомендуется устанавливать 128–512MB
maintenance_work_mem = 256MB

# Специальный стек для сервера, в идеале он должен совпадать
# с размером стека, выставленном в ядре ОС. Установка большего значения
# чем в ядре может привести к ошибкам. Рекомендуется устанавливать 2–4MB
max_stack_depth = 2MB

# Максимальное количество таблиц, для которых будет отслеживаться
# свободное место. Выставите параметр в соответствии с количеством
# таблиц в вашей базе с запасом.
#max_fsm_relations = 1000

# Количество блоков, для которых будет хранится информация о свободном месте.
# Информация хранится в разделяемой памяти, для каждой записи требуется
# по 6 байт. Использование этого параметра позволяет избежать использования
# VACUUM FULL для базы, достаточно будет VACUUM. Этот параметр должен быть
# не меньше чем 16*max_fsm_relations. Данный параметр задается автоматически
# при создании базы утилитой initdb. Можно задать его и вручную: в качестве
# начального приближения можно взять половину от среднего количества записей,
# изменяемых (UPDATE или DELETE) между запусками команды VACUUM.
max_fsm_pages = 204800

# Данный параметр отвечает за сброс данных из кэша на диск при завершении
# транзакций. Если установить его значение fsync=off, то данные не будут
# записываться на дисковые накопители сразу после завершения операций.
# Это может существенно повысить скорость операций insert и update, но
# есть риск повредить базу, если произойдет сбой (неожиданное отключение
# питания, сбой ОС, сбой дисковой подсистемы). Используйте эту возможность
# только если у вас имеются надежные ИБП и программное обеспечение,
# завершающее работу системы при низком заряде батарей.
#fsync = on

# Метод который используется для принудительной записи данных на диск.
# Если fsync=off, то этот параметр не имеет значения. Возможные значения:
# open_datasync – запись данных методом open() с опцией O_DSYNC
# fdatasync – вызов метода fdatasync() после каждого commit
# fsync_writethrough – вызывать fsync() после каждого commit игнорирую
# паралельные процессы
# fsync – вызов fsync() после каждого commit
# open_sync – запись данных методом open() с опцией O_SYNC
# Не все методы доступны на определенных платформах. По умолчанию устанавливается
# первый, который доступен в системе.
#wal_sync_method = fsync

# Установите данный параметр в off, если fsync=off
#full_page_writes = on

# Количество памяти используемое в SHARED MEMORY для ведения транзакционных логов.
# При доступной памяти 1–4GB рекомендуется устанавливать 256–1024kb
wal_buffers = 512kB

# Передает данные планировщику запросов об объеме памяти, которая используется
# ОС для кэширования файлов, для одного запроса. (Устанавливаем в половину оперативки)
effective_cache_size = 512MB

# Устанавливает глубину статистики по таблицам. БОльшие значения могут повысить
# время выполения команды ANALYZE, но улучшат построение плана запроса.
# Рекомендуется устанавливать порядка 100
default_statistics_target = 100

# Включает или отключает использование планером ограничений CONSTRAINT в таблицах
# при построении запросов. Рекомендуется установить значение on, при этом, если
# Вы изменяете CONSTRAINT у таблиц, необходимо обновить их статистику выполнив
# ANALYZE, в противном случае будут построены неверные планы запросов.
constraint_exclusion = on

# Ниже логи
log_destination = 'syslog'
syslog_facility = 'LOCAL0'
syslog_ident = 'postgres'

# Включать ли автовакуум, устанавливать on
autovacuum = on

# Пауза между запусками Автовакуума. Зависит от того, как часто обновляются данные
# в ваших таблицах. Может соствлять порядка 5min, по умолчанию 1min
autovacuum_naptime = 5min

# Данный параметр нужен для корректной работы с базой 1С
escape_string_warning = off

# Формат даты
datestyle = 'iso, dmy'

# Кодировка
lc_messages = 'ru_RU.UTF-8'
lc_monetary = 'ru_RU.UTF-8'
lc_numeric = 'ru_RU.UTF-8'
lc_time = 'ru_RU.UTF-8'

# Дефолтовая конфигурация для текстовго поиска
default_text_search_config = 'pg_catalog.russian'

# Время жизни взаимных блокировок. Установить порядка 2 секунд.
deadlock_timeout = 2s

# Количество блокировок за одну транзакцию: установить порядка 200-250
max_locks_per_transaction = 200
# Также необходимо добавить:
default_with_oids = on
stats_row_level = off
# end of file


Теперь настраиваем логи. Пишем в /etc/syslog.conf:

!postgres
*.*                                             /var/log/pgsql/postgres.log


и в /etc/newsyslog.conf:

/var/log/pgsql/postgres.log pgsql:pgsql 600  5     100  *     JC



Создаем файл лога и перезапускаем syslogd:

[f0s@fileserver] //> touch /var/log/pgsql/postgres.log
[f0s@fileserver] //> /etc/rc.d/syslogd restart


Так как мы собирали из исходников (ибо с версией из портов были проблемы), то нам бы хорошо создать скрипт, который будет автоматом запускать PostgreSQL. Создаем в /usr/local/etc/rc.d/ файл. Назовем его pgsql (права: 555)


#!/bin/sh

# $FreeBSD: ports/databases/postgresql83-server/files/postgresql.in, Exp $
#
# PROVIDE: postgresql
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following line to /etc/rc.conf to enable PostgreSQL:
#
#  postgresql_enable="YES"
#  # optional
#  postgresql_data="%%PREFIX%%/pgsql/data"
#  postgresql_flags="-w -s -m fast"
#  postgresql_initdb_flags="--encoding=utf-8 --lc-collate=C"
#  postgresql_class="default"
#
# See %%PREFIX%%/share/doc/postgresql/README-server for more info
#
# This scripts takes one of the following commands:
#
#   start stop restart reload status initdb
#
# For postmaster startup options, edit ${postgresql_data}/postgresql.conf

prefix=/usr/local/pgsql
command=${prefix}/bin/pg_ctl

. /etc/rc.subr

load_rc_config postgresql

# set defaults
postgresql_enable=${postgresql_enable:-"NO"}
postgresql_flags=${postgresql_flags:-"-s -m fast"}
postgresql_user=pgsql
eval postgresql_data=${postgresql_data:-"~${postgresql_user}/data"}
postgresql_class=${postgresql_class:-"default"}
postgresql_initdb_flags=${postgresql_initdb_flags:-"--encoding=utf-8 --lc-collate=C"}

name=postgresql
rcvar=`set_rcvar`
command_args="-D ${postgresql_data} ${postgresql_flags}"
extra_commands="reload initdb"

start_cmd="postgresql_command start"
stop_cmd="postgresql_command stop"
restart_cmd="postgresql_command restart"
reload_cmd="postgresql_command reload"
status_cmd="postgresql_command status"

initdb_cmd="postgresql_initdb"

postgresql_command()
{
    su -l ${postgresql_user} -c "exec ${command} ${command_args} ${rc_arg}"
}

postgresql_initdb()
{
# эта строчка одна (не поместилось)
    su -l -c ${postgresql_class} ${postgresql_user} -c "exec ${prefix}/bin/initdb
${postgresql_initdb_flags} -D ${postgresql_data}"
}

run_rc_command "$1"




ну и в /etc/rc.conf нужно добавить две строчки:


postgresql_enable="YES"
postgresql_class="pgsql"



После чего можно стартовать posgtresql:


[f0s@fileserver] //> /usr/local/etc/rc.d/pgsql start
[f0s@fileserver] //> ps ax | grep postg
79327  ??  Ss     0:03,62 postgres: writer process    (postgres)
79328  ??  Ss     0:02,25 postgres: wal writer process    (postgres)
79329  ??  Ss     0:00,58 postgres: autovacuum launcher process    (postgres)
79330  ??  Ss     0:00,50 postgres: stats collector process    (postgres)
79325  p0- I      0:00,36 /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
[f0s@fileserver] //>



Запустим 1с от имени usr1cv81:


[f0s@fileserver] /usr/compat/linux/opt/> su usr1cv81
$ cd 1C/v8.1/i386
$ ./ragent
1C:Enterprise 8.1 (8.1.12.101) Server Agent started. <Ctrl+C> to exit.
1C:Enterprise 8.1 (8.1.12.101) Cluster Manager started. <Ctrl+C> to exit.
1C:Enterprise 8.1 (8.1.12.101) Working Process started. <Ctrl+C> to exit.



со временем нужно будет поизучать стартовый скрипт - /usr/compat/linux/etc/init.d/srv1cv81, ибо он написан изначально под Линух.. и под фрибсд не работает.


Приступим к настройке 1с на клиенте, а именно к добавлению информационной базы 1с в сервер 1С:Предприятие. Установим 1С 8.1.12.101 под Windows на клиентской машине. Далее весь процесс я представлю на картинках. Там все наглядно показано, куда нажимать и что писать.














Теперь вы можете выбрать базу и войти в 1С:Предприятие. Приятной работы :)




1) Отдельная благодарность Boris Samorodov за порт 1С.
2) http://wiki.etersoft.ru/
3) news://fido7.ru.unix.bsd


PS. Обратите внимание! Все это будет работать без ключа до 13 подключений.. Дальше 1с захочет ключик... Пока что думаю на счет того как внедрить хасп от линуха.



размещено: 2008-11-27,
последнее обновление: 2009-11-06,
автор: f0s


vector, 2008-11-30 в 19:04:49

Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?f=8&t=6198&start=0.

поддержка linux на фре

Roman, 2008-11-30 в 19:13:50

Спасибо, как раз вовремя. а то к FreeBSD серверам добавлять ещё линуксовый как-то стремно.

P.S. очепятка: После применения патчей запускаем процесс утановки:

lisergey, 2008-12-01 в 8:24:18

Супер!!!!!

получается, что 1С-ный "кластер серверов", который ragent, запустился без ключа HASP?

lisergey, 2008-12-01 в 8:51:05

форум с обсуждением именно 1Cv8 под FreeBSD
http://forum.lissyara.su/viewtopic.php?f=3&t=8609

f0s, 2008-12-01 в 11:08:19

это я просто так изначально назвал тему.. а реально она про 1с предполагалась

ADRE, 2008-12-01 в 22:33:24

хмм... вроде было на исходнике 1С как прикручивать к Фрее вместе с ключами, надо будет глянуть....
кстате это сборка с Сетевым ключем пашет?

Pr0l, 2008-12-02 в 16:04:11

[f0s@fileserver] /tmp/1c/linux-1c-source/> cd linux-1C_Enterprise-server make

на этом месте выясняется чтонету портa на ftp://ftp.freebsd.org/pub/FreeBSD/ports/distfiles/rpm/1C/1C_Enterprise-.....rpm

подскажите что делать???

f0s, 2008-12-03 в 10:03:33

Порт не внесен в /distfiles/ в связи с тем, что для его использования нужна лицензия.. Просто скачайте эту рпм с http://users.v8.1c.ru/ и скопируйте в /usr/ports/distfiles/rpm/1C

alekciy, 2009-01-16 в 3:45:07

>Пока что думаю на счет того как внедрить хасп от линуха.
Я не думаю, что вот с этих пор: HASP LM под FreeBSD есть? что-то координальным образом изменилось.

alekciy, 2009-01-16 в 5:15:31

Кстати, не понял, зачем делать симлинк на /var "для удобства" если можно сразу задать местоположение через -D опцию?

Alik, 2009-01-17 в 16:12:16

Оболденная статья! Автор спасибо за такой труд!!!

noway, 2009-02-13 в 9:22:04

Спасибо огромное!!!

мимоходящий, 2009-03-23 в 0:22:16

прошу заметить, что, когда пользователей у 1С много и конфигурация тяжелая(вроде упп), очень желательно разложить потоки постгреса на разные диски для увеличения быстродействия. у меня разложено так(диски - вестерны рапторы, которые 10000 оборотов на контроллере 3ware): 1 - система(или зеркало - кому как;)), 2 - база(не более 1 базы на экземпляре сервера!), 3 - лог(подкладываем в /data/pg_xlog после initdb), 4 - временные таблицы(это - только для постгреса не менее 8.3), 5 - /tmp (желательно).

SergeyKa, 2009-03-31 в 12:07:02

linux-f8-audit-libs
linux-f8-pam

не захотели ставится без:

kldload linux

SergeyKa, 2009-03-31 в 16:00:36

Место где искать патчи postgres
_http://www.v8.1c.ru/overview/postgres_patches_notes.htm?printversion=1

SergeyKa, 2009-04-01 в 10:01:44

Чтобы postgresql запустился необходимо в
postgresql.conf уменьшить число конектов до 5:
max_connections = 5
и запустить постгрес, если поднимется нормально, тогда надо перекомпилить ядро, добавив в конфиг:

options         SHMMAXPGS=65536
options         SEMMNI=40
options         SEMMNS=240
options         SEMUME=40
options         SEMMNU=120

WHAT-CAN-BE-BETTER-THAN-SEX, 2009-04-24 в 15:44:27

Вот [url=http://ewgen.ru/index.php?option=com_content&task=view&id=18&Itemid=9]

userdurak, 2009-10-20 в 16:50:43

Спасибо огромное за инструкцию! Самый толковый пост на данную тему!

adre, 2009-11-26 в 6:50:56

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

Despot, 2010-07-01 в 12:49:06

Ипучий случай....нахера  под фряху поднимать 1С???Неужели у серьёзной компании нет денег на винду????Лучше пифффа попить чем заниматся сношениями с  сервером .....ужос нах...[b]

Despot, 2010-07-01 в 12:51:17

Зы ...и ещё....ubuntu рулит .....хотя и не факт IMHO:-0

f0s, 2010-07-01 в 12:57:35

Данная статья носит чисто информационный характер. В принципе использовать можно, при небольшой конторе до 10 человек. Для большой конторы - лучше на линуксе. Использовать винду - это для лентяев :) Во первых заплатишь за винду + за клиентские подключения к серверу+ за mssql с клиентскими лицензиями.. не хило выйдет по цене. Тем более на линухе работает даже побыстрее, за счет параметра fsync в постгре.

Дмитрий Стремковский, 2010-11-11 в 14:04:57

По поводу вот этого:
---
PS. Обратите внимание! Все это будет работать без ключа до 13 подключений.. Дальше 1с захочет ключик... Пока что думаю на счет того как внедрить хасп от линуха.
---
Вам в любом случае необходима будет лицензия на сервер 1С! Иначе, запопят вас проверяющие органы за использование сервера без лицензии.
Нипричём тут количество подключений.
И Руна так думала, а как с техподдержкой начал общаться - сразу вставили в мозг лицензией.
Сейчас она стоит 42 тыс.р. за 32 бита и 72 за 64

f0s, 2010-11-11 в 14:32:41

Дело не в этом. А втом, что под фрибсд нет хасп-драйвера.

Иван Петров, 2011-09-01 в 4:14:30

http://www.sparta-online.ru/content/articles/928/ Здесь статья для Debian, думаю для фрибсд будет аналогично. У автора все запускается на linux, не нужен ключ. Винда это не выход.



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0614 секунд
Из них PHP: 51%; SQL: 49%; Число SQL-запросов: 83 шт.
Исходный размер: 98379; Сжатая: 18231