Всем привет.
Хочу поделиться алгоритмом установки, настройки и сопряжения с 1С веб-сервера Apache на РедОС. Попутно попробую описать некоторые неочевидные моменты, о которые я набил шишки. Отмечу, что в Интернете много источников с описанием похожих алгоритмов, но мне так и не удалось найти тот, который на 100% отработал бы у меня – всегда один-два-несколько шагов отказывались вести себя согласно описанию. Поэтому решил создать свой. Заранее приношу извинения, если своими непрофессиональными терминами или фразами вызову глазные конвульсии у дорогих читателей. Ведь я 1С-ник и в навыках администрирования ОС, а тем более Linux, нахожусь пока в стадии любознательного эмбриона.
Итак, вводные:
-
Есть сервер «srv******-linux» с развернутой ОС РедОС Муром 7.3.
-
Есть мой ПК с Windows
-
И есть задача: развернуть на сервере из п.1 веб-сервер Apache и опубликовать на нем базу 1С.
Решение:
-
Нулевым шагом удаляю предыдущий установленный Apache, если он есть. Для этого последовательно выполняю несколько команд.
*Если выполнить только remove, то в системе останутся связанные файлы, которые могут мешать новой установке):
dnf remove httpd.x86_64 – удаляем основной пакет
dnf autoremove – удаляем зависимости
whereis httpd – проверяем оставшиеся зависимости
rm –rf <папки> – удаляем оставшиеся, выведенные на предыдущем шаге вручную
* Неочевидный момент: недостаточно, по-крайней мере у меня так было, удалять/устанавливать по названию пакета «httpd». Мне пришлось указать полное наименование пакета «httpd.x86_64»
-
Ищу в репозитории пакет Apache для установки по имени «httpd».
*Да, именно «httpd», а не «apache». Ведь, как оказалось, это одно и то же. Просто, в ОС на RedHat прижилось название, которое использовали для краткости «http daemon» -> httpd, а ОС на Debian – apache. Неразбериха…
dnf search httpd
В результате найдено два пакета: 32х и 64х-разрядные
-
Ставлю 64х-разрядный, на вопросы установщика отвечая “y”.
dnf install httpd.x86_64
-
Открываю (если не открыт) для доступа с моего ПК порт на сервере, указанный в конфигурационном файле Apache. Для определения порта открываю конфигурационный файл:
cat /etc/httpd/conf/httpd.conf – на чтение, если просто узнать порт
nano /etc/httpd/conf/httpd.conf – на редактирование, если нужно прописать определенный порт
ищу строку “Listen…”
-
Добавляю службу Apache в автозагрузку, запускаю и проверяю статус
systemctl enable httpd.service
systemctl start httpd.service
systemctl status httpd.service
-
Проверяю работоспособоность Apache по обращению через браузер. Для этого в браузере на моем ПК пробую открыть страницу с адресом
http://<имя сервера, на котором развернут Apache>/
Если страничка отобразит что-то подобное, то Apache установлен корректно и порт открыт
-
Ставлю коннектор 1С (компонент WS из дистрибутива платформы 1С). Нужен для публикации базы 1С.
chmod +x setup-full-8.3.23.2040-x86_64.run
./setup-full-8.3.23.2040-x86_64.run --mode unattended --disable-components client_full --enable-components ws
-
Создаю папку для файла параметров подключения Apache к базе 1С. В моем случае база называется H******K.
mkdir /var/www/Enterprise1C
mkdir /var/www/Enterprise1C/H******K
-
Создаю отдельную папку conf.1c и помещаю в нее пустой конфигурационный файл публикуемой базы
mkdir /etc/httpd/conf.1c
touch /etc/httpd/conf.1c/H******K.conf
-
Настраиваю автоподключение файлов в основном конфигурационном файле Apache «httpd.conf». Для этого останавливаю службу Apache, открываю файл на редактирование, добавляю в конец файла строки и снова запускаю службу Apache.
systemctl stop httpd.service
nano /etc/httpd/conf/httpd.conf
systemctl start httpd.service
-
Публикую базу с помощью инструмента webinst из папки с платформой 1С. При публикации использую ряд подготовленных параметров:
wsdir - имя публикации (имя базы на сервере) – у меня «H******K»
dir - каталог для коннектора 1С – у меня «/var/www/Enterprise1C/H******K»
connstr - строка подключения к базе 1С – у меня «"Srvr=srv******;Ref=H******K"»(обращаю внимание, что синтаксис немного отличается от строки подключения в списке баз при открытии ярлыка 1С, плюс важен вид кавычек – именно «""»)
confPath путь к файлу параметров взаимодействия Apache с 1С – у меня тот созданный пустой файл «/etc/httpd/conf.1c/H******K.conf»
Для указания одного из параметров инструмента публикации webinst выясняю версию Apache
httpd –v
у меня оказалась 2.4, в зависимости от версии указываем параметр apache2, apache22 или apache24
заходим в каталог платформы 1С и выполняем публикацию
cd /opt/1cv8/x86_64/8.3.23.2040
./webinst -publish –apache24 -wsdir H******K -dir /var/www/Enterprise1C/H******K -connstr "Srvr=srv******;Ref=H******K" -confPath /etc/httpd/conf.1c/H******K.conf
В результате в папке «/var/www/Enterprise1C/H******K» появится файл «default.vrd» и будет заполнен ранее пустой файл «etc/httpd/conf.1c/H******K.conf»
-
Проверяю публикацию. Для этого захожу на своем ПК в браузер и открываю страницу по пути «http://srv******-linux/H******K/». Если база открылась в веб-режиме, то публикация прошла успешно.
- Если при проверке страница зависает или выводится сообщение
Connection error
by reason:
server_addr=tcp//****************; Permission denied...
То необходимо на сервере с Apache отключить SELinux. Для этого в конфигурационном файле SELinux нужно изменить параметр «SELINUX=»
nano /etc/selinux/config
И перезагрузить сервер.
Надеюсь, что материал статьи окажется кому-то полезным и позволит сэкономить драгоценное время.