суббота, 2 мая 2020 г.

Запуск нескольких экземпляров Apache для разных версий сервера 1с

How to run two instances of apache on same system (Ubuntu)
RunningMultipleApacheInstances
пример настройки виртуальных хостов

Задача есть сервер с нескольким кластерами 1с разных версий.
Нужно запустить несколько экземпляров Apache (на разных портах) и опубликовать базы 1с.

Первый сервер 1с на стандартных портах и путях (стандартная установка)

$ dpkg -l | grep 1c
ii  1c-enterprise83-common               8.3.17-1386                       amd64        1C:Enterprise 8.3 common components
ii  1c-enterprise83-server               8.3.17-1386                       amd64        1C:Enterprise 8.3 server for Linux
ii  1c-enterprise83-ws                   8.3.17-1386                       amd64        1C:Enterpise 8.3 Web-services components for Linux



$ hostname
u2004
#sudo ufw disable

sudo apt-get install apache2 -y

#Описание:
cat /usr/share/doc/apache2/README.multiple-instances


#Подключаем worker

sudo apachectl -V | grep -i mpm
#Server MPM:     event

#Отключаем  mpm_event
sudo a2dismod mpm_event

#Подключаем worker 
sudo a2enmod mpm_worker

sudo service apache2 restart

sudo apachectl -V | grep -i mpm
#Server MPM:     worker

#файлы /etc/apache2/ будут использоваться в дальнейшем в качестве шаблона для
#для других экземпляров, поэтому

#Остановим сервер:

sudo systemctl stop apache2



#Выключим автозапуск:

sudo systemctl disable apache2


#Создадим 1 экземпляр apache web1


sudo sh /usr/share/doc/apache2/examples/setup-instance web1

#Запустим:
sudo systemctl start apache2@web1

#Поставим автозапуск:
sudo systemctl enable apache2@web1

http://u2004 

#Подключаем базу demo в кластере на стандартных портах 1с

#Создаем директорию для vrd-файла:
sudo mkdir -p /var/www/ib/demo

#А также файл конфигурации Apache:

sudo touch /etc/apache2-web1/conf-available/demo.conf

#Переходим в каталог со утилитой публикации веб-клиента (стандартное расположение):

cd /opt/1C/v8.3/x86_64/

Запускаем утилиту публикации базы 1с:
sudo ./webinst -apache24 -wsdir demo -dir '/var/www/ib/demo' -connstr 'Srvr="u2004";Ref="demo";' -confPath /etc/apache2-web1/conf-available/demo.conf

Где /var/www/ib/demo - директория где будет создан vrd-файл,  
demo - имя ИБ,
u2004 - адрес сервера 1С:Предпрятие,
/etc/apache2-web1/conf-available/demo.conf - путь до конфигурационного файла Apache.

#Публикация выполнена

#Проверяем модуль wsap24.so должен быть правильно расположен, в данном случае #стандартный путь:
 
cat /etc/apache2-web1/conf-available/demo.conf
#LoadModule _1cws_module "/opt/1C/v8.3/x86_64/wsap24.so"



#Подключаем конфигурацию:
sudo a2enconf-web1 demo

#Отключаем конфигурацию:
#sudo a2disconf-web1 demo #не сейчас

#Перезагрузка Apache:
sudo systemctl reload apache2@web1.service

sudo systemctl restart apache2@web1.service

sudo systemctl status apache2@web1.service


#Смотрим:

http://u2004/demo/ru_RU/

grep "_1cws_module" -rI /etc/apache2-web1
/etc/apache2-web1/conf-available/demo.conf:LoadModule _1cws_module "/opt/1C/v8.3/x86_64/wsap24.so"


По аналогии можем подключать другие базы


=================================================================

#Установка второго сервера 1c
 
git clone https://gitlab...

cd setup-1c/scripts

./dl-1c-8.3.16.1148.sh

nano setup-add.sh

#Корректируем:

#!/bin/bash
set -e
echo "Предполагаем что на стандартных портах установлен сервер 1с и зависимости"
echo "Создание множества серверов 1с на заданных портах с шагом 100 начиная с 1700"
export VERSION=8.3.16.1148
# ./build-add.sh имя порт
  ./build-add.sh srv1 1700
