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

Материал из RSU WiKi
Перейти к: навигация, поиск
Pen.pngЭта статья находится в процессе написания.
Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.

Содержание

Введение

Attention.pngВНИМАНИЕ!
Заказывайте платформу обязательно с программными лицензиями! И неважно, что по этому поводу думает ваш 1С-франчайзи.

Настройку будем производить на примере RHEL 6 (CentOS) и, по возможности, указывать команды для SLES если они отличаются существенно. Установка сервера разбита на три независимые части: веб-серврер, сервер БД и сервер 1С. Все три роли могут быть собраны на одной машине или разнесены по независимым серверам наиболее удобным образом. Далее идет описание настройки клиентской машины и машины администратора 1С под RHEL Desktop.

Реализовывать будем схему работы через веб с использованием как тонкого клиента, так и веб-браузера:

1c-inet-connection.png

Устанавливать будем сервер и клиент версии 8.3 с указанием (по возможности) отличий для версии 8.2.

Сервер

Установка RHEL Server

Attention.pngВНИМАНИЕ!
При выборе Русского языка при установке, в диалогах переключение раскладки происходит по комбинации Shift+Shift

Сразу после установки создаем репозиторий из установочного компакт-диска:

mkdir /repos/rhel6
mkdir /mnt/cd
mount /dev/cdrom /mnt/cd
cp -r /mnt/cd/* /repos/rhel6
vi /etc/yum.repos.d/iso.repo
[base]
name=CDROM
baseurl=file:///mnt/cd/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

Чтобы после перезагрузки заработала сеть, в файле

vi /etc/sysconfig/network-scripts/ifcfg-eth0

ставим:

ONBOOT=yes

Меняем hostname:

vi /etc/sysconfig/network
HOSTNAME=1c-srv.example.com

Если вы счастливый обладатель подписки RedHat:

subscription-manager register
subscription-manager --auto subscribe

Обновляем систему:

yum update

Настройка брандмауэра (firewall)

Netfilter это host-based межсетевой экран (брандмауэр/firewall) для семейства ОС Linux. Он является частью операционной системы и обычно включен по-умолчанию. Брандмауэр управляется программой под названием iptables. Фильтрация Netfilter осуществляется на уровне ядра, еще до того, как данные из сетевого пакета попадут к конечному приложению[1][2][3][4].

Конфигурационный файл Iptables

Конфигурационным файлом по-умолчанию для RHEL / CentOS / Fedora Linux является:

  • /etc/sysconfig/iptables — Системные скрипты активируют брандмауэр читая команды из этого файла.
Задача: Просмотр правил по-умолчанию

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

iptables --line-numbers -n -L

Пример вывода:

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0
Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination
Chain RH-Firewall-1-INPUT (2 references)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 255
3    ACCEPT     udp  --  0.0.0.0/0            224.0.0.251         udp dpt:5353
4    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:53
5    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
6    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
7    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:53
8    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited
Задача: Включить брандмауэр

Для того, чтобы включить брандмауэр необходимо выполнить следующие две команды:

chkconfig iptables on
service iptables start

Перезапустить брандмауэр:

service iptables restart

Остановить брандмауэр:

service iptables stop
Вникаем в брандмауэр

В нашем случае используются четыре цепочки:

  1. INPUT - Цепочка по-умолчанияю для пакетов, адресованных системе. Она используется в случае, если необходимо открыть или закрыть входящие порты (такие как 80, 25, 110 и т.п.) и IP-адреса / подсети (напр. 202.54.1.20/29).
  2. OUTPUT - Цепочка по-умолчанию для пакетов, идущих из системы. Она используется для открытия/закрытия исходящих портов, ip-адресов и подсетей.
  3. FORWARD - Цепочка по-умолчанию для пакетов, перенаправляемых на другой сетевой интерфейс. Обычно используется в случае, когда Linux-система настроена в качестве Роутера. Например, интерфейс eth0 соединен с кабельным или ADSL модемом, а eth1 подключен к локальной сети. FORWARD используется для передачи данных между интернетом и локальной сетью.
  4. RH-Firewall-1-INPUT - Специальная, определенная пользователем цепочка. Она используется цепочками INPUT, OUTPUT и FORWARD.
Правила классификации пакетов
  1. Каждый пакет начинает классифицироваться с первого правила в цепочке.
  2. Пакет продвигается до тех пор, пока не попадет под правило.
  3. Если найдено соответствие, управление переходит определенной мишени (напр. REJECT, ACCEPT, DROP)
Значения мишеней
  1. Мишень ACCEPT означает пропустить пакет.
  2. Мишень REJECT означает отклонить пакет и послать сообщение об ошибке удаленному хосту.
  3. Мишень DROP означает отклонить пакет и не посылать никаких сообщений ни удаленной системе, ни системе, которой пакет предназначался.
/etc/sysconfig/iptables

Отредактируем /etc/sysconfig/iptables, введем:

vi /etc/sysconfig/iptables

Вы увидите выставленные по-умолчанию правила:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
Отбрасываем весь трафик

Найдите строки:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

Чтобы изменить политику по-умолчанию с ACCEPT на DROP обновите строки для цепочек INPUT и FORWARD следующим образом:

:INPUT DROP [0:0]
:FORWARD DROP [0:0]
Логирование и отброс спуфинговых Source-адресов

Добавьте следующие строки перед COMMIT:

-A INPUT -i eth0 -s 10.0.0.0/8     -j LOG --log-prefix "IP DROP SPOOF "
-A INPUT -i eth0 -s 172.16.0.0/12  -j LOG --log-prefix "IP DROP SPOOF "
-A INPUT -i eth0 -s 192.168.0.0/16 -j LOG --log-prefix "IP DROP SPOOF "
-A INPUT -i eth0 -s 224.0.0.0/4    -j LOG --log-prefix "IP DROP MULTICAST "
-A INPUT -i eth0 -s 240.0.0.0/5    -j LOG --log-prefix "IP DROP SPOOF "
-A INPUT -i eth0 -d 127.0.0.0/8    -j LOG --log-prefix "IP DROP LOOPBACK "
-A INPUT -i eth0 -s 169.254.0.0/16 -j LOG --log-prefix "IP DROP MULTICAST "
-A INPUT -i eth0 -s 0.0.0.0/8      -j LOG --log-prefix "IP DROP "
-A INPUT -i eth0 -s 240.0.0.0/4    -j LOG --log-prefix "IP DROP "
-A INPUT -i eth0 -s 255.255.255.255/32 -j LOG --log-prefix "IP DROP  "
-A INPUT -i eth0 -s 168.254.0.0/16 -j LOG --log-prefix "IP DROP "
-A INPUT -i eth0 -s 248.0.0.0/5    -j LOG --log-prefix "IP DROP "
логирование и отброс всего трафика

Найдите строки:

-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

Исправьте на следующее:

-A RH-Firewall-1-INPUT -j LOG
-A RH-Firewall-1-INPUT -j DROP
COMMIT
Открываем SSH с защитой от брутфорса

Создаем правило, которое блокирует на 60 секунд каждую четвертую попытку подключения по SSH [5][6][7]:

-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH--rsource
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 --name SSH--rsource -j DROP

В дальнейшем рекомендуется либо вообще отключить удаленный доступ для учетной записи root либо перейти полностью на авторизацию по ключам.

Открываем порты для предоставляемых сервисов

Чтобы открыть порты 80 и 443 (сервер HTTP(S)) добавьте следующие строки перед COMMIT:

-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80  -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT

Разрешаем SSH-трафик только из подсети 192.168.1.0/24

-A RH-Firewall-1-INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 22 -j ACCEPT

Для доступа к БД PostgreSQL откроем порт 5432 добавив следующую строку перед COMMIT:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT

Открываем порты для сервера 1С:

-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 1540 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 1541 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 1560:1591 -j ACCEPT

Открываем FTP-порт 21 (FTP)

-A RH-Firewall-1-INPUT -m state --state NEW -p tcp --dport 21 -j ACCEPT

Сохраняем и закрываем файл. Посмотрим файл /etc/sysconfig/iptables-config, введем:

vi /etc/sysconfig/iptables-config

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

IPTABLES_MODULES="ip_conntrack_ftp"

Чтобы перезагрузить firewall, набираем следующее:

service iptables restart
iptables -vnL --line-numbers
Правка /etc/sysctl.conf для защиты от DoS и Syn атак

Отредактируйте /etc/sysctl.conf чтобы защититься от некоторых типов атак, добавьте / замените строки на нижеследующее [8]:

net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
#net.ipv4.icmp_ignore_bogus_error_messages = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

Настройка fail2ban

Основная статья: Борьба с брутфорсом SSH

Для установки fail2ban на Red Hat/CentOS добавляем репозиторий Extra Packages for Enterprise Linux (или EPEL) [9]

su -c 'rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm'
su -c 'yum install fail2ban'

Настройка NIS (AD?)

Настройка SELinux

Проверяем, что SELinux включен и работает:

getenforce
Enforcing

Настройка FTP-сервера

Настройка NFS

Веб-фронтэнд

Nginx

Основная статья: Nginx

Подключим репозиторий с дистрибутивом Nginx в систему [10]:

vi /etc/yum.repos.d/nginx.repo

CentOS:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

RHEL:

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/rhel/$releasever/$basearch/
gpgcheck=0
enabled=1

Ставим:

yum install nginx

Предоставление доступа через веб (http/https)

Предположим, что на frontend-сервере (1c.example.com), смотрящем во внешнюю сеть стоит Nginx. В таком случае его конфигурационный файл будет иметь следующий вид:

server {
    listen       80;
    listen       [::]:80;
    server_name  1c.example.com;
    rewrite ^(.*) https://1c.example.com/Test-Conf/$1 permanent;
}

server {
    listen       443;
    listen       [::]:443;
        ssl on;
        ssl_certificate     /etc/nginx/ssl/1c.example.com.crt;
        ssl_certificate_key /etc/nginx/ssl/1c.example.com.key;

        server_name  1c.example.com;

        access_log  /var/log/nginx/1c.example.com-access_log;

        if ( $http_user_agent ~* (nmap|nikto|wikto|sf|sqlmap|bsqlbf|w3af|acunetix|havij|appscan) ) {
            return 403;
        }

        if ($request_uri = /) {
            rewrite ^ https://1c.example.com/Test-Conf/ permanent; #301 redirect
        }

        location /Test-Conf/ {
            proxy_pass         http://1c-backend.local.example.com/Test-Conf/;
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            client_max_body_size       50m;
            client_body_buffer_size    128k;
            proxy_connect_timeout      90;
            proxy_send_timeout         90;
            proxy_read_timeout         90;
            proxy_buffer_size          4k;
            proxy_buffers              4 32k;
            proxy_busy_buffers_size    64k;
            proxy_temp_file_write_size 64k;

#            Разрешить доступ только из локальной сети
#            allow 172.16.0.0/12;
#            allow 2001:DB8::dead:beaf:1
#            deny all;
        }

        include  inc-awstats.conf;
        include  inc-errors.conf;
    }

Генерация SSL-сертификатов подробно рассмотрена в статье Nginx

Настройка брандмауэра (firewall)

Разрешаем доступ к веб-серверу открыв TCP-порты 80 и 443:

vi /etc/sysconfig/iptables

Для того, чтобы открыть порты 80 и 443 добавляем следующие строки перед COMMIT:

-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT

Сохраняем файл. Перезагружаем брандмауэр:

service iptables restart

PostgreSQL

Основная статья: Тюнинг PostgreSQL

Установка PostgreSQL (в ред. 1C)

Заходим на сайт http://users.v8.1c.ru/ выбираем дистрибутив PostgreSQL для RPM-based дистрибутивов и скачиваем его в /usr/local/src/postgres

Разархивируем архив:

tar xvfz *.tar.gz

Ставим postgres:

yum localinstall *.rpm

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

wget http://v8.1c.ru/overview/postgresql_patches/9-2-1/postgresql92-9.2.1-1.1C.src.rpm

И пытаемся его собрать:

rpmbuild --rebuild postgresql92-9.2.1-1.1C.src.rpm

Инициализируем БД:

Способ 1? НУЖЕН ЛИ ??

su postgres
/usr/pgsql-9.1/bin/initdb -D /var/lib/pgsql/data --locale=ru_RU.UTF-8
service postgresql-9.1 initdb

Запускаем демон PostgreSQL и добавляем его в автозагрузку:

service postgresql-9.1 start
chkconfig postgresql-9.1 on

Создаем пароль пользователю postgres [11]:

su postgres
/usr/pgsql-9.1/bin/psql
ALTER USER postgres WITH PASSWORD 'your_password';
\q
exit

или одной командой [12]:

sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'newpassword';"

Брандмауэр (firewall)

Разрешаем удаленный доступ к БД открыв TCP-порт 5432 [13]:

vi /etc/sysconfig/iptables

Для того, чтобы открыть порт 5432 добавляем следующую строку перед COMMIT:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT

Сохраняем файл. Перезагружаем брандмауэр:

service iptables restart

SELinux

At work clipart.pngЭто незавершённая статья, требующая доработки.
Выяснить, есть ли в 1С-PostgreSQL патч для SELinux

В RHEL поддержка Postgre/SELinux реализована отдельным пакетом [14][15][16]:

yum install sepostgresql

pgAdmin

Если сервер выходит в сеть через прокси, предварительно пишем:

http_proxy=http://proxy.example.org:8080
export http_proxy

Чтобы установить pgAdmin3 подключим репозиторий PostgreSQL [17] в систему:

rpm -Uvh http://yum.pgrpms.org/9.2/redhat/rhel-6-i386/pgdg-redhat92-9.2-7.noarch.rpm

Ставим pgAdmin:

yum install pgadmin3

Если необходимо администрировать БД через веб-интерфейс ставим:

yum install phpPgAdmin

Тюнинг производительности PostgreSQL

Основная статья: Тюнинг PostgreSQL

Править будем конфигурационный файл:

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

В книге Алексея Васильева «Работа с Postgresql. Настройка, масштабирование» рекомендованы следующие параметры для высоконагруженных БД (файл postgresql.conf) [18] [19]:

  • shared_buffers = 1/8 RAM или больше (но не более 1/4);
  • work_mem в 1/20 RAM;
  • maintenance_work_mem в 1/4 RAM;
  • max_fsm_relations в планируемое кол–во таблиц в базах * 1.5 [20]; ВНИМАНИЕ! Начиная с 8.4 версии fsm параметры были убраны, поскольку Free Space Map сохраняется на жесткий диск, а не в память.
  • max_fsm_pages в max_fsm_relations * 2000;
  • fsync = true;
  • wal_sync_method = fdatasync;
  • commit_delay = от 10 до 100;
  • commit_siblings = от 5 до 10;
  • effective_cache_size = 0.9 от значения cached, которое показывает free;
  • random_page_cost = 2 для быстрых cpu, 4 для медленных;
  • cpu_tuple_cost = 0.001 для быстрых cpu, 0.01 для медленных;
  • cpu_index_tuple_cost = 0.0005 для быстрых cpu, 0.005 для медленных;
  • autovacuum = on;
  • autovacuum_vacuum_threshold = 1800;
  • autovacuum_analyze_threshold = 900;

Максимальный объем оперативной памяти, который может занять PostgreSQL (это важно при объемных запросах). За него отвечает параметр shared_buffers в postgresql.conf. Насчет значения для этой величины существуют разные рекомендации. Я пришел к выводу, что если это выделенный под БД сервер, то можно одному процессу отдать почти весь объем оперативки минус то, что нужно системе на свои нужды.

Вариант с форумов [21]. Лечит тормоза и ошибки 404 при работе веб-версии конфигурации "1С: Университет".

fsync = on	 # turns forced synchronization on or off 
wal_sync_method = fdatasync	 # the default is the first option 
random_page_cost = 2.0	 # same scale as above 
autovacuum = on	 # Enable autovacuum subprocess? 'on' 
autovacuum_vacuum_threshold = 1800	# min number of row updates before 
datestyle = 'iso, dmy' 
lc_messages = 'ru_RU.UTF-8'	 # locale for system error message 
lc_monetary = 'ru_RU.UTF-8'	 # locale for monetary formatting 
lc_numeric = 'ru_RU.UTF-8'	 # locale for number formatting 
lc_time = 'ru_RU.UTF-8'	 # locale for time formatting 
default_text_search_config = 'pg_catalog.russian' 
deadlock_timeout = 2s 
max_locks_per_transaction = 250	
default_statistics_target = 100 
maintenance_work_mem = 1024MB 
constraint_exclusion = on 
checkpoint_completion_target = 0.9 
effective_cache_size = 4096MB 
work_mem = 8MB 
wal_buffers = 16MB 
checkpoint_segments = 40 
enable_nestloop = off # существенный рост производительности для ОЧЕНЬ больших отчетов 
shared_buffers = 2048MB 
temp_buffers = 8MB 
max_connections = 200 
escape_string_warning = off 
standard_conforming_strings = off 
join_collapse_limit = 1 

Подробно параметры расписаны в статье: http://wiki.etersoft.ru/PostgreSQL/Optimum

Резервное копирование

В поставку PostgreSQL сервера входят утилиты для резервного копирования, и восстановления из резервной копии базы данных: pg_dump и pg_restore. Рассмотрим способы резервного копирования и восстановления баз данных сервера PostgreSQL на Linux [22] [23].

Резервное копирование базы Postgre (pg_dump)

Используем pg_dump для резервного копирования базы данных с именем «Test». Способов архивации несколько, можно, например обойтись одной утилитой pg_dump, указав соответствующие ключи для сжатия файла архива. Однако если использовать внешний gzip через pipe, можно сократить время создания архива БД в несколько раз.

Дамп с сжатием средствами pg_dump:

pg_dump –Fc –U postgres "Имя базы данных" > *.back.tgz

Где:

  • postgres – имя пользователя базы данных.
  • «Имя базы данных» – имя базы данных на вашем сервере.
  • *.back – имя конечного файла содержащего дамп.

Дамп со сжатием средствами gzip:

pg_dump -h localhost -U postgres -c "Имя базы данных" | gzip >>"Имя базы данных".gz

Текстовый дамп:

pg_dump –Fе –U postgres "Имя базы данных" > *.sql

Где:

  • postgres – имя пользователя базы данных.
  • «Имя базы данных» – имя базы данных на вашем сервере.
  • *.sql – имя конечного файла содержащего дамп в текстовом формате.
Восстановление базы данных из архивной копии. (pg_restore)

Восстановление базы данных postgre производится при помощи утилиты pg_restore. Для ее использования нужно указать Имя пользователя сервера БД, имя базы данных и имя файла с вашим дампом:

pg_restore –U ИМЯ ПОЛЬЗОВАТЕЛЯ БД –d ИМЯ БАЗЫ ДАННЫХ –v ПУТЬ К ВАШЕМУ ДАМПУ.

Например:

  • Имя пользователя postgres.
  • Имя базы данных Test.
  • Имя файла dump.back.
pg_restore –U postgres –d Test –v dump.back

или в случае использования gzip:

gunzip -c dump.gz | psql -h localhost -U postgres Test
Автоматизация

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

#!/bin/bash
BackUpDir="/home/melfis/dump/"  // Директория для хранения бэкапов
DateName=`date +%d.%m.%Y-%H.%M` //Получаем дату для имени файла
 
cd $BackUpDir  //Переходим в директорию с бэкапами
echo Начато резервное копирование базы данных
pg_dump -Fc -U postgres "Test" > $DateName.Test.backup  //Делаем бэкап
echo Резервное копирование завершено.

Сделайте скрипт исполняемым, и добавьте его в cron. В результате выполнения этого кода в директории находящейся в переменной BackUpDir будет создана сжатая архивная копия вашей базы данных.

При создании резервной копии с ключом -t, будет создана текстовая резервная копия. Она занимает намного больше места, но удобна тем что SQL код поддается редактированию.

И еще один очень важный момент! Если вы редактировали ваш postgresql.conf файл, и меняли значения памяти (shared mem, mainterance mem, work mem и.т.д.), то при восстановлении базы данных из резервной копии pg_restore может пожаловаться на нехватку памяти. Что бы успешно восстановить БД из архивной копии, следует вернуть значения по умолчанию в файле postgresql.conf которые отвечают за объемы памяти используемые postgre, и перезапустить PostgreSQL сервер. Это случалось на базах данных 1с.

Сервер "1С: Предприятие"

Установка сервера 1С

Качаем с сайта http://users.v8.1c.ru/ нужную нам версию сервера в каталог /usr/local/src/1c-srv

Разархивируем:

tar xvfz /usr/local/src/1c-srv/*

Ставим:

yum localinstall /usr/local/src/1c-srv/*.rpm

Запускаем и прописываем в автозагрузку:

service srv1cv82 restart
chkconfig srv1cv82 on

Веб-клиент

На backend-сервере (1c-backend.local.example.com), где установлена платформа 1С необходим веб-сервер Apache. В Red Hat Linux его установка не представляет особой сложности:

yum install httpd

В корне веб-сервера /var/www/html/ (/srv/www/htdocs/ для SLES) создаем файл robots.txt следющего содержания:

User-agent: *
Disallow: /

Это необходимо для того, чтобы наш сервер не индексировался поисковыми системами.

Опубликуем конфигурацию с сервера 1С 8.2 на нашем веб-сервере [24]:

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

или для 8.3:

cd /opt/1C/v8.3/i386/
./webinst -apache22 -wsdir base -dir '/var/www/html/base/' -connStr 'Srvr="1c-backend.local.example.com";Ref="base"' -confPath /etc/httpd/conf/httpd.conf

где

  • apache22 — публикация веб-клиента для сервера apache версии 2.2
  • wsdir — имя алиаса который добавится в файл конфигурации apache (будем обращаться к нашей базе http://1c-backend.local.example.com/base)
  • dir — физический каталог, куда указывает wsdir (в этом каталоге будет лежать файл default.vrd)
  • connStr — строка соединения с информационной базой
  • confPath — путь к файлу конфигурации apache

Переопределяем владельца файла default.vrd, чтобы apache имел к нему доступ:

chown apache:apache /var/www/html/base/default.vrd

Веб-клиент может работать только в том случае, если 1С работает в режиме «управляемого приложения» и пользовательский интерфейс разработан с помощью концепции «управляемого интерфейса». Следует заметить, что этот функционал в версии 8.1 не реализован, поэтому совместимости нет. Для нормального функционирования в «управляемом режиме» необходимы шрифты truetype от Microsoft. По лицензионным соображениям, в стандартных репозиториях пакета с нужными нам шрифтами нет, поэтому будем собирать пакет из исходников. Для этого установим несколько необходимых пакетов [24] [25]:

yum groupinstall "development"
rpm -Uvh http://dl.atrpms.net/el6.4-x86_64/atrpms/stable/atrpms-repo-6-6.el6.x86_64.rpm
rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install webkitgtk ImageMagick cabextract ttf2pt1 ttmkfdir unixODBC
wget http://corefonts.sourceforge.net/msttcorefonts-2.0-1.spec
rpmbuild -bb msttcorefonts-2.0-1.spec
yum localinstall /root/rpmbuild/RPMS/noarch/msttcorefonts-2.0-1.noarch.rpm

Запускаем утилиту конфигурации сервера 1С, указывая путь к установленным шрифтам (для 8.2):

cd /opt/1C/v8.2/i386/utils/
./config_server /usr/share/fonts/msttcorefonts

для 8.3:

cd /opt/1C/v8.3/i386/utils/
./config_system /usr/share/fonts/msttcorefonts

Брандмауэр (firewall)

Консоли администрирования нужен доступ к агенту сервера (ragent) по порту 1540, а для создания базы понадобится еще и доступ к рабочим процессам по портам 1562-1591. Толстому клиенту нужен доступ к менеджеру сервера (rmngr) по порту 1541 и рабочим процессам порты 1562-1591 [26]. Для стандартно настроенного брандмауэра в RHEL/CentOS набор разрешающих правил будет выглядеть приближенно так:

vi /etc/sysconfig/iptables

Добавляем следующие строки перед COMMIT:

-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 1540 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 1541 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 1562:1591 -j ACCEPT

Сохраняем файл. Перезагружаем брандмауэр:

service iptables restart

Для SLES необходимо отредактировать файл /etc/sysconfig/SuSEfirewall2 и добавить следующие порты:

FW_SERVICES_EXT_TCP="1540 1541 1562:1591"

SELinux

Сервер "1С: Предприятие" вполне может работать при включенном SELinux c политикой targeted в запрещающем режиме Enforcing, однако в некоторых комбинациях он может вызвать проблему при запуске ragent (агента сервера 1С) [26]. Проверяем:

getenforce
Enforcing

Открываем для редактирования /etc/sysconfig/selinux и меняем параметр SELINUX на permissive.

SELINUX=permissive

Перезагружаем сервер (setenforce 0 без перезагрузки). Если проблема пропадает, смотрим в логи [27] [28]:

grep denied /var/log/audit/audit.log | audit2why

Для решения проблем сгененируем модуль SELinux:

mkdir -p /usr/local/src/selinux-pol
cd /usr/local/src/selinux-pol
audit2allow -b -M local_1с

Загрузим модуль в систему:

semodule -i local_1с.pp

Проверяем, что в логе /var/log/audit/audit.log пропали строки "denied" и включаем SELinux обратно.

Лицензирование

Резервное копирование

1С: Предприятие поддерживает возможность загрузки/выгрузки информационной базы в файл. Этот механизм предназначен, прежде всего, для получения образа информационной базы независимо от способа хранения данных. Например, загрузка/выгрузка информационной базы в файл может быть использована для преобразования файлового варианта к клиент-серверному [29].

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

В зависимости от варианта работы 1С: Предприятия (файловый или клиент-серверный), можно рекомендовать следующие способы создания резервной копии информационной базы:

  1. При использовании файлового варианта 1С: Предприятия 8 можно организовать процесс создания резервной копии информационной базы путем простого копирования файла 1CV8.1CD в отдельный каталог или с использованием программного обеспечения для резервного копирования и восстановления данных. Следует учитывать, что для обеспечения целостности и согласованности данных во время создания резервной копии, работа пользователей с информационной базой должна быть запрещена, однако время, необходимое на создание резервной копии существенно меньше, чем при использовании выгрузки информационной базы в файл.
  2. При использовании клиент-серверного варианта 1С: Предприятия 8 появляется возможность создания резервной копии информационной базы средствами СУБД. Например, SQL Server позволяет выполнять резервное копирование данных в то время, когда база данных находится в многопользовательском режиме и доступна для всех пользователей.

Использование этих способов дает максимально точную копию состояния информационной базы, что не всегда может быть получено при использовании режима загрузки/выгрузки информационной базы. Например, если в базе данных есть нарушения, то при выгрузке некоторая информация может быть не выгружена, в то время как при копировании будет сохранена вся информация, и после восстановления можно будет выполнить исправление базы данных.

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

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

Клиент

At work clipart.pngЭто незавершённая статья, требующая доработки.
В процессе!


Troubleshooting

Как посмотреть список пользователей с группами

getent passwd | awk -F: '{print $1}' | while read name; do groups $name; done

Как отключить IPv6

vi /etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
vi /etc/sysconfig/network
NETWORKING_IPV6=no
vi /etc/sysconfig/network-scripts/ifcfg-eth0
IPV6INIT=”no”
chkconfig –level 345 ip6tables off
reboot

Как отключить SELinux

vi /etc/selinux/config
SELINUX=disabled

Как отключить Firewall

chkconfig iptables off
service iptables stop
chkconfig ip6tables off
service ip6tables stop

Как деинсталлировать все RPM-пакеты из каталога

cd /usr/local/src/1c-srv/
for i in *.rpm; do echo "${i%.*}"; done|xargs rpm -e

"Ошибка установки или изменения национальных настроек информационной базы. Порядок сортировки не поддерживается базой данных."

Необходимо пересоздать базу:

export LANG=ru_RU.utf8;
rm -rf /var/lib/pgsql/9.1/data
service postgresql-9.1 initdb

Примечания

  1. CentOS / Redhat Iptables Firewall Configuration Tutorial
  2. http://wiki.centos.org/HowTos/Network/IPTables
  3. Basic RHEL 6 Firewall Configuration
  4. http://ru.wikipedia.org/wiki/Netfilter
  5. How to Block SSH Brute Force Attacks
  6. Securing OpenSSH
  7. Stopping SSH Brute Force attacks on Linux
  8. Linux Kernel /etc/sysctl.conf Security Hardening
  9. How can I install the packages from the EPEL software repository?
  10. Nginx official RedHat/CentOS packages
  11. http://www.postgresql.org/message-id/006201c74b23$17cce130$9b0014ac@wbaus090
  12. How to set postgresql user password in bash script
  13. CentOS / RHEL Linux Install Postgresql Database Server
  14. SELinux PostgreSQL Support (9.0)
  15. SEPostgreSQL Introduction
  16. http://selinuxproject.org/page/NB_SQL_9.0#SE-PostgreSQL_Walk-through
  17. PostgreSQL RPM Building Project - Repository Packages
  18. FreeBSD + PostgreSQL: тюнинг сервера БД
  19. /Comm/ Любопытная ссылка про 1С и Alt Linux
  20. http://postgresql.ru.net/pgtune/postgresql.html
  21. http://forum.infostart.ru/forum74/topic52018/
  22. РЕЗЕРВНОЕ КОПИРОВАНИЕ БАЗ ДАННЫХ 1С НА POSTGRESQL
  23. Архивация баз данных 1с при использовании в качестве сервера баз данных PostgreSQL
  24. 24,0 24,1 http://z1kk0.blogspot.ru/2012/10/1-82-postgresql-centos-6.html
  25. http://its.1c.ru/db/v83doc?db=v83doc#content:13:1:IssOgl2_1.7.2.ДляОСLinux
  26. 26,0 26,1 1c предприятие 8.2 – Troubleshooting
  27. Установка сервера 1С 8.2 под Linux. Борьба с ошибкой "Error: service failed to start!"
  28. [http://sheltren.com/stop-disabling-selinux Open Source Stuff and Things Main menu
    Stop Disabling SELinux!]
  29. http://www.linux.org.ru/forum/admin/5170071

См. также

Ссылки

Личные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты