Добрый день!
Я давно хотел попробовать поставить 1С 8.3.9 на Linux сервер. Обычно я работал либо с файловой конфигурацией, либо со стандартной Windows+MsSql. Но хотелось попробовать развернуть базу самому и посмотреть, насколько это сложно.
Сразу скажу, что на Инфостарте была уже похожая публикация по установке на CentOs, но во-первых я делал установку несколько по-другому, во-вторых я рассмотрел вопрос включения отладки по http, и в-третьих я хотел сделать более пошаговую иструкцию, с нуля. Кстати сказать, остальные инструкции которые я находил, были либо устаревшими либо недостаточно подробными. А уж вопрос отладки серверных процедур по http для Linux-сервера я очень долго решал, и думаю он будет очень полезен.
Шаг 1. Установка сервера DigitalOcean
Оказывается, у облачного провайдера DigitalOcean можно получить 10$ по реф ссылке.
И всего за 5$ развернуть Droplet с установленной Ubuntu 16.04 x64.
И вот ваша виртуальная машина уже готова.
Шаг 2. Установка Putty
Немного непривычно, но с сервером придется работать через консольные команды. Для этого лучше всего подойдет утилита Putty. Среди прочих достоинств, она умеет вставлять в консоль текст по клику правой кнопки мышки или по нажатию shift-insert, что поможет в дальнейшей работе.
шаг 3. установка PostgreSQL 9.5 пропатченного
Пропатченная для 1С сборка PostgreSql лежит на сайте авторов PostgresPro, я взял версию 9.5. Также там есть и инструкции по установке, я их просто скопировал в окно putty.
sudo 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-92 | sudo apt-key add - && sudo apt-get update
sudo apt-get install postgresql-pro-1c-9.5
После установки в консоли будет видно в каких папках установился PostgreSql, запомните где находится папка config.
в
Проверить работу сервера Postgresql можно с помощью команды
service postgresql status
Если установка была успешна, то вы увидите зеленую надпись «Active».
Шаг 4. установка Listen_adresses для соединения с pgAdmin.
После установки PostgreSql мне понадобилось проверить как он работает, и я стал соединяться с ним с помощью PgAdmin 1.22.1. Однако, соединиться не вышло, оказалось, нужно указать в конфигурации listen_addresses=’*’. И тут меня встретил консольный(!) текстовый редактор vi. Это вам не нежно любимый Notepad++ с дополнениями. Впрочем, после небольшого чтения мануалов, оказалось что с редактором просто работать: по умолчанию файл открывается на чтение; для редактирования нужно перейти в insert mode нажав i; после редактирования нажать Esc и набрать две команды :w — для сохранения и команду :q для выхода из редактора. Итак, выполним команду открытия postgresql.conf
sudo vi /etc/postgresql/9.5/main/postgresql.conf
Найдем в этом файле listen_addresses=» и поменяем на listen_addresses=’*’. После чего перезапустим postgresql с помощью команды
service postgresql restart
Проверить какие сервисы сейчас слушают порты можно с помощью команды
netstat -tlp
И у вас должна быть примерно такая картина: (здесь у меня уже включен сервер 1с и отладка)
Шаг 5. установка пароля на пользователя postgres
Далее получилось так, что сервер был запущен и listen_addresses были установлены, но возникала ошибка авторизации типа «пользователь postgres не прошел проверку подлинности по паролю». Как оказалось, по умолчанию у него пароль не установлен. Для его установки я поменял пользователя с root на postgresql , зашел в терминал postgresql и выполнил команду password.
su postgres
psql
password
Шаг 6. Соединение через pgadmin 3 (ver 1.22.1)
После всех этих настроек, соединение удалось. Как позже оказалось, базу на этом этапе через pgadmin создавать не надо! Главное что есть возможность подключиться и посмотреть таблицы БД. Проверьте что у базы postgres стоит сопоставление(collation) ru_RU.UTF8
Шаг 7. Установка необходимых пакетов для 1с
По нескольким статьям я собрал список пакетов, которые могут понадобиться для работы 1С:
imagemagick
unixodbc
ttf-mscorefonts-installer
t1utils
libgsf-bin
Вот тут обычно могут быть проблемы, но у меня все установилось гладко. Кстати, при установке 1С конфигурирование шрифтов с помощью выполнения config_system больше не нужно, так как Утилита конфигурирования для работы в ОС Linux config_system удалена из состава поставки и шрифты должны подхватываться автоматически из каталогов типа /usr/share/fonts/msttfcorefonts
Шаг 8. Передача на сервер и установка 1С.
Для передачи скачанных deb пакетов на сервер, я воспользовался входящей в Putty утилитой PSFTP. Положил все deb файлы в папку d:deb_83 и далее выполнил команды:
mkdir /root/onec/
cd /root/onec/
put -r d:deb_83\r
sudo dpkg -i 1c-enterprise83-common_8.3.9-2170_amd64.deb
Для установки пакетов я просто копировал их имена из Свойств файла в Windows в putty.
После установки проверяем запуск сервера 1С командой
service srv1cv83 status
Также должна быть зеленая надпись «Active». Нужно дать права на папки созданному при установке пользователю usr1cv8:
chown -R usr1cv8:grp1cv8 /opt/1C/
chown -R usr1cv8:grp1cv8 /home/usr1cv8/
Шаг 9. Создание базы из консоли администрирования 1С
В консоли администрирования под Windows я долго не мог подлючиться к своему серверу, так как появлялась ошибка «этот хост неизвестен». Оказалось, нужно в hosts файле в моей windows7 прописать адрес сервера кластера, где 207.0.0.0 — ваш IP Lunix-сервера
207.0.0.0 ubuntu-512mb-fraOnec-01
Далее я стал создавать базу 1С, и, как говорилось выше, надо создавать новую базу данных, для этого введите новое имя в поле «База данных», например db1cnew и не забудьте галочку «создать базу данных в случае ее отсутствия». Иначе может появиться ошибка «type mvarchar does not exist», если создавали из pgadmin базу.
Шаг 10. Отладка серверных модулей.
Естественно, после запуска базы, хочется ее отладить, но не все так просто. Для начала нужно запустить сервер с флагом отладки. Для этого открываем файл запуска сервера:
sudo vi /etc/init.d/srv1cv83
И раскомментируем там параметр SRV1CV8_DEBUG=1.
Перезапустим сервер 1С , для просмотра его статуса выполним команду
ps aux |grep 1с
Флаг -debug появился, но дальше после него стоит флаг -tcp. При режиме tcp отладки зайти в точку останова в серверных процедурах не получится, и нужно разбираться дальше. Включение отладки по http оказалось непростой задачей, потому что нигде я не смог найти рабочего решения. Как оказалось, нужно добавить флаг -http в скрипт запуска сервера в функции buildCommmandLine:
sudo vi /etc/init.d/srv1cv83
добавить в функции buildCommmandLine после -debug флаг -http
"$cmdline -debug -http"
Вот так это должно выглядеть:
Теперь для просмотра флагов процесса опять вызовем команду
ps aux |grep 1с
И увидим, что теперь процессы сервера 1С запущены с флагом http и добавился процесс сервера отладка dbgs:
После этого нужно в Конфигураторе в меню Сервис->Параметры->Отладка поставить «Отладка по протоколу HTTP», и отладка заработает:
Шаг 11. Нагрузочный тест Гилева
Также я решли провести нагрузочный тест от Гилева. Скачал dt, поставил на свою базу. Естественно, на 512 мегабайт он не работал, я в панели управления Digital Ocean сделал Resize своего сервера на 1 гигабайт оперативки, и поменял настройки PostgreSQL (возможно, что я сделал это неоптимально и буду рад прочитать в комментариях какие настройки нужны были).
shared_buffers = 256MB
temp_buffers = 64MB
work_mem = 512MB
maintenance_work_mem = 192MB
autovacuum_work_mem = -1
Тест все равно вываливался с ошибкой «превышен максимальный расход памяти сервера за один вызов» и я поменял параметр «Безопасный расход памяти за один вызов» на -1 в настройках сервера 1С. это помогло, и тест завершился с оценкой 7.76. Еще один Resize сервера на 4GB и 2CPU и оценка стала 12.41
Выводы
Разворачивание сервера с нуля и установка необходимых пакетов не занимает много времени. Как видно, работа с Linux может представлять вполне достойную альтернативу серверу на Window, особенно учитывая огромное количество облачных провайдеров и легкость развертывания сервера.
В этой статье я не рассмотрел такие интересные вопросы, как оптимизация настроек PostgreSQL, и создание из сервера с Ubuntu контейнера для Docker — это оставлю на будущее.
Это вы с включенным флагом отладки мерили производительность? Какой толк то?
(1) Да, что-то я не учел влияние отладки на производительность. после выключения отладки даже на 512 МБ тест выдал оценку в 7.92
С учетом того, что сервер торчит в интернет, рекомендация listen_addresses=» и поменяем на listen_addresses=’*’ выглядит сомнительной. Зачем все адреса слушать? Чтобы извне этот сервер долбили постоянно всякий «кулхацкеры»?
Достаточно, чтобы он по локальному адресу отвечал лишь на запросы сервера 1С.
Вопрос с лицензиями как решили?
Отличная статья. Теперь не буду тратить времени на такой эксперимент т.к. 12 баллов плохо. Мне надо как минимум 45. И вообще мечтаю когда скорость SQL баз сравняется с файловыми. Сейчас если в файловой 90 производительность, то на SQL со всеми разгонами около 40-50.
(5) а файловая у вас на SSD лежит? если проблем с блокировками нет, то действительно быстрее получается)
(6)на PCI — E SSD. на sql тоже куча блокировок бывает
почему именно эта сборка, а не с официального сайта 1С ?
сам же и отвечу :
Начиная с версии 8.3 платформа 1С поддерживает PostgreSQL версии 9.4. Для этого фирмой 1С был выпущен набор патчей для PostgreSQL 9.4.2. В предлагаемых пакетах используется более новый PostgreSQL 9.4.10. Эта версия СУБД имеет множество улучшений, прежде всего связанных с отказоустойчивостью.
Пробовал все тоже самое.
В качестве испытуемых дистрибутивов были: OpenSUSE, Debian, Ubunttu, CentOS, AltLinux
Во всех дистрибутивах кроме АльтЛинукс приходилось для нормальной полноценной установки танцевать с бубнами.
В АльтЛинукс у меня все проходит просто.
Установил минималку, установил из репозитария АльтЛинукса пакеты Постгреса 9.4 1С, 1С-преинсталл и еще парочку, и установил 1С и ВСЕ
ну еще конечно есть маленькая хитрость перед установкой 1С нужно в файл hosts прописать имя компьютера на 127.0.0.1, иначе 1с-сервер не запускается почему-то, ну и на клиентах нужно либо прописывать адрес и имя сервера 1С в hosts, или прописывать его в DNS.
Как минимум пять таких серверов нормально работают, на производительность на жалуюсь. Инструкция по установке сервера 1С на ALTLinux есть на вики-сайте AltLinux. короче рекомендую отечественного производителя. С хаспом тоже проблем нет.
А вообще плюсую. Побольше таких инструкций, как для чайников.
Но с линуксовыми серверами, у меня лично проявилась одна проблема.
У клиента есть ЭДО с провайдером ТЕНЗОР. У них есть 1С обработка для интеграции с системой. Так вот она не работает с Линукс серверами.
1. кое-что сохраняет на диск(слешы виндовые)
2. настройки в архиве в макете (имена файлов в архиве на кирилице) в Линуксе Некорректная перекодировка имен.
ну и еще некоторые моменты. и добиться их исправления у разработчика не получилось.
Пришлось исправлять самому, но явно исправил не все и на исправление следующей версии их обработки не стоит
(9)
я сам был удивлен что всё прошло достаточно гладко, обычно самая частая проблема — не ставились какие-то пакеты, особенно libgsf или шрифты. За Альтлинукс — плюсую, у них тоже хорошая инструкция
4. sudo apt-get install nano
sudo nano /etc/postgresql/9.5/main/postgresql.conf
11. Рекомендую ознакомиться сhttp://infostart.ru/public/325482/
Далее — повысить уровень логов и читать рекомендации самого postgres в логах. Точнее не рекомендации, а диагностические сообщения.
Присоединяюсь к вопросу из (4)
Я бы вообще очень долго и сильно бы думал, прежде чем выставлять сервер 1С в интернет. Никакой аутентификации сервер не предусматривает: достаточно знать имя информационной базы. А аутентификация средствами 1С вызывает много вопросов, обычно зная какие пароли ставят сотрудники (либо не ставя никаких).
По хорошему было бы неплохо завернуть все соединения в VPN.
Также стоит упомянуть про локали, автору повезло, у него из коробки была ru_RU-UTF8, в противном случае Postgres окажется непригодным к работе с 1С.
(7) Подскажите а в файловой базе на SSD какая конфигурация 1С8 объем базы и количество пользователей?
Не описано как установить лицензии для 2 вариантов:
1) если ключ USB
2) если ключ электронный
(15) файловая база УТ11.3, объем 10 ГБ. Платформа 8.3.9 с размером таблиц 64К. Пользователей нет т.к. эта база резервная копия sql версии для тестирования обмена с бух и она явно быстрей работает раза в 2
(17)
1.А что за параметр «Размер таблиц» 64К? Или имеете ввиду размер кластера раздела NTFS?
2. А не тестировали как влияет на производительность сжатие БД 1Cv8.1CD средствами NTFS?
У меня на тестовой БД сжатый файл УТ11 размером 14 Гб занимает физически 4,75 Гб. У меня SSD-шка маленькая, экономлю место.
(18) почитайте про нововведения в 8.3.8. Именно из-за увеличенных таблиц в файловой базе и возможность изменять размер таблиц базу созданную на 8.3.8 и выше нельзя открыть на старых платформах.
(19) понял, спсб!
А вы пробовали установить Apache и опубликовать базу?
Спасибо автору. Очень полезная статья!
Но прошу помощи участников. Хотел бы отлаживать серверные процедуры на такой системе, но после включения параметра HTTP
не запускается корректно процесс ragent с вытекающими. Подробности
Отладка на сервере включена:
Предметы отладки с типом «Сервер» вижу. Перевожу в подключенные успешно. Но остановки в серверной процедуре по F9 не происходит. Порты открыты. Эта же конфигурация на тестовом стенде под Windows отлаживается безупречно.
Подтверждаю слова автора, что по протоколу TCP отладка серверных процедур не работает. Но при установке параметра HTTP процесс ragent сразу падает при запуске, успев запустить из-под себя только rmngr.
Буду рад любой информации, можете лично на nelson666@mail.ru.
(22) Отвечу сам себе:
Установил 8.3.10.2168. Все что было описано тут в шаге 10 — заработало!
(23) возможно дело было в Astra Linux. я вот пробовал только на Убунту 16.04, как писал в начале.
Спасибо за инструкцию, будем пробовать. Один косяк есть, в случае если хранится база клиентов в 1с, то сервер по закону должен быть в РФ.
(9)Мучаюсь сейчас с OpenSUSE. После того, как замучился с файловой базой. Вечно то один клиент виснет, то другой. Периодически приходится перезапускать сервер, что ни есть гуд. Причину выяснить не удалось.
Застрял на этапе аутентификации postgresql. Как бы я ни менял пароль, всё равно пишет, что аутентификация не удалась. Может, подскажете куда копать?
(9)Мучаюсь сейчас с OpenSUSE. После того, как замучился с файловой базой. Вечно то один клиент виснет, то другой. Периодически приходится перезапускать сервер, что ни есть гуд. Причину выяснить не удалось.
Застрял на этапе аутентификации postgresql. Как бы я ни менял пароль, всё равно пишет, что аутентификация не удалась. Может, подскажете куда копать?
(22) для включения возможности отладки в /etc/sysconfig/srv1cv83 найти строку #SRV1CV8_DEBUG= убрать решетку и написать SRV1CV8_DEBUG=1, записать.
После этого сервер 1С будет запускаться в режиме отладки.
(28) пробовал OpenSUSE 1С ставить проблемно.
http://basealt.ru
https://forum.altlinux.org/index.php/topic,30681.0.html и https://www.altlinux.org/1C
Остановился на AltLinux последние версии на
есть хорошая инструкция у них на сервере
почитай может поможет(это если дистрибутив уже не сменить). Второй совет поменять дистрибутив на AltLinux. Я сервер на нем делаю за 2-3 часа включая установку системы. рекомендую.
(30)Спасибо. Действительно подробная инструкция. Чувствую, что поплясать с бубном придётся не мало, чем сегодня и занимался целый день. Пока безуспешно. Никак не хочет открываться порт 1541. Что только ни перепробовал. В итоге снёс postgresql в надежде найти пропатченую для 1с. Тоже пока успеха не добился. Та, что лежит у них на сайте, требует библиотеку, которой нет.
Сменить дистрибутив тоже проблематично. Уж больно много настроено уже на серваке. Да и изучать мне его придётся. Никогда не имел дела с altlinux.
(13) а что за проблема с лицензиями? Как минимум вы должны знать, что до 12 клиентов серверный ключ для Linux сервера не требуется.
(31) АльтЛинукс практически ничем не отличается от других. Кроме того в его дистрибуьтиве уже есть пропатченный postgres. и есть пакет устанавливающий доп библиотеки для 1С
(31) я обычно когда делаю такой сервер. ничего на него не навешиваю дополнительного. постгрес, 1С, апач и все. это все настраивается за 2 часа максимум. Удаленный доступ по ССШ уже включен по умолчанию. ну разве, что РДП настроить. Но это обычно можно и на потом оставить. Зато отсутствие проблем с установкой и настройкой 1С+Postgres и публикации базы экономит кучу времени.