# ./build-add.sh srv2 1800
# ./build-add.sh srv3 1900
# ./build-add.sh srv4 2000
# ./build-add.sh srv5 2100
# ./build-add.sh srv6 2200
# ./build-add.sh srv7 2300
# ./build-add.sh srv8 2400
# ./build-add.sh srv9 2500

systemctl list-unit-files | grep 8.3.

#Сохранить.
./setup-add.sh
.....
Created symlink /etc/systemd/system/multi-user.target.wants/srv1-8.3.16.1148.service → /etc/systemd/system/srv1-8.3.16.1148.service.
Created symlink /etc/systemd/system/multi-user.target.wants/srv1-8.3.16.1148-ras.service → /etc/systemd/system/srv1-8.3.16.1148-ras.service.
srv1-8.3.16.1148
PORT=1740
REGPORT=1741
RANGE=1760:1790
RASPORT=1745
sudo systemctl status srv1-8.3.16.1148.service
sudo systemctl status srv1-8.3.16.1148-ras.service
sudo systemctl stop srv1-8.3.16.1148-ras.service
sudo systemctl stop srv1-8.3.16.1148.service
sudo systemctl start srv1-8.3.16.1148.service
sudo systemctl start srv1-8.3.16.1148-ras.service
----------------------------------------
srv1-8.3.16.1148-ras.service           enabled         enabled
srv1-8.3.16.1148.service               enabled         enabled

sudo ufw enable


#Загрузим базу.

#Создадим 2 экземпляр apache web2


sudo sh /usr/share/doc/apache2/examples/setup-instance web2

#Изменим порт на 81:

sudo nano /etc/apache2-web2/ports.conf 

#Listen 80
Listen 81


Сохранить.

-------------------------------------
не делаем, если не используем виртуальные сервера!!!
 
http://u2004:81/test/ru_RU/
#Изменим порт на 81: 

#sudo nano /etc/apache2-web2/sites-available/000-default.conf 

#<VirtualHost *:80>
<VirtualHost *:81> 
-------------------------------------


Сохранить.

#Запустим:
sudo systemctl start apache2@web2

#Поставим автозапуск:
sudo systemctl enable apache2@web2

http://u2004:81/ 
  

#Подключаем базу test в кластере на не стандартных портах 1с

#Создаем директорию для vrd-файла:
sudo mkdir -p /var/www/ib/test

#А также файл конфигурации Apache:

sudo touch /etc/apache2-web2/conf-available/test.conf

#Переходим в каталог со утилитой публикации веб-клиента (нестандартное расположение):

cd /opt/1C/v8.3.16.1148/x86_64/

Запускаем утилиту публикации базы 1с:
sudo ./webinst -apache24 -wsdir test -dir '/var/www/ib/test' -connstr 'Srvr="u2004:1741";Ref="test";' -confPath /etc/apache2-web2/conf-available/test.conf

Где /var/www/ib/test - директория где будет создан vrd-файл,  
test - имя ИБ,
u2004:1741 - адрес сервера 1С:Предпрятие,
/etc/apache2-web2/conf-available/test.conf - путь до конфигурационного файла Apache.

#Публикация выполнена

#Проверяем модуль wsap24.so должен быть правильно расположен, в данном случае #стандартный путь:
 
cat /etc/apache2-web2/conf-available/test.conf
LoadModule _1cws_module "/opt/1C/v8.3.16.1148/x86_64/wsap24.so"

#Подключаем конфигурацию:
sudo a2enconf-web2 test

#Отключаем конфигурацию:
#sudo a2disconf-web2 test #не сейчас

#Перезагрузка Apache:
sudo systemctl reload apache2@web2.service

sudo systemctl restart apache2@web2.service

sudo systemctl status apache2@web2.service


#Смотрим:

http://u2004:81/test/ru_RU/

grep "_1cws_module" -rI /etc/apache2-web2
/etc/apache2-web2/conf-available/test.conf:LoadModule _1cws_module "/opt/1C/v8.3.16.1148/x86_64/wsap24.so"


По аналогии можем подключать другие базы 

===================================================================== 

Аналогично делаем другие экземпляры 

=====================================================================

3 комментария:

  1. Спасибо тебе, Добрый человек!!!

    ОтветитьУдалить
  2. еще бы nginx с сертификатом и на одном порту чтобы все было

    ОтветитьУдалить
  3. Спасибо за статью! Искал способ опубликовать базы на разных платформах, теперь понял как запустить два экземпляра апача.

    ОтветитьУдалить