Меню
+7 (3519) 22-43-55
+7 (3519) 42-15-01
г.Магнитогорск, пр-кт Ленина д.21/2 пом.4
Данная статья кратко описывает как развернуть 1С через WEB на своем сервере (рекомендуется минимум Core i5 / 8 Гб / SSD 250Гб ).
Например, если вы не хотите держать свои данные в облаке, но доступ хотелось бы получать из любого места. Наш сервер Ubuntu был запущен в виртуальной среде VmWare ESXi.
Итак приступим.
Все операции проделывались на:

Первый ШАГ.

Установите Ubuntu server 18.04 LTS.

Второй ШАГ.

Устанавливаем POSTGRES. 
Сделаем предварительную подготовку:

Увеличиваем максимальный размер сегмента памяти до 1Гб. Для менее мощных машин устанавливают от 64Мб до половины объема ОЗУ (для теста выделим 1Gb):
# echo "kernel.shmmax=1073741824" >>/etc/sysctl.conf
# sysctl -p 

Генерируем русскую локаль и задаем переменную среды LANG, именно с ней будет работать скрипт инициализации базы данных.
# locale-gen en_US ru_RU ru_RU.UTF-8
# export LANG="ru_RU.UTF-8"

Подготовка:
# apt update
# apt upgrade

Устанавливаем необходимые зависимости:
# apt-get install libssl1.1 libossp-uuid16 libicu60 t1utils imagemagick ttf-mscorefonts-installer unixodbc texlive-base libgfs-1.3-2
#  apt-get install libwebkitgtk-3.0-0 libjavascriptcoregtk-3.0-0 libMagickWand-6.Q16 libfreetype6 libgsf-1-114 libglib2.0-0 libkrb5-3 libgssapi-krb5-2

На Ubuntu 18.04 нет необходимой библиотеки, поможем:
# cd /lib/x86_64-linux-gnu/
# ln -s libreadline.so.7.0 libreadline.so.6

Установим дистрибутив POSTGRES:
# dpkg -i libpq5.5-9.2eter_9.2.20-alt1ubuntu_amd64.deb 
        postgre-etersoft9.2_9.2.20-alt1ubuntu_amd64.deb 
        postgre-etersoft9.2-contrib_9.2.20-alt1ubuntu_amd64.deb 
        postgre-etersoft9.2-seltaaddon_9.2.20-alt1ubuntu_amd64.deb 
        postgre-etersoft9.2-server_9.2.20-alt1ubuntu_amd64.deb

Проверить, что всё установилось:
# dpkg --get-selections | grep postgre

Теперь сделаем подготовку POSTGRES:
Запустим сервис, чтобы он создал необходимые конфигурационные файлы:
# service postgresql initdb
если не хочет, то удалить  в /var/lib/ - postgresql (необходимо, когда с установкой что-то не пошло с первого раза)

Стартуем сервис:
# service postgresql start

Делаем настройку использования пароля md5:
Для этого правим /var/lib/postgresql/data/pg_hba.conf:
host    all             all             127.0.0.1/32            md5

Устанавливаем пароль пользователю в базе:
# su - postgres
$ psql -d template1
alter user postgres with password 'наш_пароль';
\q
$ exit

Перезапускаем сервис:
# service postgresql restart

Проверяем, что он запустился и слушает порт по умолчанию:
# netstat -an | grep -i list
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN

Так же можно проверить статус сервиса:
# service postgresql status
    postgresql.service - Etersoft PostgreSQL database server
    Loaded: loaded (/lib/systemd/system/postgresql.service; disabled; vendor preset: enabled)
    Active: active (running) ....

Если не стартует postgres после перезагрузки сервера, добавить в файл /etc/init.d/postgresql строки:
### BEGIN INIT INFO
# Provides: Postgres1
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 1 0 6
# Short-Description: Postgres
# Description: Postgres start / stop script
### END INIT INFO

 в файл /etc/init.d/postgresql.outformat строки:
### BEGIN INIT INFO
# Provides: Postgres2
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 1 0 6
# Short-Description: Postgres
# Description: Postgres start / stop script
### END INIT INFO

И затем выполнить команду:
# update-rc.d postgresql defaults

Вариант2:

Добавить в файл /etc/rc.local строку до строки exit 0 :
service postgresql start

Третий ШАГ.

Устанавливаем 1С

# dpkg -i 1c-enterprise-8.3.18.1208-common_8.3.18-1208_amd64.deb
       1c-enterprise-8.3.18.1208-common-nls_8.3.18-1208_amd64.deb
       1c-enterprise-8.3.18.1208-crs_8.3.18-1208_amd64.deb
       1c-enterprise-8.3.18.1208-server_8.3.18-1208_amd64.deb
       1c-enterprise-8.3.18.1208-server-nls_8.3.18-1208_amd64.deb
       1c-enterprise-8.3.18.1208-ws_8.3.18-1208_amd64.deb
       1c-enterprise-8.3.18.1208-ws-nls_8.3.18-1208_amd64.deb

Делаем подготовку для запуска сервиса 1С. Сам он не устанавливается в новых версиях, это связано с тем, что теперь под Unix могут работать сразу несколько версий 1С.
Подготовка:
# cd /opt/1cv8/x86_64/8.3.18.1208
# cp srv* /etc/init.d/
# update-rc.d srv1cv83 defaults
Теперь запуск:
# service srv1cv83 start

Проверяем подключение через Администрирование 1С Серверов.
На этом шаге мы можем установить свою базу через 1С Предприятие. Настройки будут выглядеть так:


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


