Запустить несколько версий личного кабинета на одном сервере

Один модуль lbweb-client может поддерживать несколько версий личного кабинета. У каждой из этих версий будут свои настройки — например, интеграции с разными платёжными системами.

Пример. Вы оказываете услуги телефонии и интернета от лица разных операторов: «SuperPhone» и «SuperNet». Создайте две версии личного кабинета и настройте их с учётом специфики операторов. Абоненты «SuperPhone» смогут посмотреть статистику по своим учётным записям, а клиенты «SuperNet» — изменить MAC-адрес.

Для создания нескольких версий личного кабинета выполните четыре шага.

  1. Установка lbweb-client
  2. Настройка сервера
  3. Настройка конфигурационных файлов
  4. Сериализация

Установка lbweb-client

Установите lbweb-client на веб-сервер. Об этом подробно написано в инструкциях:

Мы рекомендуем устанавливать модули lbweb-client и LBcore на один сервер. Если вы хотите установить модуль lbweb-client на другой сервер, воспользуйтесь инструкцией.

Настройка сервера

Для каждой версии личного кабинета нужно настроить конфигурацию Apache. Пути различаются в зависимости от ОС.

Пример конфигурации находится в файле lbweb-client.apache2.sample. Скопируйте его для каждой версии:

cp /etc/lanbilling/phpclient/apache2/lbweb-client.apache2.sample /etc/apache2/sites-available/client1.conf
cp /etc/lanbilling/phpclient/apache2/lbweb-client.apache2.sample /etc/apache2/sites-available/client2.conf

Пример конфигурации находится в файле lbweb-client.apache2.sample. Скопируйте его для каждой версии:

cp /etc/lanbilling/phpclient/apache2/lbweb-client.apache2.sample /etc/httpd/conf.d/client1.conf
cp /etc/lanbilling/phpclient/apache2/lbweb-client.apache2.sample /etc/httpd/conf.d/client2.conf

Разделить личные кабинеты можно двумя способами

  • Разные домены:

    • http://client1.my.site
    • http://client2.my.site
  • Разные пути на одном домене:

    • http://my.site/client1
    • http://my.site/client2

Выберите вариант настройки: первый или второй.

Вариант 1: разные домены

В каждом из скопированных файлов закомментируйте верхние строки и раскомментируйте секцию VirtualHost. Внесите исправления в эти раскомментированные строки.

  • Укажите домен в поле ServerName.
  • Задайте директории для временных файлов с помощью директивы SetEnv.
  • Укажите расположение директории /assets/.
  • Настройте логирование в директивах ErrorLog и CustomLog. Рекомендуем указывать абсолютные пути.

Для client1:

<VirtualHost *:80>
	ServerAdmin webmaster@localhost
	ServerName client1.my.site
	DirectoryIndex api.php

	DocumentRoot /usr/share/lanbilling/phpclient/client/public
	<Directory />
		SetEnv RUNTIME_PATH /var/lib/lanbilling/phpclient/client1/
		Options FollowSymLinks
		AllowOverride All
		<IfModule !mod_authz_core.c>
			Order allow,deny
			allow from all
		</IfModule>
		<IfModule mod_authz_core.c>
			Require all granted
		</IfModule>
		<IfModule mod_rewrite.c>
			RewriteEngine on
			RewriteCond %{REQUEST_FILENAME} !-f
			RewriteCond %{REQUEST_FILENAME} !-d
			RewriteRule . api.php
		</IfModule>
	</Directory>

	Alias /assets/ /var/lib/lanbilling/phpclient/client1/assets/
	<Directory /var/lib/lanbilling/phpclient/client1/assets>
		Options FollowSymLinks
		AllowOverride None
		<IfModule !mod_authz_core.c>
			Order allow,deny
			allow from all
		</IfModule>
		<IfModule mod_authz_core.c>
			Require all granted
		</IfModule>
	</Directory>

	ErrorLog /var/log/httpd/error-client1.log
	LogLevel warn

	CustomLog /var/log/httpd/access-client1.log combined
</VirtualHost>

Для client2:

<VirtualHost *:80>
	ServerAdmin webmaster@localhost
	ServerName client2.my.site
	DirectoryIndex api.php

	DocumentRoot /usr/share/lanbilling/phpclient/client/public
	<Directory />
		SetEnv RUNTIME_PATH /var/lib/lanbilling/phpclient/client2/
		Options FollowSymLinks
		AllowOverride All
		<IfModule !mod_authz_core.c>
			Order allow,deny
			allow from all
		</IfModule>
		<IfModule mod_authz_core.c>
			Require all granted
		</IfModule>
		<IfModule mod_rewrite.c>
			RewriteEngine on
			RewriteCond %{REQUEST_FILENAME} !-f
			RewriteCond %{REQUEST_FILENAME} !-d
			RewriteRule . api.php
		</IfModule>
	</Directory>

	Alias /assets/ /var/lib/lanbilling/phpclient/client2/assets/
	<Directory /var/lib/lanbilling/phpclient/client2/assets>
		Options FollowSymLinks
		AllowOverride None
		<IfModule !mod_authz_core.c>
			Order allow,deny
			allow from all
		</IfModule>
		<IfModule mod_authz_core.c>
			Require all granted
		</IfModule>
	</Directory>

	ErrorLog /var/log/httpd/error-client2.log
	LogLevel warn

	CustomLog /var/log/httpd/access-client2.log combined
