Вы здесь

WebSitePanel. Как перенести хостинг спейсы на другой сервер.


Всем привет. Поставили передо мной задачу перенести хостинг спейсы websitepanel на другой сервер, что бы и новые и старые хостинг планы работали на новом сервере. После переноса ресурсов на новый сервер нужно обновить базу websitepanel, иначе он будет продолжать использовать старые серверы. Сделать это возможно при помощи TSQL скрипта.

Сперва объявим все необходимы переменные:

 -- в wsp не должно быть повторяющихся имен серверов и виртульных серверов.
use websitepanel;
declare @user varchar(60);
declare @virt_server_name varchar(60);
declare @old_virt_server_name varchar(60);
declare @server_name varchar(60);
declare @old_server_name varchar(60);
declare @service_name varchar(60);
declare @old_service_name varchar(60);
declare @package_name varchar(60);

set @user='username'; --имя пользователя для которого меняем хостинг спейс
set @virt_server_name=''; --имя нового виртуального сервера, если он меняется
set @old_virt_server_name=''; --имя старого виртуального сервера, если он меняется
set @server_name='SrvHost2012'; --имя нового сервер
set @old_server_name='SrvHOST2008'; --имя старого сервера

set @service_name='IIS 2012'; --имя нового сервиса
set @old_service_name='IIS 2008'; --имя старого сервиса

set @package_name='hosting plan'; --имя хостинг плана

declare @user_id int;
declare @server_id int;
declare @package_id int;
declare @service_id int
declare @old_server_id int;
declare @old_service_id int;
declare @virt_server_id int;
declare @old_virt_server_id int;

declare @err int;
declare @rc int;

--Ниже переменным присаиваются ID, в зависимости от имен. 
--Если у вас где либо используются русские символы, то ниже этого блока нужно вручную добавить имена
select @user_id = UserID from Users where Username=@user;
select @old_server_id = Servers.ServerID from Servers where Servers.ServerName=@old_server_name;
select @server_id = Servers.ServerID from Servers where Servers.ServerName=@server_name;
select @virt_server_id = Servers.ServerID from Servers where Servers.ServerName=@virt_server_name;
select @old_virt_server_id = Servers.ServerID from Servers where Servers.ServerName=@virt_server_name;
select @package_id = Packages.PackageID from Packages where (Packages.UserID=@user_id and Packages.PackageName=@package_name);
select @old_service_id = Services.ServiceID from Services where services.ServiceName=@old_service_name and Services.ServerID=@old_server_id;
select @service_id = Services.ServiceID from Services where services.ServiceName=@service_name and Services.ServerID=@server_id;

С объявлением переменных закончили, ниже будет показано 2 набора команд. 1 следует использовать если вы собираетесь переносить хостинг спейс для одного пользователя, второй меняет значения для всех пользователей и всех хостинг планов.

1)

-- для обновления привязок для одного клиента
BEGIN TRANSACTION t1;

-- обновления привязки сервера в хостинг плане если меняется виртуальный сервер.
          update Packages set ServerID=@virt_server_id where (Packages.UserID=@user_id and Packages.PackageName=@package_name);
          IF (@err <> 0)
          BEGIN
                 ROLLBACK TRANSACTION t1;
                 RAISERROR ('', 16, 1);
          END

-- обновление хостинг спейса, что бы он ссылался на новый сервис.
          update PackageServices set ServiceID=@service_id where (PackageID=@package_id and ServiceID=@old_service_id);
          SELECT @rc = @@ROWCOUNT, @err = @@ERROR;
          IF (@err <> 0)
          BEGIN
                ROLLBACK TRANSACTION t1;
                RAISERROR ('ACHTUNG!!!', 16, 1);
          END
            
-- обновление хостинг спейсса, что бы существующий сервис работал на новом сервере
          update ServiceItems set ServiceID=@service_id where ServiceID=@old_service_id and PackageID=@package_id
          IF (@err <> 0)
          BEGIN
                    ROLLBACK TRANSACTION t1;
                    RAISERROR ('ACHTUNG!!!', 16, 1);
          END
--    
    
 COMMIT TRANSACTION t1;

2)

-- для обновления сервисов для всех клиентов:
BEGIN TRANSACTION t1;
-- Обновление привязок на виртуальном сервере к серверу
       update VirtualServices set ServiceID=@service_id where (ServerID=@virt_server_id and ServiceID=@old_service_id)
       IF (@err <> 0)
       BEGIN
                 ROLLBACK TRANSACTION t1;
                 RAISERROR ('ошибка в обновлении виртуальных сервисов', 16, 1);
       END
        
-- обновление привязок на всех виртуальных серверах к серверу
       update VirtualServices set ServiceID=@service_id where (ServiceID=@old_service_id)
       IF (@err <> 0)
       BEGIN
                 ROLLBACK TRANSACTION t1;
                 RAISERROR ('ошибка в обновлении виртуальных сервисах', 16, 1);
       END
        
-- Обновление привязки сервера для всех хостинг планов
        update Packages set ServerID=@virt_server_id where ServerID=@old_virt_server_id;
        IF (@err <> 0)
        BEGIN
                  ROLLBACK TRANSACTION t1;
                  RAISERROR ('ошибка в обновлении хостинг планов', 16, 1);
        END

-- обновление всех хостинг спейсов, что бы они ссылалысь на новый сервис.
        update PackageServices set ServiceID=@service_id where (ServiceID=@old_service_id);
        IF (@err <> 0)
        BEGIN
                  ROLLBACK TRANSACTION t1;
                  RAISERROR ('ошибка в обновлении  сервисов', 16, 1);
        END

-- обновление хостинг спейсса, что бы существующий сервис работал на новом сервере
        update ServiceItems set ServiceID=@service_id where ServiceID=@old_service_id
        IF (@err <> 0)
        BEGIN
                  ROLLBACK TRANSACTION t1;
                  RAISERROR ('ошибка в обновлении сервис итемов', 16, 1);
        END
 
    COMMIT TRANSACTION t1;

Рекомендую перед каждым применением скрипта делать бэкапы, и после каждого применения проверять работу измененного хостинг плана.

0 0

Поделитесь статьей с друзьями в соц. сетях, возможно, она будет им полезна.


Если вам помогла статья, вы можете >>отблагодарить автора<<