Публикация базы 1С на веб-сервере Apache на сервере Linux #720686


#0 by Нуфс-Нуфс
В отличие от других подобных публикаций здесь будет описано как опубликовать базу (располагающуюся на сервере windows) на веб-сервере apache (расположенном на соседнем сервере под linux). Введение Если кратко – то в этой статье я попробую рассказать как опубликовать базу 1С на web-сервер апач, расположенном на сервере с Linux (Ubuntu). Зачем нужна такая схема? По большей части это связано с безопасностью. Если вы скажете системному администратору, что вам нужно «выпустить сервер 1С в интернет», то от нормального специалиста вы получите кучу возражений (ну а от грамотного специалиста – еще и альтернативные пути). Одним из таких путей и является предложенная схема. В предложенной варианте – «снаружи» будет доступен только сервер на Ubuntu и апач. Таким образом, в случае атаки – пострадает только этот один сервер, заменить который не составит труда (например перенаправив входящие соединения на его резервную копию), а ваша драгоценная 1С останется не тронутой. Не спорю, для серьезных компаний с армией бородатых админов эта схема покажется не серьезной и для них безопасность будет ассоциироваться только с DMZ (желающие могут погуглить), но для средней руки конторы это будет вполне приемлемый вариант. Конечно, от Anonymous это вас не спасет, но обычным «хацкерам»  довольно сильно затруднит задачу. Исходные данные Для реализации такой схемы нам потребуется сервер А: Ubuntu 12 c Apache2 и сервер В: Windows 2008, MS SQL, платформа 1С 8.3. В моих экспериментах я использовал арендованные виртуальные сервера. Нюанс: В качестве сервера А выступал Xeon 2600 series, 1 ядро, 512 Мб RAM, 16Гб SSD (250р/мес), в качестве сервера В выступал Xeon 2600 series, 2 ядра 4096 Мб RAM 128 Гб SSD (2800руб/мес). Белые статически IP. Оплата посуточная. Вы можете развернуть подобный сервер, поиграться с ним пару дней, потратив 200р. Время на разворачивание нового сервера – 5 мин,  доступ по RDP (Windows) SSH-клиент (Linux). Здесь указывать, каким именно хостингом пользовался, я не буду (чтобы не сочли за рекламу). Но если спросите в комментариях – отвечу. Решение задачи 1.     Начнем с настройки сервера А Подключаемся к серверу. Для подключения можно использовать SSH-клиент  Putty (предупреждаю, работать придется через командную строку). В моем случае сервер Ubuntu был развернут с предустановленным апачем, поэтому процедуру установки описывать не буду (мануалы есть в гугле). Единственно что я сделал сразу при подключении (по совету админа) – это выполнил две команды: Так же установил клиент  (что-то типа коммандера, намного облегчит работу в дальнейшем): apt-get mc Запуск выполняется просто командой: mc Дальше проверяем работу апача: service apache2 start service apache2 restart Нюанс: при разворачивании нового сервера среди предустановленного ПО я указал Apache, MySQL, nginx. Так вот, апач упорно не хотел стартовать, ругаясь на занятый порт. При помощи гугла выяснил что на 80 порту сидел тот самый nginx. Менять порт не хотел, поэтому просто удалил этот виртуальный сервер и за 2 минуты получил новый, уже без nginx. Проверяем работу апача из-вне, набираем в браузере Видим заветное «It works!» Дальше устанавливаем компоненты 1С на сервер Ubuntu. Вам понадобится платформа для Linux, а точнее архив вида 8.3.5.1119_deb, с двумя файлами внутри 8.3.5.1119_deb.tar.gz и 8.3.5.1119_deb64.tar.gz (в моем случае Ubuntu 64-битная, поэтому я беру второй файл). Где их взять объяснять не буду, а вот как скачать на сервер расскажу. Качаем при помощи команды: Wget 8.3.5.1119_deb64.tar.gz – это тоже архив. Распаковать его можно либо командой tar, либо открыть MC, открыть архив как папку, и скопировать из этой папки-архива нужные нам файлы в нужное нам место. А нужны нам следующие файлы: 1c-enterprise83-common_8.3.5-1119_amd64.deb 1c-enterprise83-server_8.3.5-1119_amd64.deb 1c-enterprise83-ws_8.3.5-1119_amd64.deb Эти файлы можно также открыть в MC и запустить файлы INSTALL. Устанавливать нужно в таком же порядке, как указаны здесь. По сути нам нужен только последний пакет, но гугл и форумы сказали, что для пакета ws рекомендуется пакет server, а для server рекомендуется common. Так что ставим все. После установки 1С службу агента 1С можно остановить: service srv1cv83 stop Нюанс: на самом деле, если не ошибаюсь, для апача нужен всего один файл wsap22.so, который можно найти в самом пакете 1c-enterprise83-ws_8.3.5-1119_amd64.deb, не устанавливая саму 1С. Нужно достать его оттуда, положить в специальную папку (можно даже в папку апача) и указать к нему путь в файле httpd.conf. Однако у меня это не сработало. При старте апача возникала ошибка: root@vm88265:/etc/apache2# service apache2 restart apache2: Syntax error on line 214 of /etc/apache2/apache2.conf: Syntax error on line 1 of /etc/apache2/httpd.conf: Cannot load /etc/apache2/wsap22.so into server: nuke83.so: cannot open shared object file: No such file or directory Action 'configtest' failed. Возможно, было дело в правах на файл, возможно в чем-то еще, а возможно одного такого файла не достаточно. Если у вас получится прикрутить wsap22.so к апачу без установки 1С – расскажите. 2.     На время отвлечемся от сервера А и проверим, что сервер В соответствует нашим требованиям. На сервер В у вас должна быть развернута клиент-серверная тестовая база (почему не файловая – расскажу дальше, хотя и файловая тоже возможна). Также в брандмауэре у вас должны быть открыты порты на входящие подключения (1540,1541,1560-1590). 3.     Продолжаем настройку Ubuntu. В файле host (находится по адресу  /etc/host) мы должны прописать: В корне создайте папку wwwroot (название по желанию), в ней создайте папку TestPub (это виртуальная папка, в которой будет храниться файл default.vrd) Теперь идем по адресу /opt/1c/v8.3/x86_64/ Нас интересует файл webinst. Можете его запустить – увидите какие параметры командной строки он использует: 1C:Предприятие 8. Утилита публикации веб-клиента      Публикация:      webinst [-publish] websrv -wsdir VirtualDir -dir Dir -connstr connStr [-confPath confPath]      Публикация на основе существующего vrd файла:      webinst [-publish] websrv [-wsdir VirtualDir] -descriptor vrdPath -dir Dir [-connstr connStr] [-confPath confPath]      Удаление публикации:      webinst -delete websrv -wsdir VirtualDir [-dir Dir] [-connstr connStr] [-confPath confPath]      Удаление публикации по существующему vrd файлу:      webinst -delete websrv [-wsdir VirtualDir] -descriptor vrdPath [-dir Dir] [-connstr connStr] [-confPath confPath]      Ключи:          -publish: опубликовать, ключ по умолчанию             -apache2: публикация Веб-клиента для Apache 2.0             -apache22: публикация Веб-клиента для Apache 2.2         -wsdir VirtualDir: виртуальный каталог         -dir Dir: физический каталог, в который будет отображен виртуальный         -descriptor vrdPath: путь к существующему vrd файлу         -connstr connStr: строка соединения ИБ         -confPath confPath: полный путь к конфигурационному файлу Пример строки для публикации базы: ./webinst -apache22 -wsdir test -dir /wwwroot/TestPub -connstr "Srvr=10.7.12.108;Ref=test;" -confPath /etc/apache2/httpd.conf Разберем мой случай: «./webinst» - запуск на исполнение «-apache22» - публикуем на апаче «-wsdir test» - имя, по которому будет доступна ваша база из-вне, в данном случае адрес будет выглядеть «-dir /wwwroot/TestPub» - пусть к папке, где будет располагаться файл default.vrd «-connstr "Srvr=10.7.12.108;Ref=test;" – строка подключения к информационной базе «-confPath /etc/apache2/httpd.conf» - путь к конфигурационному файлу апача Результатом будет «Publication successful» Нюанс: бился с этой строкой долго. Судя по всему чувствительна к регистру и еще фиг к чему. Единственно что могу порекомендовать – вводить все параметры внимательно. Нюанс: чуть ранее я упоминал, что с базами в файлом варианте у вас могут быть проблемы. Суть – вы должны расшарить папку базы для линукса. А это само по себе не простое действие. Да и не безопасное. В результате этого в файле /etc/apache2/httpd.conf (конфигурационный файл апача) будут выполнены следующие изменения:     Allow from all А также в папке  /wwwroot/TestPub/ мы видим файл default.vrd следующего содержания: Перезапускаем апач и пробуем подключиться по адресу: Для использования веб-сервисов и хттп-сервисов и отладки 1С в файл default.vrd необходимо привести к виду: мы указываем, на каком компьютере искать предметы отладки. Так вот. Строка подключения конфигуратора (в котором будет ловить отладку) – должна быть тоже «srvr=10.7.12.108;ref=test;», т.е. подключения конфигуратора к базе должно быть тоже по ип. Ну вот и все. Уверен у вас получится повторить этот эксперимент. А если нет – то гугл ответит на 90% ваших вопросов. А если и он не поможет – спрашивайте здесь) А вот здесь Публикация мобильной конфигурации на web-сервере Apache на Linux Ubuntu Пользуйтесь на здоровье)))
#1 by mzelensky
Огромное спасибо! Актуальная статья.
#2 by shuhard
[Для подключения можно использовать SSH-клиент  Putty (предупреждаю, работать придется через командную строку). ] улыбнуло
#3 by Kalambur
и что в ней такого? Разжевано для тех кто не может читать?
#4 by Biker
update-rc.d nginx disable чтобы убрать из загрузки в httpd.conf хранить совй конфиг не комильфо,   есть sites-available для wwwroot есть var/www не стоит отклоняться от fhs. без ssl лучше не использовать
#5 by Нафс-Нафс
для меня это был первый раз когда я запустил линукс) сервак то удаленно развернул, а вот как подключится к нему - пришлось гуглить))) это кстати важные нюансы, но мне предстоит еще саму их изучать. кстати следующий шаг - хочу заюзать ssl (хотя пока и понятия не имею что это и с чем едят))))
#6 by 13_Mult
Прям МистаХабр ))
#7 by Kalambur
ага, тоже всякого 7овна навалом
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С