ВАЖНО: имя сервера serv1c, выбранное в нашем случае, должно быть прописано в DNS, иначе мы будем везде получать сообщение об ошибке, что сервер serv1c не найден.  Для удобства и меньшей путаницы, самому серверу ubuntu лучше дать то же имя.


Четвертый ШАГ.

Встраивание WEB-сервера в APACHE.

Если ещё не устанавливали APACHE сервер:
# apt install apache2

Допустим мы решили нашу базу назвать orgbuh.
# mkdir /orgbuh
# cd /opt/1cv8/x86_64/8.3.18.1208
# ./webinst -apache24 -wsdir orgbuh -dir '/orgbuh' -connstr 'Srvr="serv1c";Ref="orgbuh";' -confPath /etc/apache2/apache2.conf

Перезапустим apache:
# service apache2 restart

Можно проверять. Сервер будет доступен по адресу:
http://serv1c/orgbuh

Для доступа из Интернета имя сервера нужно задавать с доменом: serv1c.domain.ru. И подключиться тогда мы сможем как: http://serv1c.domain.ru/orgbuh/
Там же можно перенести настройки в SSL.
Для этого добавляем модуль SSL в Apache:
# a2enmod ssl

После этого находим кусок добавленный в /etc/apache2/apache2.conf и переносим в настройки SSL virtualhost. У меня это выглядит так и доступ из Интернет по адресу https://serv1c.domain.ru/orgbuh/:
<VirtualHost _default_:443>
    # 1c publication
    Alias "/fotomir" "/orgbuh/"
    <Directory "/orgbuh/">
           AllowOverride All
           Options None
           Require all granted
           SetHandler 1c-application
           ManagedApplicationDescriptor "/orgbuh/default.vrd"
    </Directory>
    ServerAdmin webmaster@localhost
    DocumentRoot /orgbuh/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
    SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
    <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>
    <Directory /usr/lib/cgi-bin>
        SSLOptions +StdEnvVars
    </Directory>
</VirtualHost>


Оптимизация производительности PostgreSQL

Ниже перечислены основные параметры, на  которые следует обратить внимание при оптимизации производительности PostgreSQL.
shared_buffers
Объём совместно используемой памяти, выделяемой PostgreSQL для кэширования данных, определяется числом страниц (shared_buffers) по 8 килобайт каждая. Следует учитывать, что операционная система сама кеширует данные, поэтому нет необходимости отводить под кэш всю наличную оперативную память. Размер shared_buffers зависит от многих факторов, для начала можно принять следующие значения:
  • 8–16 Мб  – Обычный настольный компьютер с 512 Мб и небольшой базой данных
  • 80–160 Мб – Небольшой > сервер, предназначенный для обслуживания базы данных с объёмом оперативной памяти 1 Гб и базой данных около 10 Гб.
  • 400 Мб – Сервер с несколькими процессорами, с объёмом памяти в 8 Гб и базой данных занимающей свыше 100 Гб обслуживающий несколько сотен активных соединений одновременно .
work_mem
Под каждый запрос выделяется ограниченный объём памяти для работы. Этот объём используется для сортировки, объединения и других подобных операций. При превышении этого объёма сервер начинает использовать временные файлы на диске, что может существенно снизить производительность. Оценить необходимое значение для work_mem можно разделив объём доступной памяти (физическая память минус объём занятый под другие программы и под совместно используемые страницы shared_buffers) на максимальное число одновременно используемых активных соединений.
maintenance_work_mem
Эта память используется для выполнения операций по сбору статистики (ANALYZE), сборке мусора (VACUUM), создания индексов (CREATE INDEX) и добавления внешних ключей. Размер выделяемой под эти операции памяти должен быть сравним с физическим размером самого большого индекса на диске.
 effective_cache_size
PostgreSQL в своих планах опирается на кэширование файлов, осуществляемое операционной системой. Этот параметр соответствует максимальному размеру объекта, который может поместиться в системный кэш. Это значение используется только для оценки. effective_cache_size можно установить в 1/2 - 2/3 от объёма имеющейся в наличии оперативной памяти, если вся она отдана в распоряжение PostgreSQL.
Следующие параметры могут существенно увеличить производительность работы PostgreSQL. Однако их рекомендуется использовать только если имеются надежные ИБП и программное обеспечение, завершающее работу системы при низком заряде батарей.
fsync 
Данный параметр отвечает за сброс данных из кэша на диск при завершении транзакций. Если установить его значение fsync=off то данные не будут записываться на дисковые накопители сразу после завершения операций. Это может существенно повысить скорость операций insert и update, но есть риск повредить базу, если произойдет сбой (неожиданное отключение питания, сбой ОС, сбой дисковой подсистемы).
 
synchronous_commit
Включает/выключает синхронную запись в лог файлы после каждой транзакции. Это защищает от возможной потери данных. Но это накладывает ограничение на пропускную способность сервера.
Если вашей системе не критична потенциально низкая возможность потери небольшого количества изменений при крахе системы, но необходимо обеспечить в несколько раз большую производительность по количеству транзакций в секунду. В этом случае можно установить этот параметр в off (отключение синхронной записи).
 
Мои настройки в /var/lib/postgresql/data/postgresql.conf
shared_buffers = 400MB
work_mem = 10MB                       
maintenance_work_mem = 64MB          
effective_cache_size = 2048MB
fsync = off                            
synchronous_commit = off
 
© 2010–2024 ООО МАСТЕР | г.Магнитогорск, пр-кт Ленина 21/2 пом.4
тел.: +7 (3519) 22-43-55, +7 (3519) 42-15-01