Установка Postgresql версии 10 в Ubuntu Linux и Debian Linux. Установка и настройка postgresql debian
Установка и настройка postgresql на debian 8 для работы с 1С
Сегодня хочу рассказать об установке и небольшой настройке сервера бд postgresql для работы с базами 1С. Задача не сложная, но есть небольшие нюансы как по настройке, так и по выбору дистрибутива. Существуют несколько модификаций postgresql для 1С. Я расскажу про установку двух из них — одна от самой компании 1С, вторая от postgrespro.
Содержание:
- 1 Введение
- 2 Подготовка сервера к установке postgresql
- 3 Установка сборки PostgreSQL для платформы 1С от postgrespro
- 4 Установка сборки PostgreSQL от 1С
- 5 Настройка postgresql для увеличения производительности 1С
- 6 Заключение
- 7 Дополнительные материалы по Debian
Введение
Расскажу немного о возможности работы 1С, при которой можно сэкономить деньги на лицензиях, используя дистрибутив linux и бесплатную бд postgresql. Сервер 1С обычно используют в одной из следующих связок:
- Сервер 1С на Windows + MSSQL Server. Тут все понятно, самая распространенная и самая дорогая связка. Требуется лицензия для MSSQL сервера.
- Сервер 1С на Linux + PostgreSQL. Вариант с максимальным использованием бесплатного ПО. Я давно не использовал эту связку. Последний раз тестировал года 4 назад и мне не понравилась работа 1С сервера на linux. Я использовал дистрибутив Debian. Настройка не сильно сложная, но и не сказать, что простая. Надо ставить драйвера для hasp, чтобы сервер увидел ключ. Сервер работал не стабильно, иногда не получалось сделать выгрузку базы, приходилось перезапускать службу сервера. В целом работало, но не очень надежно. Мне тогда довелось пообщаться плотно с компанией, которая на постоянной основе использовала такую связку и админ тоже жаловался, что приходится сервер 1С перезапускать каждую ночь, тогда более ли менее стабильно все работает. С тех пор я не тестировал работу 1С на линуксе, так что про текущее положение дел ничего сказать не могу.
- Сервер 1С на Windows + PostgreSQL. Более привычный для настройки и управления вариант. Сервер ставится как обычно на windows машину, настраивается традиционным способом, а в качестве бд выступает бесплатная postgresql. О такой связке я и хочу сегодня рассказать.
Стандартная posgresql не будет нормально работать с базами 1С. В чем там проблема, я не знаю, не разбирался. Для работы с 1С используют отдельные сборки, специально под это заточенные. Мне известны 3 сборки posgresql для работы с 1С:
- От Etersoft — http://etersoft.ru/products/postgre
- От Postgrespro — https://postgrespro.ru/products/1c_build
- И от самой 1С. Скачать можно через портал поддержки пользователей.
Я установлю и настрою для сравнения сборку от 1С и от Postgrespro, чтобы попытаться понять, где будет выше производительность. Настраивать все будем на сервере Debian 8. Если у вас еще нет настроенного сервера, то рекомендую мои статьи по установке и настройке debian. Я создал 2 одинаковые виртуальные машины для теста и установил на каждую из них разную версию базы данных.
Подготовка сервера к установке postgresql
Если вы читали мою статью по настройке debian, то наверно уже обновили систему. Если нет, то сделаем это:
# apt-get update && apt-get upgradeОтмечаем указанные выше локали и выбираем ru_RU.UTF-8 дефолтной.
Проверить список установленных локалей можно командой:
# locale -aУстанавливаем необходимые пакеты:
# apt-get install ssl-cert libossp-uuid16 libxslt1.1Устанавливаем вручную еще один пакет:
# wget http://ftp.ru.debian.org/debian/pool/main/i/icu/libicu48_4.8.1.1-12+deb7u3_amd64.deb # dpkg -i libicu48*.debРедактируем системный параметр kernel.shmmax. Какое точно значение для наилучшей производительности выставлять, я не знаю. Не смог найти однозначного ответа. Видел рекомендацию, что в половину оперативной памяти на сервере. Я сделал у себя именно так. Вычислить размер параметра можно по формуле: Mb*1024*1024. У меня виртуальный сервер с 8Gb памяти, значение параметра получается 4096*1024*1024 = 4294967296. Добавляем это значение в /etc/sysctl.conf.
kernel.shmmax = 4294967296Проверить текущее значение параметра можно командой:
# cat /proc/sys/kernel/shmmaxУ нас все готово для установки непосредственно postgresql.
Установка сборки PostgreSQL для платформы 1С от postgrespro
Будем устанавливать самую свежую сборку на момент написания статьи — PostgreSQL 9.6.1. Подключаем репозиторий:
# sh -c 'echo "deb http://1c.postgrespro.ru/deb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/postgrespro-1c.list'Устанавливаем gpg ключ
# wget --quiet -O - http://1c.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO-1C | apt-key add -Обновляем список пакетов:
# apt-get updateУстанавливаем PostgreSQL
# apt-get install postgresql-pro-1c-9.6Запускаем базу данных и добавляем в автозагрузку:
# systemctl start postgresql # systemctl enable postgresqlУстановка сборки postgresql для работы с 1С от postgrespro закончена. Можно начинать работать с базой данных. Но перед этим необходимо задать пароль суперпользователя базы данных и выполнить небольшой тюнинг для увеличения быстродействия базы данных. С дефолтными настройками 1С будет работать очень медленно. Настройкой мы займемся позже, после того, как поставим вторую сборку от 1С.
Установка сборки PostgreSQL от 1С
Свежую версию postgresql от 1С можно скачать в пользовательском разделе на сайте 1С по адресу https://releases.1c.ru/total
Мы устанавливаем postgres на сервер Debian, поэтому скачиваем deb пакет для нашей системы.
Если у вас нет доступа к порталу 1С, можете забрать актуальный файл на момент написания статьи у меня — https://yadi.sk/d/lAujUgW_39gKMS.
Передаем файл на сервер, например через sftp или ssh. Распаковываем содержимое архива в отдельную папку:
# mkdir postgres # tar -xvf postgresql-9.4.2-1.1C_amd64_deb.tar.bz2 -C postgresВ архиве были следующие файлы:
# cd postgres # ls -l итого 5420 -rw-r--r-- 1 120250 июн 2 2015 libpq5_9.4.2-1.1C_amd64.deb -rw-r--r-- 1 3657036 июн 2 2015 postgresql-9.4_9.4.2-1.1C_amd64.deb -rw-r--r-- 1 1069692 июн 2 2015 postgresql-client-9.4_9.4.2-1.1C_amd64.deb -rw-r--r-- 1 72172 авг 11 2015 postgresql-client-common_154.1.1C_all.deb -rw-r--r-- 1 163684 авг 11 2015 postgresql-common_154.1.1C_all.deb -rw-r--r-- 1 457782 июн 2 2015 postgresql-contrib-9.4_9.4.2-1.1C_amd64.debВсе, установка postgresql от 1С закончена. Запускаем и добавляем в автозагрузку:
# systemctl start postgresql # systemctl enable postgresqlТеперь приступаем к настройке для увеличения производительности базы 1С.
Настройка postgresql для увеличения производительности 1С
Настройка это, конечно, громко сказано. Я не занимался серьезно тюнингом postgresql и тестированием. Бегло поискал в интернете информацию и использовал наиболее популярные советы. Так что мои рекомендации не претендуют на реально проверенные и надежные решения. Используйте на свое усмотрение. Я просто делюсь тем, что сам нашел.
Перед изменением конфига, зададим пароль административной учетной записи нашего сервера бд. Для этого заходим в систему от пользователя postgres:
# su postgresМеняем пароль внутреннего пользователя бд postgres:
# /usr/bin/psql -U postgres -c "alter user postgres with password 'postgrespwd';"postgrespwd — пароль пользователя для административного доступа к базе данных. Эту учетную запись необходимо использовать для добавления новой базы в Сервер 1С.
Возвращаемся к тюнингу postgres. В первую очередь рекомендую сервис pgtune — http://pgtune.leopard.in.ua. В нем можно указать характеристики сервера и получить рекомендации по настройке. Так как у нас 2 сервера разных версий — первый 9.6, второй 9.4, рекомендации будут немного отличаться. Имейте это ввиду. Вот пример рекомендаций для первого сервера от postgrespro:
Укажите эти параметры в файле конфигураций. В моем случае это файл /etc/postgresql/9.6/main/postgresql.conf. Мне знакомый скинул готовый файл настроек с рекомендуемыми параметрами для 1С. Я не знаю происхождение этого файла, но настройками воспользовался. В итоге с учетом этого конфига и сайта pgtune я получил вот такой файл конфигурации postgres:
data_directory = '/var/lib/postgresql/9.6/main' hba_file = '/etc/postgresql/9.6/main/pg_hba.conf' ident_file = '/etc/postgresql/9.6/main/pg_ident.conf' external_pid_file = '/var/run/postgresql/9.6-main.pid' listen_addresses = '*' port = 5432 max_connections = 10 unix_socket_directories = '/var/run/postgresql' ssl = true ssl_cert_file = '/etc/ssl/certs/ssl-cert-snakeoil.pem' ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key' shared_buffers = 2GB temp_buffers = 32MB work_mem = 104857kB maintenance_work_mem = 512MB autovacuum_work_mem = 64MB dynamic_shared_memory_type = posix shared_preload_libraries = 'online_analyze, plantuner' bgwriter_delay = 10ms bgwriter_lru_maxpages = 1000 bgwriter_lru_multiplier = 10 fsync = on synchronous_commit = off wal_buffers = 16MB checkpoint_timeout = 55min max_wal_size = 2GB min_wal_size = 1GB checkpoint_completion_target = 0.9 effective_cache_size = 6GB geqo = off default_statistics_target = 100 # range 1-10000 default_statistics_target = 10 cursor_tuple_fraction = 0.0001 from_collapse_limit = 2 join_collapse_limit = 2 log_line_prefix = '%t [%p-%l] %q%u@%d ' log_timezone = 'localtime' cluster_name = '9.6/main' stats_temp_directory = '/var/run/postgresql/9.6-main.pg_stat_tmp' log_autovacuum_min_duration = 0 autovacuum_max_workers = 3 autovacuum_naptime = 15s autovacuum_vacuum_threshold = 90 autovacuum_analyze_threshold = 9 autovacuum_vacuum_scale_factor = 0.0002 autovacuum_analyze_scale_factor = 0.0001 autovacuum_vacuum_cost_delay = 10ms autovacuum_vacuum_cost_limit = 10000 datestyle = 'iso, dmy' timezone = 'localtime' 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' max_locks_per_transaction = 150 max_pred_locks_per_transaction = 150 backslash_quote = on escape_string_warning = off standard_conforming_strings = off online_analyze.threshold = 50 online_analyze.scale_factor = 0.1 online_analyze.enable = on online_analyze.verbose = off online_analyze.min_interval = 10000 online_analyze.table_type = 'temporary' plantuner.fix_empty_table = falseДля версии 9.4 настройки будут немного отличаться. Там как минимум не будет параметров min_wal_size и max_wal_size. Но есть и другие отличия. Призываю не копировать мой конфиг и вставлять к себе, а сравнивать мои параметры и ваш дефолтный конфиг и изменять непосредственно значения параметров.
Есть хороший материал на тему оптимизации postgresql для работы с 1С — http://nixway.org/2015/12/06/optimizacija-postgresql-pod-server-1c-predpriyatiya. Я не буду повторяться и копировать информацию. Можете сами ознакомиться.
Заключение
В моем случае база 1С работала примерно одинаково в обоих случаях. В итоге я решил остановиться на сборке от postgrespro, так как там более свежая версия 9.6. У меня была база 10 гб. Работала она приемлемо, кроме некоторых операций — когда идет чтение по всей базе для построения каких-нибудь списков. Тюнинг различных параметров не привел к уменьшению времени выполнения подобных запросов. Так что этот вопрос остается открытый. Простого решения найти не удалось. Что точно нужно изменить для ускорения работы подобных запросов — не знаю. Разбор этой ситуации описал в отдельном материале — Ускорение работы 1С с postgresql и диагностика проблем производительности.
Заметил, что во время выполнения запроса на 100% нагружено одно ядро процессора. Погуглил тему, стало ясно, что это особенность архитектуры. Один запрос обрабатывает одно ядро. Простых способов решения данной проблемы не существует. Более подробно я не стал разбираться. На ум сразу пришло установить какой-то кэш, чтобы сохранять тяжелые запросы. Нашел информацию про pg_bouncer. Установить не получилось, он сходу из пакетов не встал с моей версией от postgrespro, ругнулся на зависимости. Надо разбираться и собирать из исходников. Нет уверенности, что это поможет, не стал заморачиваться, так как нет много времени на решение этой задачи. Буду рад любым подсказкам и комментариям по теме.
Если вы решите использовать описанное решение в продакшене, вам пригодится материал на тему бэкапа и восстановления баз postgresql.
Дополнительные материалы по Debian
Рекомендую полезные материалы по Debian: |
Подробная установка Debian 9 Stratch с помощью графического инсталлятора со скриншотами и пояснениями к каждому пункту установщика. Базовая настройка сервера Debian. Приведены практические советы по улучшению безопасности и удобства администрирования. Подробное описание настройки сети в Debian — задать ip адрес, dhcp, отключить ipv6, dns, hostname, статические маршруты и др. Обновление предыдущей версии Debian 8 Jessie до последней Debian 9 Stratch. Подробная инструкция с описанием по каждому этапу обновления. Обновление версии Debian 7 wheezy до Debian 8 Jessie. Подробная инструкция с описанием по каждому этапу обновления. Включение записи логов cron в Debian в отдельный файл и настройка ротации этого файла. Отключение логов в syslog. |
Подробное описание установки гипервизора proxmox на raid1 mdadm на базе операционной системы Debian 8. Приведены практические советы по настройке. Настройка интернет шлюза на Debian. Включает в себя настройку iptables, nat, dhcp, dns, iftop. Чистая установка Asterisk 13 на сервер под управлением Debian 8. Никаких дополнений и GUI, только vanilla asterisk. Установка Freepbx 12 и Asterisk 13 на сервер под управлением Debian/Ubuntu. Подробное описание и разбор ошибок установки. Рассказ об установке и небольшой настройке сервера бд postgresql для работы с базами 1С. Задача не сложная, но есть небольшие нюансы как по настройке, так и по выбору дистрибутива. Описание установки и настройки pptp сервера в Debian с передачей статических маршрутов клиенту для организации доступа к ресурсам сети. |
Подробное описание настройки бэкапа с помощью rsync на примере скрипта инкрементного архива на системе Centos, Debian, Ubuntu, Windows. Ускорение работы 1С с postgresql и диагностика проблем производительности |
problem-info.ru
Установка Postgresql версии 10 в Ubuntu Linux и Debian Linux
На данный момент,10-ая версия Postgresql является стабильной и данный релиз принес довольно много "вкусностей", таких как: логическая репликация, партиционирование, улучшена производительность физической репликации, hash-индексы стали реплицируемы, поддержка полнотекстового поиска на jsonb колонках, улучшенная поддержка работы с xml и многое другое ... Естественно, что сходу мигрировать ваш сайт или приложение на новую версию не стоит, так как в ряде случаев вам потребуется некоторая доработка для обеспечения совместимости с десятой версией.
На настоящий момент,10-ая версия Postgresql является стабильной, и данный релиз принес довольно много "вкусностей", таких как:
- Логическая репликация
- Партиционирование
- Улучшена производительность физической репликации
- Hash-индексы стали реплицируемы
- Поддержка полнотекстового поиска на jsonb колонках
- Улучшенная поддержка работы с xml
- и многое другое ...
Естественно, что сходу мигрировать ваш сайт или приложение на новую версию не стоит, так как в ряде случаев вам потребуется некоторая доработка для обеспечения совместимости с десятой версией. Но попробовать установить самый свежий Postgresql на тестовый или стэйдж сервер под управлением операционной системы Debian или Ubuntu Linux вы можете довольно просто и для этого вам потребуется выполнить в консоли следующие команды.
Для Ubuntu Linux версии 16.04
# echo 'deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main' >> /etc/apt/sources.list.d/pgdg.list # wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - # apt-get update # apt-get install postgresql-10
Для Debian 9 (Stretch)
# echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" >> /etc/apt/sources.list.d/pgdg.list # wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - # apt-get update # apt-get install postgresql-10
gita-dev.ru
Установка PostgreSQL-1C 9.6 и серевера 1С на Debian 8.7.1
Установка PostgreSQL-1C на платформу Linux (Ubuntu/Debian)debian-8.7.1-amd64-netinst.iso1С:Предприятие 8.3 + PostgreSQL 9.4 на базе Debian 8 «Jessie»https://bbs.archlinux.org/viewtopic.php?id=149446 Устанавливаем ssh Узнать сетевой адрес # ip addr Зайдем с помощью MobaXterm по ssh user $ su root # apt-get update # apt-get upgrade !!!# apt-get dist-upgrade # apt-get install mc htop samba # nano /etc/hosts # dpkg-reconfigure locales Для начала надо установить необходимые локали. Это en_US ISO-8859-1 en_US.UTF-8 и ru_RU.UTF-8. При этом локаль ru_RU.UTF-8 должна быть выбрана по умолчанию. # poweroff # Создаем виртуальный образ deb.ova Подключаемся MobaXterm по ssh. Подключение под debian 7/8, ubuntu 12.04/14.04/16.04:# sh -c 'echo "deb http://1c.postgrespro.ru/deb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/postgrespro-1c.list' # wget --quiet -O - http://1c.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO-1C | apt-key add - && apt-get update # apt-get install postgresql-pro-1c-9.6# rm /lib/systemd/system/postgresql.service# systemctl daemon-reload# systemctl enable postgresql # service postgresql start# service postgresql status# su - postgres$ psql -U postgres -d template1 -c "ALTER USER postgres PASSWORD 'pass'"$ psql -l$ exitдля выхода.Обратите внимание, что данный пароль устанавливается для внутреннего пользователя базы данных, а не для одноименного пользователя операционной системы Ubuntu.Проверим, корректно ли запущен и работает наш сервер PostgreSQL который нам нужен для дальнейшего развертывания базы данных. Выполним# rebootЗайдем с помощью MobaXterm по ssh user# su root# service postgresql statusПосмотреть: # nano /etc/postgresql/9.6/main/pg_hba.conf# poweroff# Создаем виртуальный образ deb_1.ova Подключаемся MobaXterm по ssh.$ su root# apt-get install imagemagick# apt-get install unixodbc # cd ~ Скачать https://packages.debian.org/jessie/ttf-mscorefonts-installer # wget http://ftp.ru.debian.org/debian/pool/contrib/m/msttcorefonts/ttf-mscorefonts-installer_3.6_all.deb# apt-get install xfonts-utils cabextract# dpkg -i ttf-mscorefonts-installer_3.6_all.deb Дистрибутивы в папке soft
# mkdir /home/user/soft # mkdir /home/user/soft/8.3.9.2170# chown -R user: /home/user/softс помощью MobaXterm sftp # cd /home/user/soft/8.3.9.2170# tar xvzf deb64.tar.gz# dpkg -i 1c*.deb# apt-get -f install# chown -R usr1cv8:grp1cv8 /opt/1CЗададим пароль pass# passwd usr1cv8Проверим запущен ли сервер postgresql# service postgresql status
Запустим сервер # service srv1cv83 start # service srv1cv83 status Проверяем запускаются ли при старте системы сервер 1С:Предприятие: # netstat -atn|grep 0.0.0.0:15 Посмотрим запущенные процессы: # ps aux|grep 1c От имени пользователя usr1cv8 должно быть запущено три процесса: ragent, rmngr и rphost. После имен процессов идут номера портов, через которые они работают: # poweroff Создаем виртуальный образ deb_2.ovaПодключаемся из 1с и создаем новую базу:
# poweroff Создаем виртуальный образ deb_3.ova Тест Гилева: На том же хосте с тем же RAM=8Gb Ubuntu 14.04.5 тест Гилева 23,26renbuar.blogspot.com
Установка Django 1.5 + PostgreSQL + Nginx в Debian
Устанавливалось на Debian 6.0.6, в репозиториях был только Python 2.6.6. Не стал заморачиваться на Python 2.7. Хотя рекомендуется обновить до 2.7.3 или выше. Также Django 1.5 поддерживает Python 3, особенно 3.2 и выше. Предполагается, что работы ведем под учетной записью суперпользователя.
Предварительно требуется установить систему контроля версий git:
aptitude install gitУстановка и настройка PostgreSQL:
aptitude install postgresqlСразу после установки запускается. В данном случае установилась версия 8.4.
Проверка:
netstat -tanp | grep postgretcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 16394/postgres
Создаем пользователя:
su postgres createuser usernameShall the new role be a superuser? (y/n) nShall the new role be allowed to create databases? (y/n) nShall the new role be allowed to create more new roles? (y/n) n
Задаем пароль пользователю:
psql template1psql (8.4.13)Type "help" for help.
template1=#
alter user username password 'user';ALTER ROLE
Задаем пароль суперпользователю баз данных:
ALTER ROLE postgres WITH ENCRYPTED PASSWORD 'megapass';ALTER ROLE
\qСоздаем базу данных для пользователя username:
createdb basename --owner=username -hlocalhostЛовим ошибку:
createdb: could not connect to database postgres: FATAL: no pg_hba.conf entry for host "10.78.89.142", user "postgres", database "postgres", SSL onFATAL: no pg_hba.conf entry for host "10.78.89.142", user "postgres", database "postgres", SSL off
Выходим на уровень пользователя root, правим конфиг и рестартим сервис:
exit echo "host all all 10.78.89.142/32 trust" >> /etc/postgresql/8.4/main/pg_hba.conf service postgresql restartЗдесь добавляем возможность доступа с айпишника системы. На другой системе нужно будет выставить другой айпишник.
Далее снова заходим под пользователя postgres и повторяем создание базы данных:
su postgres createdb basename --owner=username -hlocalhostЕсли спросит пароль, то используется пароль для суперпользователя postgres.
Если вы установили более новую версию PostgreSQL, к примеру, 9.1, то описанной выше проблемы быть не должно.
Пробуем подключиться к базе:
psql -Uusername -W -hlocalhost basenamePassword for user podvesnoy:
psql (8.4.13)SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)Type "help" for help.
podvesdb=>
Все, с базой данных разобрались.
Установка Django 1.5:
Создаем директорию под сайт, устанавливаем права:
mkdir /var/www/django chown www-data:www-data /var/www/django cd /var/www/Скачиваем движок и устанавливаем его:
su www-data git clone https://github.com/django/django.git exit cd ./django python setup.py build python setup.py installДля запуска Django как FastCGI-сервера понадобится flup:
aptitude install python-flupСоздаем новый проект:
django-admin.py startproject djangoproject chown -R www-data:www-data djangoproject/Запускаем FastCGI сервер:
./djangoproject/manage.py runfcgi method=threaded host=127.0.0.1 port=3033Проверяем:
netstat -tanp | grep pythontcp 0 0 127.0.0.1:3033 0.0.0.0:* LISTEN 15748/python
Установка и настройка nginx:
aptitude install nginxИз стандартных репов установился 0.7.67-3 что не густо, конечно.
Создаем конфиг виртуального хоста:
nano /etc/nginx/sites-available/djangoСодержимое следующее:
upstream djangoserv { server 127.0.0.1:3033; } server { listen 80; server_name domain.com; root /var/www/django/djangoproject; access_log /var/www/django/logs/access.log; error_log /var/www/django/logs/error.log; location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|js|mov) { access_log off; expires 30d; } location / { fastcgi_pass djangoserv; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param QUERY_STRING $query_string; fastcgi_param SERVER_NAME $server_name; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_pass_header Authorization; fastcgi_intercept_errors off; } }После чего делаем symlink и включаем конфиг для нового виртуального хоста, создаем папку с логами и выставляем ей нужного владельца (www-data), после чего перезагружаем nginx:
ln -s /etc/nginx/sites-available/django /etc/nginx/sites-enabled/django mkdir /var/www/django/logs touch /var/www/django/logs/access.log touch /var/www/django/logs/error.log chown -R www-data:www-data /var/www/django/logs /etc/init.d/nginx reloadПроверяем чтобы nginx запустился, после чего открываем сайт в браузере по айпишнику или по доменному имени.
Видим:
“It worked! Congratulations on your first Django-powered page.”
Настраиваем подключение к базе данных:
nano /var/www/django/djangoproject/djangoproject/settings.pyПравим:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'basename', 'USER': 'username', 'PASSWORD': 'user', 'HOST': '127.0.0.1', 'PORT': '5432', } }Затем создаем таблицы в базе:
cd /var/www/django/djangoproject python manage.py syncdbПо ходу предложит создать суперпользователя. Имя пользователя - admin, пароль - adminpass или любой другой.
Перезапускаем FastCGI-сервер:
ps ax | grep 3033 | grep -v grep | awk '{print $1}' | xargs kill -9 /var/www/django/djangoproject/manage.py runfcgi method=threaded host=127.0.0.1 port=3033Пытаемся открыть админку в браузере по адресу http://ip.ad.re.ss/admin/ и видим, что статика не отображается. Кайфуем. Взыв мозга с этой статикой обеспечен.
Лечится так.
Необходимо в файле /var/www/django/djangoproject/djangoproject/settings.py прописать путь до диектории со статикой:
STATIC_ROOT = '/var/www/django/djangoproject/static/'Собираем статику в эту директорию с помощью команды:
/var/www/podvesnoy/podvesproject/manage.py collectstaticОднако проблема не совсем решена, так как в разработке удобнее использовать встроенный сервер в связи с тем, что для того чтобы увидеть изменения через nginx, требуется перезапустить FastCGI-сервер, а при использовании встроенного сервера, статика в админке так и не отображается. В общем, нужен опытный джангист для консультации.
Для облегчения разработки добавляем в cron команду на регулярное убивание FastCGI сервера и его запуск. На стадии продакшена нужно будет убрать.
Точнее, напишем скрипт из пары строк и добавим его в систему для удобства использования.
Итак, с помощью вашего любимого текстового редактора создаем файл в директории /usr/local/bin с удобным вам названием, к примеру, pdev, примерно следующего содержания:
#!/bin/bash ps ax | grep 3033 | grep -v grep | awk '{print $1}' | xargs kill -1 python /var/www/django/djangoproject/djangoproject/manage.py runfcgi method=threaded host=127.0.0.1 port=3033Здесь указываем путь до файла manage.py вашего проекта на джанго, а также нужный порт. Если у вас на одно машине запущена продакшн-версия сайта и версия для разработки, то можно запустить два FastCGI-сервера на разных портах и с помощью nginx направить их на разные домены или поддомены.
Задаем владельца:
chown root:staff /usr/local/bin/pdevУстанавливаем права:
chmod 755 /usr/local/bin/pdevДалее, делаем симлинк файла pdev из директории /usr/local/bin в /usr/bin:
ln -s /usr/local/bin/pdev /usr/bin/pdevТаким образом перезапуск FastCGI-сервера Django можно будет осуществлять одной командой.
Добавляем в cron:
crontab -e * * * * * pdevТеперь перезапуск сервера Django будет происходить раз в минуту, чего вполне достаточно для неспешной разработки, тем более, что перезапуск можно осуществить вручную. Стоит напомнить, что такой вариант подходит только на этапе разработки либо если запущено два отдельных проекта один из которых работает без регулярного перезапуска.
Кстати, так как Ubuntu основан на Debian, то всё описанное выше будет работать и под Ubuntu, только вы получите более современные версии PostgreSQL и Nginx.
Если будут вопросы или дополнения (например, про статику в сервере для разработки), то вы можете оставить их в комментариях ниже.
Наверх
Опубликовано 4 March 2013
debian-help.ru
Установка redmine на Debian с веб сервером Apache и СУБД PostgreSQL
Установка redmine на Debian с веб сервером Apache и СУБД PostgreSQL
24.09.2010 12698
1. Установка и настройка СУБД Postgresql
//установка postgresql и необходимых компонентов на компьютер
# aptitude install postgresql libdbd-pg-perl libpgsql-ruby# su postgres//создаем пользователя redmine (необходимо будет дважды ввести пароль)
$ createuser redmine -S -D -R -l -P -N
// создаем базу redmine
$ createdb -O redmine -E utf8 redmine$ exitУстанавливка Веб сервера apache
# aptitude install apache2 apache2-prefork-dev libapr1-dev libaprutil1-dev
2. Установка и конфигурация redmine
# cd /var/www/# wget http://rubyforge.org/frs/download.php/72201/redmine-1.0.1.tar.gz# tar xvf redmine-1.0.1.tar.gz# mv redmine-1.0.1 redmine# cd redmine//скопируем и отредактируем конфигурационный файл для подключения к нашей базе данных
# nano cp config/database.yml.example config/database.yml# nano config/database.ymlproduction:adapter: postgresqldatabase: redminehost: localhostusername: redminepassword: *ваш пароль*
//Теперь нам необходимо настроить внешний smtp-сервер
# cp config/email.yml.example config/email.yml
//Отредактируйте его в соответствии с вашими настройками smtp сервера
# nano config/email.yml
delivery_method: :smtpsmtp_settings:tls: trueaddress: "smtp.gmail.com"port: 587domain: "wzrd.ru" # 'your.domain.com' for GoogleAppsauthentication: :plainuser_name: "Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра."password: "ваш пароль"
В файле redmine/lib/redmine/i18n.rb поменять следующие строки:
строку 40: Setting.date_format.blank? ? ::I18n.l(date.to_date) : date.strftime(Setting.date_format)
изменить на: Setting.date_format.blank? ? ::I18n.l(date.to_date, :count => date.day) : date.strftime(Setting.date_format)
строку 48: Setting.time_format.blank? ? ::I18n.l(local, :format => (include_date ? :default : :time)) :
изменить на: Setting.time_format.blank? ? ::I18n.l(local, :count => local.day, :format => (include_date ? :default : :time)) :
//меняем владельца и разрешения для следующих каталогов:
# chown -R www-data:www-data files/ log/ tmp/ public/plugin_assets/
# chmod -R 755 files/ log/ tmp/ public/plugin_assets/
3. Установка и настройка ruby, rubygems и пр.
# aptitude install ruby ruby-dev rubygems rake librmagick-ruby libmysql-ruby libopenssl-ruby apt-get install build-essential
// устанавливаем rubygems версии 1.3.1
# cd# wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz# tar xzvf rubygems-1.3.1.tgz# cd rubygems-1.3.1# ruby setup.rb# cd# rm -R rubygems-1.3.1 rubygems-1.3.1.tgz//Устанавливаем rails версии 2.3.5, это займет некоторое время
# gem install rails -v=2.3.5//Устанавливаем rack версии 1.0.1
# gem install rack -v=1.0.1//Заполняем базу данными
# cd /var/www/redmine# rake generate_session_store# rake db:migrate RAILS_ENV="production"</strong></address> <address> <strong># rake redmine:load_default_data RAILS_ENV="production"</strong></address> <br /> <h5> 4. Установка passenger: </strong></strong> <p> # gem install passenger# /usr/lib/ruby/gems/1.8/gems/passenger-2.2.15/bin/passenger-install-ache2-module
Добавим в конфигурационный файл апача (/etc/apache2/apache2.conf) следующие строки:
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.15/ext/apache2/mod_passenger.so PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.15 PassengerRuby /usr/bin/ruby1.8Отредактируем файл /etc/apache2/sites-available/default и изменим следующие значения
DocumentRoot /var/www/redmine/public <Directory /var/www/redmine/pubclic>Осталось самое главное - перезапустить апач:
# /etc/init.d/apache2 restart
P.S. Если у вас возникли проблемы с техникой, обращайтесь в наш компьютерный сервис, либо закажите выезд компьютерного мастера.
Добавить комментарийneosvc.ru
Установка PostgreSQL 9.0 на Debian 6.0 @ debuntarium
Автор: Евгений НифантьевСтатус: не завершеноДата: 2011-03-17ОС: Debian 6.0 x64Приложения: PostgreSQL 9.0.3
Установка Debian 6.0
Установка произведена с помощью первого CD-диска Debian на виртуальную машину VMWare Player. При установке выбрал метод разметки “Авто - использовать весь диск с шифрованным LVM”. Также использовал схему разметки “Отдельные разделы для /home, /usr, /var, /tmp”. Выбор программного обеспечения, предлагаемый на заключительном этапе установки системы, не производил. Предпочитаю выбрать необходимые пакеты после завершения установки операционной системы.
Установка необходимых пакетов
После завершения установки Debian 6.0 и перезагрузки системы начал установку пакетов:# aptitude install openssh-server mc less
Установка и настройка PostgreSQL 9.0
Нашёл пакет PostgreSQL 9.0 в Debian Backports. Добавил в /etc/apt/sources.list строку:deb http://backports.debian.org/debian-backports squeeze-backports mainОбновил список доступных пакетов:# aptitude updateУстановил пакет libpq5 (>= 9.0~) из backports:# aptitude -t squeeze-backports install libpq5Следующие НОВЫЕ пакеты будут установлены: libgcrypt11{a} libgnutls26{a} libgpg-error0{a} libldap-2.4-2{a} libpq5 libsasl2-2{a} libsasl2-modules{a} libtasn1-3{a}Установил PostgreSQL 9.0:# aptitude install postgresql-9.0Следующие НОВЫЕ пакеты будут установлены: lsb-release{a} openssl{a} postgresql-9.0 postgresql-client-9.0{a} postgresql-client-common{a} postgresql-common{a} python{a} python-minimal{a} python-support{a} python2.6{a} python2.6-minimal{a} ssl-cert{a}…Настраивается пакет postgresql-client-9.0 (9.0.3-1~bpo60+1) ...update-alternatives: используется `/usr/share/postgresql/9.0/man/man1/psql.1.gz' для предоставления `/usr/share/man/man1/psql.1.gz' (psql.1.gz) в автоматический режим.Настраивается пакет ssl-cert (1.0.28) ...Настраивается пакет postgresql-common (113) ...Добавление пользователя postgres в группу ssl-certBuilding PostgreSQL dictionaries from installed myspell/hunspell packages...Настраивается пакет postgresql-9.0 (9.0.3-1~bpo60+1) ...Creating new cluster (configuration: /etc/postgresql/9.0/main, data: /var/lib/postgresql/9.0/main)...Moving configuration file /var/lib/postgresql/9.0/main/postgresql.conf to /etc/postgresql/9.0/main...Moving configuration file /var/lib/postgresql/9.0/main/pg_hba.conf to /etc/postgresql/9.0/main...Moving configuration file /var/lib/postgresql/9.0/main/pg_ident.conf to /etc/postgresql/9.0/main...Configuring postgresql.conf to use port 5432...update-alternatives: используется `/usr/share/postgresql/9.0/man/man1/postmaster.1.gz' для предоставления `/usr/share/man/man1/postmaster.1.gz' (postmaster.1.gz) в автоматический режим.Starting PostgreSQL 9.0 database server: main.Обрабатываются триггеры для python-support ...Установил пароль нового юзера postgres, появившегося после установки постгреса:# passwd postgresСменил текущего пользователя и зашёл в терминал PostgreSQL’а:# su -l postgres$ psqlpsql (9.0.3)Type "help" for help.Сменил пароль администратора базы данных, вышел из терминала и вернулся в контекст root’а:postgres=# alter user postgres with password ’63S7kv8gLLtiRp2b’;ALTER ROLEpostgres=# \q$ exit
Установка phppgadmin
# aptitude install phppgadmin...Настраивается пакет apache2-mpm-prefork (2.2.16-6) ...Starting web server: apache2apache2: Syntax error on line 227 of /etc/apache2/apache2.conf: Could not open configuration file /etc/apache2/conf.d/phppgadmin: No such file or directoryAction 'start' failed.The Apache error log may have more information.failed!invoke-rc.d: initscript apache2, action "start" failed.…Creating config file /etc/php5/apache2/php.ini with new versionAction 'configtest' failed.The Apache error log may have more information.Your apache2 configuration is broken, so we're not restarting it for you.Настраивается пакет php5-cli (5.3.3-7) ...…Чтобы заходит в phppgadmin с других компьютеров необходимо:В /etc/phppgadmin/apache2.conf раскомментируем строку "allow from all".В /etc/phppgadmin/config.inc.php отключаем:$conf['extra_login_security'] = false;и перезапускаем Апач:# service apache2 restart
debuntu.ru
Установка и настройка postgresql на debian 8 для работы с 1С — StarlightSite
Сегодня хочу рассказать об установке и небольшой настройке сервера бд postgresql для работы с базами 1С. Задача не сложная, но есть небольшие нюансы как по настройке, так и по выбору дистрибутива. Существуют несколько модификаций postgresql для 1С. Я расскажу про установку двух из них — одна от самой компании 1С, вторая от postgrespro.
Введение
Расскажу немного о возможности работы 1С, при которой можно сэкономить деньги на лицензиях, используя дистрибутив linux и бесплатную бд postgresql. Сервер 1С обычно используют в одной из следующих связок:
- Сервер 1С на Windows + MSSQL Server. Тут все понятно, самая распространенная и самая дорогая связка. Требуется лицензия для MSSQL сервера.
- Сервер 1С на Linux + PostgreSQL. Вариант с максимальным использованием бесплатного ПО. Я давно не использовал эту связку. Последний раз тестировал года 4 назад и мне не понравилась работа 1С сервера на linux. Я использовал дистрибутив Debian. Настройка не сильно сложная, но и не сказать, что простая. Надо ставить драйвера для hasp, чтобы сервер увидел ключ. Сервер работал не стабильно, иногда не получалось сделать выгрузку базы, приходилось перезапускать службу сервера. В целом работало, но не очень надежно. Мне тогда довелось пообщаться плотно с компанией, которая на постоянной основе использовала такую связку и админ тоже жаловался, что приходится сервер 1С перезапускать каждую ночь, тогда более ли менее стабильно все работает. С тех пор я не тестировал работу 1С на линуксе, так что про текущее положение дел ничего сказать не могу.
- Сервер 1С на Windows + PostgreSQL. Более привычный для настройки и управления вариант. Сервер ставится как обычно на windows машину, настраивается традиционным способом, а в качестве бд выступает бесплатная postgresql. О такой связке я и хочу сегодня рассказать.
Стандартная posgresql не будет нормально работать с базами 1С. В чем там проблема, я не знаю, не разбирался. Для работы с 1С используют отдельные сборки, специально под это заточенные. Мне известны 3 сборки posgresql для работы с 1С:
- От Etersoft — http://etersoft.ru/products/postgre
- От Postgrespro — https://postgrespro.ru/products/1c_build
- И от самой 1С. Скачать можно через портал поддержки пользователей.
Я установлю и настрою для сравнения сборку от 1С и от Postgrespro, чтобы попытаться понять, где будет выше производительность. Настраивать все будем на сервере Debian 8. Если у вас еще нет настроенного сервера, то рекомендую мои статьи по установке и настройке debian. Я создал 2 одинаковые виртуальные машины для теста и установил на каждую из них разную версию базы данных.
Подготовка сервера к установке postgresql
Если вы читали мою статью по настройке debian, то наверно уже обновили систему. Если нет, то сделаем это:
# apt-get update && apt-get upgradeСкофнигурируем локали. Нам необходимо, чтобы в системе были 2 локали: en_US.UTF-8 и ru_RU.UTF-8. При этом русская должна быть установлена по-умолчанию. Выполняем конфигурацию с помощью команды:
# dpkg-reconfigure localesОтмечаем указанные выше локали и выбираем ru_RU.UTF-8 дефолтной.
Проверить список установленных локалей можно командой:
# locale -aУстанавливаем необходимые пакеты:
# apt-get install ssl-cert libossp-uuid16 libxslt1.1Устанавливаем вручную еще один пакет:
# wget http://ftp.ru.debian.org/debian/pool/main/i/icu/libicu48_4.8.1.1-12+deb7u3_amd64.deb # dpkg -i libicu48*.debРедактируем системный параметр kernel.shmmax. Какое точно значение для наилучшей производительности выставлять, я не знаю. Не смог найти однозначного ответа. Видел рекомендацию, что в половину оперативной памяти на сервере. Я сделал у себя именно так. Вычислить размер параметра можно по формуле: Mb*1024*1024. У меня виртуальный сервер с 8Gb памяти, значение параметра получается 4096*1024*1024 = 4294967296. Добавляем это значение в /etc/sysctl.conf.
kernel.shmmax = 4294967296Применяем внесенное изменение:
# sysctl -pПроверить текущее значение параметра можно командой:
# cat /proc/sys/kernel/shmmaxУ нас все готово для установки непосредственно postgresql.
Установка сборки PostgreSQL для платформы 1С от postgrespro
Будем устанавливать самую свежую сборку на момент написания статьи — PostgreSQL 9.6.1. Подключаем репозиторий:
# sh -c 'echo "deb http://1c.postgrespro.ru/deb/ $(lsb_release -cs) main" > /etc/apt/sources.list.d/postgrespro-1c.list'Устанавливаем gpg ключ
# wget --quiet -O - http://1c.postgrespro.ru/keys/GPG-KEY-POSTGRESPRO-1C | apt-key add -Обновляем список пакетов:
# apt-get updateУстанавливаем PostgreSQL
# apt-get install postgresql-pro-1c-9.6Запускаем базу данных и добавляем в автозагрузку:
# systemctl start postgresql # systemctl enable postgresqlУстановка сборки postgresql для работы с 1С от postgrespro закончена. Можно начинать работать с базой данных. Но перед этим необходимо задать пароль суперпользователя базы данных и выполнить небольшой тюнинг для увеличения быстродействия базы данных. С дефолтными настройками 1С будет работать очень медленно. Настройкой мы займемся позже, после того, как поставим вторую сборку от 1С.
Установка сборки PostgreSQL от 1С
Свежую версию postgresql от 1С можно скачать в пользовательском разделе на сайте 1С по адресу https://releases.1c.ru/total
Мы устанавливаем postgres на сервер Debian, поэтому скачиваем deb пакет для нашей системы.
Если у вас нет доступа к порталу 1С, можете забрать актуальный файл на момент написания статьи у меня — https://yadi.sk/d/lAujUgW_39gKMS.
Передаем файл на сервер, например через sftp или ssh. Распаковываем содержимое архива в отдельную папку:
# mkdir postgres # tar -xvf postgresql-9.4.2-1.1C_amd64_deb.tar.bz2 -C postgresВ архиве были следующие файлы:
# cd postgres # ls -l итого 5420 -rw-r--r-- 1 120250 июн 2 2015 libpq5_9.4.2-1.1C_amd64.deb -rw-r--r-- 1 3657036 июн 2 2015 postgresql-9.4_9.4.2-1.1C_amd64.deb -rw-r--r-- 1 1069692 июн 2 2015 postgresql-client-9.4_9.4.2-1.1C_amd64.deb -rw-r--r-- 1 72172 авг 11 2015 postgresql-client-common_154.1.1C_all.deb -rw-r--r-- 1 163684 авг 11 2015 postgresql-common_154.1.1C_all.deb -rw-r--r-- 1 457782 июн 2 2015 postgresql-contrib-9.4_9.4.2-1.1C_amd64.debУстанавливаем все пакеты:
# dpkg -i *.debВсе, установка postgresql от 1С закончена. Запускаем и добавляем в автозагрузку:
# systemctl start postgresql # systemctl enable postgresqlТеперь приступаем к настройке для увеличения производительности базы 1С.
Настройка postgresql для увеличения производительности 1С
Настройка это, конечно, громко сказано. Я не занимался серьезно тюнингом postgresql и тестированием. Бегло поискал в интернете информацию и использовал наиболее популярные советы. Так что мои рекомендации не претендуют на реально проверенные и надежные решения. Используйте на свое усмотрение. Я просто делюсь тем, что сам нашел.
Перед изменением конфига, зададим пароль административной учетной записи нашего сервера бд. Для этого заходим в систему от пользователя postgres:
# su postgresМеняем пароль внутреннего пользователя бд postgres:
# /usr/bin/psql -U postgres -c "alter user postgres with password 'postgrespwd';"postgrespwd — пароль пользователя для административного доступа к базе данных. Эту учетную запись необходимо использовать для добавления новой базы в Сервер 1С.
Возвращаемся к тюнингу postgres. В первую очередь рекомендую сервис pgtune — http://pgtune.leopard.in.ua. В нем можно указать характеристики сервера и получить рекомендации по настройке. Так как у нас 2 сервера разных версий — первый 9.6, второй 9.4, рекомендации будут немного отличаться. Имейте это ввиду. Вот пример рекомендаций для первого сервера от postgrespro:
Укажите эти параметры в файле конфигураций. В моем случае это файл /etc/postgresql/9.6/main/postgresql.conf. Мне знакомый скинул готовый файл настроек с рекомендуемыми параметрами для 1С. Я не знаю происхождение этого файла, но настройками воспользовался. В итоге с учетом этого конфига и сайта pgtune я получил вот такой файл конфигурации postgres:
data_directory = '/var/lib/postgresql/9.6/main' hba_file = '/etc/postgresql/9.6/main/pg_hba.conf' ident_file = '/etc/postgresql/9.6/main/pg_ident.conf' external_pid_file = '/var/run/postgresql/9.6-main.pid' listen_addresses = '*' port = 5432 max_connections = 10 unix_socket_directories = '/var/run/postgresql' ssl = true ssl_cert_file = '/etc/ssl/certs/ssl-cert-snakeoil.pem' ssl_key_file = '/etc/ssl/private/ssl-cert-snakeoil.key' shared_buffers = 2GB temp_buffers = 32MB work_mem = 104857kB maintenance_work_mem = 512MB autovacuum_work_mem = 64MB dynamic_shared_memory_type = posix shared_preload_libraries = 'online_analyze, plantuner' bgwriter_delay = 10ms bgwriter_lru_maxpages = 1000 bgwriter_lru_multiplier = 10 fsync = on synchronous_commit = off wal_buffers = 16MB checkpoint_timeout = 55min max_wal_size = 2GB min_wal_size = 1GB checkpoint_completion_target = 0.9 effective_cache_size = 6GB geqo = off default_statistics_target = 100 # range 1-10000 default_statistics_target = 10 cursor_tuple_fraction = 0.0001 from_collapse_limit = 2 join_collapse_limit = 2 log_line_prefix = '%t [%p-%l] %q%u@%d ' log_timezone = 'localtime' cluster_name = '9.6/main' stats_temp_directory = '/var/run/postgresql/9.6-main.pg_stat_tmp' log_autovacuum_min_duration = 0 autovacuum_max_workers = 3 autovacuum_naptime = 15s autovacuum_vacuum_threshold = 90 autovacuum_analyze_threshold = 9 autovacuum_vacuum_scale_factor = 0.0002 autovacuum_analyze_scale_factor = 0.0001 autovacuum_vacuum_cost_delay = 10ms autovacuum_vacuum_cost_limit = 10000 datestyle = 'iso, dmy' timezone = 'localtime' 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' max_locks_per_transaction = 150 max_pred_locks_per_transaction = 150 backslash_quote = on escape_string_warning = off standard_conforming_strings = off online_analyze.threshold = 50 online_analyze.scale_factor = 0.1 online_analyze.enable = on online_analyze.verbose = off online_analyze.min_interval = 10000 online_analyze.table_type = 'temporary' plantuner.fix_empty_table = falseНе забудьте перезапустить postgresql после изменения настроек:
# systemctl restart postgresqlДля версии 9.4 настройки будут немного отличаться. Там как минимум не будет параметров min_wal_size и max_wal_size. Но есть и другие отличия. Призываю не копировать мой конфиг и вставлять к себе, а сравнивать мои параметры и ваш дефолтный конфиг и изменять непосредственно значения параметров.
Есть хороший материал на тему оптимизации postgresql для работы с 1С — http://nixway.org/2015/12/06/optimizacija-postgresql-pod-server-1c-predpriyatiya. Я не буду повторяться и копировать информацию. Можете сами ознакомиться.
Заключение
В моем случае база 1С работала примерно одинаково в обоих случаях. В итоге я решил остановиться на сборке от postgrespro, так как там более свежая версия 9.6. У меня была база 10 гб. Работала она приемлемо, кроме некоторых операций — когда идет чтение по всей базе для построения каких-нибудь списков. Тюнинг различных параметров не привел к уменьшению времени выполнения подобных запросов. Так что этот вопрос остается открытый. Простого решения найти не удалось. Что точно нужно изменить для ускорения работы подобных запросов — не знаю. Разбор этой ситуации описал в отдельном материале — Ускорение работы 1С с postgresql и диагностика проблем производительности.
Заметил, что во время выполнения запроса на 100% нагружено одно ядро процессора. Погуглил тему, стало ясно, что это особенность архитектуры. Один запрос обрабатывает одно ядро. Простых способов решения данной проблемы не существует. Более подробно я не стал разбираться. На ум сразу пришло установить какой-то кэш, чтобы сохранять тяжелые запросы. Нашел информацию про pg_bouncer. Установить не получилось, он сходу из пакетов не встал с моей версией от postgrespro, ругнулся на зависимости. Надо разбираться и собирать из исходников. Нет уверенности, что это поможет, не стал заморачиваться, так как нет много времени на решение этой задачи. Буду рад любым подсказкам и комментариям по теме.
b90698zg.beget.tech