</VirtualHost>

Далее настройте конфигурационные файлы.

Вариант 2: разные пути на одном домене

В каждом из скопированных файлов укажите расположение директории /assets/.

Для client1:

Alias /client1/assets /var/lib/lanbilling/phpclient/client1/assets/
<Directory /var/lib/lanbilling/phpclient/client1/assets>
	Options FollowSymLinks
	AllowOverride None
	<IfModule !mod_authz_core.c>
		Order allow,deny
		allow from all
	</IfModule>
	<IfModule mod_authz_core.c>
		Require all granted
	</IfModule>
</Directory>

Для client2:

Alias /client2/assets /var/lib/lanbilling/phpclient/client2/assets/
<Directory /var/lib/lanbilling/phpclient/client2/assets>
	Options FollowSymLinks
	AllowOverride None
	<IfModule !mod_authz_core.c>
		Order allow,deny
		allow from all
	</IfModule>
	<IfModule mod_authz_core.c>
		Require all granted
	</IfModule>
</Directory>

Задайте директории для временных файлов с помощью директивы SetEnv.

Для client1:

Alias /client1 /usr/share/lanbilling/phpclient/client/public/
<Directory /usr/share/lanbilling/phpclient/client/public>
	Options FollowSymLinks
	AllowOverride All
	SetEnv RUNTIME_PATH /var/lib/lanbilling/phpclient/client1/
	<IfModule !mod_authz_core.c>
		Order allow,deny
		allow from all
	</IfModule>
	<IfModule mod_authz_core.c>
		Require all granted
	</IfModule>
	<IfModule mod_rewrite.c>
		RewriteBase /client1
		RewriteEngine on
		RewriteCond %{REQUEST_FILENAME} !-f
		RewriteCond %{REQUEST_FILENAME} !-d
		RewriteRule . api.php
	</IfModule>
</Directory>

Для client2:

Alias /client2 /usr/share/lanbilling/phpclient/client/public/
<Directory /usr/share/lanbilling/phpclient/client/public>
	Options FollowSymLinks
	AllowOverride All
	SetEnv RUNTIME_PATH /var/lib/lanbilling/phpclient/client2/
	<IfModule !mod_authz_core.c>
		Order allow,deny
		allow from all
	</IfModule>
	<IfModule mod_authz_core.c>
		Require all granted
	</IfModule>
	<IfModule mod_rewrite.c>
		RewriteBase /client2
		RewriteEngine on
		RewriteCond %{REQUEST_FILENAME} !-f
		RewriteCond %{REQUEST_FILENAME} !-d
		RewriteRule . api.php
	</IfModule>
</Directory>

Далее настройте конфигурационные файлы.

Настройка конфигурационных файлов

  1. Создайте директории с файлами конфигурации для каждой версии личного кабинета:

    cp -R /etc/lanbilling/phpclient/client/ /etc/lanbilling/phpclient/client1/
    cp -R /etc/lanbilling/phpclient/client/ /etc/lanbilling/phpclient/client2/
    

    ``

  2. Задайте параметры в конфигурационных файлах каждой из версий. Например, в одной скройте раздел «Телефония», а в другой — «Интернет» и «Телевидение». Чтобы разделить личные кабинеты по операторам, используйте параметр oper_id в файле main.ini.

    Взаимодействие с разными процессами LBcore
  3. Также вы можете настроить тему — внешний вид личного кабинета.

Сериализация

Действия различаются для разных ОС.

  1. Создайте папки для сериализаций:

    mkdir -p /var/lib/lanbilling/phpclient/client1/assets/
    mkdir -p /var/lib/lanbilling/phpclient/client2/assets/
    

    ``

  2. Измените владельца директорий:

    chown -R www-data:www-data /var/lib/lanbilling/phpclient/client1/
    chown -R www-data:www-data /var/lib/lanbilling/phpclient/client2/
    

    ``

  3. Сериализуйте изменения:

    /usr/local/sbin/lbwebcfg -y client /etc/lanbilling/phpclient/client1/ -o=/var/lib/lanbilling/phpclient/client1/config
    /usr/local/sbin/lbwebcfg -y client /etc/lanbilling/phpclient/client2/ -o=/var/lib/lanbilling/phpclient/client2/config
    

    ``

  4. Подключите виртуальный хост:

    a2ensite client1.conf
    a2ensite client2.conf
    a2enmod rewrite
    

    ``

  5. Перезапустите веб-сервер:

    systemctl restart apache2
    

    ``

  1. Создайте папки для сериализаций:

    mkdir -p /var/lib/lanbilling/phpclient/client1/assets/
    mkdir -p /var/lib/lanbilling/phpclient/client2/assets/
    

    ``

  2. Измените владельца директорий:

    chown -R apache:apache /var/lib/lanbilling/phpclient/client1/
    chown -R apache:apache /var/lib/lanbilling/phpclient/client2/
    

    ``

  3. Сериализуйте изменения:

    /usr/local/sbin/lbwebcfg -y client /etc/lanbilling/phpclient/client1/ -o=/var/lib/lanbilling/phpclient/client1/config
    /usr/local/sbin/lbwebcfg -y client /etc/lanbilling/phpclient/client2/ -o=/var/lib/lanbilling/phpclient/client2/config
    

    ``

  4. Перезапустите веб-сервер:

    systemctl restart httpd
    

    ``

Настройка завершена — у вас есть два личных кабинета с индивидуальными настройками.