Со времен моей последней статьи по установке 1с прошло уже больше года, и за прошедшее время многое изменилось. Помнится установка отнимала немало усилий, сначала сборка PostgreSQL с установкой 1с-овских патчей, потом мелкие заморочки с запуском сервера 1с предприятия. Я даже сделал свой репозиторий с собранным PostgreSQL, который работает по сей день, но 1с понемногу пошла людям на встречу: сначала появился неплохо собранный src.rpm для RedHat/CentOS, а сейчас на сайте 1с лежат уже готовые сборки как для CentOS/Redhat, так и для Debian/Ubuntu. Посмотрим что у них получилось.
Задача простая – нужно поставить связку 1с Предпритие и PostgreSQL на Ubuntu Server 12.04 x64. Сколько помню, если сравнить Ubuntu Server и Debian, Ubuntu Server из-за более свежих версий пакетов был всегда более капризный по мелочам.
1. Ставим PostgreSQL
Прежде чем начать установку, нам понадобится провести ряд подготовительных процедур. PostgreSQL может установиться и без этого, но проще будет если сразу во время установки он создаст правильные конфиги и инициализирует базу данных в нужной кодировке.
Увеличиваем максимальный размер сегмента памяти до 64Мб.
root@ubsrv:~# echo "kernel.shmmax=67108864" >>/etc/sysctl.conf root@ubsrv:~# sysctl -p
Генерируем русскую локаль и задаем переменную среды LANG, именно с ней будет работать скрипт инициализации базы данных.
root@ubsrv:~# locale-gen en_US ru_RU ru_RU.UTF-8 root@ubsrv:~# export LANG="ru_RU.UTF-8"
Устанавливаем необходимые зависимисти.
root@ubsrv:~# apt-get install libssl0.9.8 ssl-cert postgresql-common libossp-uuid16 libxslt1.1
Берем с сайта http://users.v8.1c.ru/ архив с PostgreSQL 9.1.2 для 64-битных DEB-систем, распаковываем и устанавливаем нужные компоненты. Нужных и не нужных компонентов в архиве много, для того что бы все заработало достаточно postgresql, postgresql-client и postgresql-contrib.
root@ubsrv:~# tar zxf postgresql_9_1_2_deb_x86_64_tar.gz root@ubsrv:~/postgres# dpkg -i postgresql-9.1_9.1.2-1.1C_amd64.deb libpq5_9.1.2-1.1C_amd64.deb postgresql-client-9.1_9.1.2-1.1C_amd64.deb postgresql-contrib-9.1_9.1.2-1.1C_amd64.deb
После установки нужно еще немного подправить конфигурационный файл, как не странно будучи поставленным в пакете 1с он содержит не правильные настройки для обработки экранирующих символов, и при создании базы 1с выдает ошибки “syntax error at or near “SECOND” at character 127″ или “syntax error at or near “SECOND” at character 227″. Исправляем в файле /etc/postgresql/9.1/main/postgresql.conf следующие параметры.
backslash_quote = on escape_string_warning = off standard_conforming_strings = off
Перезапускаем сервис.
root@ubsrv:~# service postgresql restart
Меняем пароль для пользователя postgres – это тот пароль который мы будем задавать при создании базы данных.
root@ubsrv:~# su postgres postgres@ubsrv:/root$ cd ~ postgres@ubsrv:~$ psql -U postgres -c "alter user postgres with password '123456';" postgres@ubsrv:~$ exit
Отключаем обновление для пакетов 1с-овского PostgreSQL.
root@ubsrv:~# echo "libpq5" hold | dpkg --set-selections root@ubsrv:~# echo "postgresql-9.1" hold | dpkg --set-selections root@ubsrv:~# echo "postgresql-client-9.1" hold | dpkg --set-selections root@ubsrv:~# echo "postgresql-contrib-9.1" hold | dpkg --set-selections
2. Установка сервера 1с Предприятия
Начнем с файла /etc/hosts, для того чтобы 1с-ка правильно создала свои конфиги из него нужно убрать любое упоминание об IPv6 и правильно задать соотношение IP адреса и имени сервера. Пример правильного /etc/hosts.
127.0.0.1 localhost 192.168.20.123 ubsrv.mydomain.local ubsrv
Теперь, точно также как и с Postgresql, забираем с сайта http://users.v8.1c.ru/ последнюю версию платформы сервера 1с 8.2 Предприятия, распаковываем и устанавливаем нужные компоненты.
root@ubsrv:~# tar zxf deb64.tar.gz root@ubsrv:~# dpkg -i 1c-enterprise82-common_8.2.16-368_amd64.deb 1c-enterprise82-server_8.2.16-368_amd64.deb 1c-enterprise82-ws_8.2.16-368_amd64.deb
Даем права для пользователя и группы 1с Предприятия на каталог установки.
root@ubsrv:~# chown -R usr1cv82:grp1cv82 /opt/1C
Добавляем в автозагрузку и запускам сервис.
root@ubsrv:~# update-rc.d srv1cv82 defaults root@ubsrv:~# service srv1cv82 start
На этом первоначальная настройка сервер 1с Предприятия 8.2 закончена.
3. Настройка config_server
Для правильной работы тонкого клиента и режима управляемого приложения, нужно сделать дополнительные настройки используемых шрифтов, установить и задать путь при помощи утилиты config_server.
Делаем символическую ссылку на libc:
root@ubsrv:~# ln -s /lib/x86_64-linux-gnu/libc-2.15.so /lib64/libc-2.15.so
Устанавливаем необходимые пакеты:
root@ubsrv:~# apt-get install ttf-mscorefonts-installer libt1-5 t1utils
Загружаем конвертер для шрифтов и устанавливаем его:
root@ubsrv:~# wget http://archive.ubuntu.com/ubuntu/pool/universe/t/ttf2pt1/ttf2pt1_3.4.4-1.3_amd64.deb root@ubsrv:~# dpkg -i ttf2pt1_3.4.4-1.3_amd64.deb
Переходим в каталог /opt/1C/v8.2/x86_64/utils/ и запускаем config_server
root@ubsrv:~# cd /opt/1C/v8.2/x86_64/utils/ root@ubsrv:~# ./config_server /usr/share/fonts/truetype/msttcorefonts
Теперь сервер полностью настроен и готов к употреблению.
4. Заключение
Казалось бы если отказаться от сборки Posgresql установка станет намного проще, но в итоге по объему работы получается тоже на тоже, много недочетов и мы опять возвращаемся к тому что новички просто не справятся с такой установкой. Если например взять архив с postgresql и установить все пакеты стандартной debian-овской последовательностью команд deb -iR * и apt-get install -f, то postgresql просто не встанет и часть 1с-овских компонентов будет перезаписана стандартными из репозитория. Дальше рихтование конфига, установка локалей, установка прав доступа на каталог 1с – все это создает дополнительные трудности. И как мне кажется, если сейчас забросить работу с 1с, и вернуться к ней года этак через два-три, то все останется на своих местах, будет все таже завсегдатая куча примочек и фенечек
82 Коммент. : “Установка 1c 8.2 и PostgreSQL на Ubuntu Server”
Последнее время я использую Valentina Studio для работы с postgresql на linux. Очень хороший и бесплатный инструмент, рекомендую посмотреть.http://www.valentina-db.com/en/valentina-studio-overview
Спасибо огромное, уже третий сервак настроил по этому гайду. Автор создал себе памятник. СПАСИБО!!!
Потрясающая инструкция, самая понятная из всех. Единственное – был затык на стадии пуска сервера. Писал /ragent: No such file or directory. Гугл по этому запросу ничего не выдает, странно, неужели я один с этим столкнулся. Лечится достаточно просто, наткнулся чисто случайно. Проблема возникла из-за того, что я на 64-разрядный линукс поставил 64-разрядный постгрес и 32-разрядный 1С. apt-get install ia32-libs и все прошло!
Ставлю по аналогии на Ubuntu server 13.10 с сервера 1с postgreSql 9.2.4. на пакете ..contrib.. требует libicu4.6, а я уже натянул 5.2. Как мне этой редиске сказать, что 4.6 как-бы уже существует. Даунгрейдиться не хочу.
Сегодня поставил симлинки:
root@gss:/usr/lib/x86_64-linux-gnu# ln -s libicudata.so.52.1 /usr/lib/x86_64-linux-gnu/libicudata.so.46
root@gss:/usr/lib/x86_64-linux-gnu# ln -s libicui18n.so.52.1 /usr/lib/x86_64-linux-gnu/libicui18n.so.46
root@gss:/usr/lib/x86_64-linux-gnu# ln -s libicuio.so.52.1 /usr/lib/x86_64-linux-gnu/libicuio.so.46
root@gss:/usr/lib/x86_64-linux-gnu# ln -s libicule.so.52.1 /usr/lib/x86_64-linux-gnu/libicule.so.46
root@gss:/usr/lib/x86_64-linux-gnu# ln -s libiculx.so.52.1 /usr/lib/x86_64-linux-gnu/libiculx.so.46
root@gss:/usr/lib/x86_64-linux-gnu# ln -s libicutest.so.52.1 /usr/lib/x86_64-linux-gnu/libicutest.so.46
root@gss:/usr/lib/x86_64-linux-gnu# ln -s libicutu.so.52.1 /usr/lib/x86_64-linux-gnu/libicutu.so.46
root@gss:/usr/lib/x86_64-linux-gnu# ln -s libicuuc.so.52.1 /usr/lib/x86_64-linux-gnu/libicuuc.so.46
дальше:
root@gss:/home/gad/Загрузки/postgre# dpkg -i postgresql-contrib-9.2_9.2.4-1.1C_amd64.deb
Выбор ранее не выбранного пакета postgresql-contrib-9.2.
(Чтение базы данных … на данный момент установлено 260876 файлов и каталогов.)
Распаковывается пакет postgresql-contrib-9.2 (из файла postgresql-contrib-9.2_9.2.4-1.1C_amd64.deb) …
dpkg: зависимости пакетов не позволяют настроить пакет postgresql-contrib-9.2:
postgresql-contrib-9.2 зависит от libicu46 (>= 4.6.1-1), однако:
Пакет libicu46 не установлен.
dpkg: ошибка при обработке параметра postgresql-contrib-9.2 (–install):
проблемы зависимостей — оставляем не настроенным
При обработке следующих пакетов произошли ошибки:
postgresql-contrib-9.2
Установил строго по инструкции на Ubuntu Server x64 12.05 LTS , пакет Postgres версии 9.1.2 x64 взял c пользовательского сайта 1С. Но сервер 1С взял 32-битный (ключ у меня только такой) версии 8.3.4.365. Чтоб его запустить надо доустановить
#apt-get install ia32-libs
И всё работает, за исключением заключительной части. Проблема в том, что утилиту ttf2pt1 снесли со всех дебиановских репозиториев, чем его можно заменить?
ttf2pt1
mkdir /home/user/ttf2pt1
cd /home/user/ttf2pt1
wget http://es.archive.ubuntu.com/ubuntu/pool/universe/t/ttf2pt1/ttf2pt1_3.4.4-1.3_i386.deb
sudo dpkg -i *.deb
Имею Ubuntu Server x64 12.05 LTS. У меня другая проблема: Через пару дней работы postgresql, установленный из бинарников 1С, свалился с ошибкой:
The database cluster was initialized with HAVE_INT64_TIMESTAMP but the server was compiled without HAVE_INT64_TIMESTAMP.
It looks like you need to recompile or initdb.
и больше не запускался. Из исходников (что бы собрать с нужным ключиком), предоставляемых 1С, он тупо не собирается, даже с правкой файлов и установкой нужных ему версий библиотек. Как оттуда спасать рабочие базы в такой ситуации я не знаю..
Чисто теоретически, если сделать ему initdb в самом начале, такой ошибки не возникнет.
Другой, такой же сервер, работает нормально.. Но при его инсталляции я эту процедуру проводил несколько раз, когда разбирался с локалью.
сама процедура такая:
что б каждый раз не sudoить:
sudo -i
нужен пустой каталог /var/lib/postgresql/9.1/main
сохраняем старый:
mv /var/lib/postgresql/9.1/main /var/lib/postgresql/9.1/main.b
mkdir /var/lib/postgresql/9.1/main
chown postgres:postgres /var/lib/postgresql/9.1/main
chmod 700 /var/lib/postgresql/9.1/main
sudo -u postgres /usr/lib/postgresql/9.1/bin/initdb -D /var/lib/postgresql/9.1/main
Если в конфиге postgres установлено использование ssl (по умолчанию это так):
cd /var/lib/postgresql/9.1/main
ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem server.crt
ln -s /etc/ssl/private/ssl-cert-snakeoil.key server.key
.. сейчас хочу попробовать пробовать ставить stable версию сервера от ethersoft. Но он 9.0
PS Дефолтовый конфиг postgresql не рекомендуют использовать сами его разработчики. Он существует для того, чтобы проверить его работоспособность. Производительность сервера с ним так себе. Для оптимизации конфига под конф. сервера есть утилита pg_tune.
Еще есть неплохая статья http://wiki.etersoft.ru/PostgreSQL/Optimum?v=xnq
и да, вместо ttf2pt1 1С-ке подойдет и ttf2afm
Доброго времени суток! Спасибо за великолепную статью, очень понятно и грамотно написано. Почитав комментарии я наткнулся на свою ошибку, но описанные пути ее решения мне не помогают( Я взял дистрибутив не ubuntu server, а ubuntu 12.04 десктопную. Тут видимо моя ошибка. Все прекрасно ставиться, но при запуске сервера возникает злополучная ошибка: “строка 193: [: слишком много аргументов”, сервер при этом стартует! Я совершенно нормально создаю базу данных, пользователи да же работают в 1с, но когда необходимо зайти предположим в справочник “пользователи”, для предоставления прав вылетает окно: “ошибка инициализации графической подсистемы”. Я перечитал тонны мануалов и статей, переустанавливал пакеты, но мне так это и не помогло. Может быть добавите в инструкцию, таблетку от этого несчастья!
Спасибо!
Еще добавлю, что система 64 разрядная на ней стоит 64 разрядный Postgresql, а платформа 1с х32 разрядная, может проблема в этом?
Спасибо за ман! В ближайшее время на виртуалке опробуем.