Клонирование Софта
Нет, увы, заметка эта совсем не про плагиат и не про чёрную магию с танцами вокруг мирно гудящей железяки. Речь пойдёт об оптимизации хостинг ресурсов при многократном использовании одного и того же софта для нескольких проектов. Думаю, что стоит сначала пояснить, что это значит.
Наверняка многие некоторые сталкивались с проблемой дупликации софта на своём сервере. Так, например, если кому-либо вдруг надо завести второй вики, или, скажем третий форум, или десятую гостевую книгу, ну, в общем — что душе угодно в более чем одном варианте, то, обычно, этот кто-либо просто заливал на сервер вторую копию какого-либо «движка» и радовался жизни. Проблемы, однако, начинали стучаться в дверь, когда наступало злачное время апдейта софта, ибо обновлять приходилось более чем одну установку какой-либо прогги.
Порой приятно быть очень ленивым человеком, ибо меня подобная ситуация в корне не устраивала, а посему в поисках оптимизации я довольно быстро наткнулся на вполне простое и элегантное решение: всё что требуется — это динамично создавать файл конфигурации софта основываясь на каком-либо стороннем факторе, в динамичных же файлах можно указывать доступ к разным СУБД, чтобы тянуть нужную инфу. Так, например, проекты [ » ] wiki.inses.ru и [ » ] wiki.essentialmind.com работают на одной кодовой основе.
Сегодня же на одну кодовую основу установил два совершенно разных форума: [ » ] forum.essentialmind.com и [ » ] forum.inses.ru. Как это было сделано? Нет ничего проще:
- Закачал файлы на сервер в папку, на которую указывает домен forum.essentialmind.com и провёл процесс установки.
- Переименовал свежий файл config.php в config_temp.php
- Создал для сервера forum.essentialmind.com alias forum.inses.ru
- Запустил инсталлятор с домена forum.inses.ru и провёл установку в другую СУБД
- Отредактировал config.php (см. пример)
Вот то, что там было:
<?
// phpBB 2.x auto-generated config file
// Do not change anything in this file!
$dbms = 'mysql';
$dbhost = 'localhost';
$dbname = 'database';
$dbuser = 'user';
$dbpasswd = 'password';
$table_prefix = 'phpbb2_';
define('PHPBB_INSTALLED', true);
?>
А вот, что стало:
<?php
// phpBB 2.x auto-generated config file
// Do not change anything in this file!
if($_SERVER['HTTP_HOST'] == "forum.inses.ru"){
$dbms = 'mysql';
$dbhost = 'localhost';
$dbname = 'database';
$dbuser = 'user';
$dbpasswd = 'password';
$table_prefix = 'phpbb2_';
}else{
$dbms = 'mysql';
$dbhost = 'localhost';
$dbname = 'database';
$dbuser = 'user';
$dbpasswd = 'password';
$table_prefix = 'phpbb1_';
}
define('PHPBB_INSTALLED', true);
?>
Теперь царит щастя у меня на сервере, ибо на одной софтверной основе работает аж два форума. Между прочим, на одном вики движке у меня на данный момент «заведено» аж четыре разных ваки.