воскресенье, 17 января 2010 г.

Установка нескольких сайтов на одни WordPress

О том, насколько WordPress популярен у жителей сети, рассказывать не стоит. Рассказ о популярности WP ничего не даст тому, кто знает, что такое WP. Все положительные и отрицательные черты этого блогодвижка хорошо известны. Ну, а тот, кто не знаком с аббревиатурой WP - может эту запись далее не читать.
О причинах, подтолкнувших меня к поиску ответа на вопрос "Как на одном движке WordPress заставить работать несколько блогов?" я уже писал - ничего интересного, банальное желание сэкономить дисковое пространство и денежные средства.
Итак, для начала немного теории.
Во время выполнения скриптов WordPress постоянно запрашивает различную информацию из базы данных MySQL. В этой базе данных содержится множество таблиц, содержащих различную информацию о вашем блоге - тексты записей, даты, ползователи м т.д. У всех таблиц есть общее свойство - префикс в имени, т.е. имена всех таблиц в базе данных, относящиеся к одному блогу, имеют общий префикс. Обычно этот префикс имеет вид wp_ (то есть имя таблицы wp_бла-бла-бла) и записан в файле wp_config. Но он может быть произвольно изменён при устновке блогодвижка. При каждом обращении к БД этот префикс будет использоваться чтобы указать, в какой таблице необходимо искать информацию. На этом мат. часть закончена.

Идея (честно признаюсь: не моя, подсмотрел в рунете):
1) Если поставить несколько блогов, которые будут использовать разные префиксы, то все блоги могут использовать одну БД. В этом случае в БД будет находиться несколько таблиц с похожими именами (например, таблицы пользователей), но с разными префиксами. В результате таблицы не будут мешать друг друг. Так мы уменьшим количество используемых БД.
2) Если научить один экземпляр движка WP самостоятельного выбирать префиксы при обращении к БД, то этот единственный экземпляр WP сможет обеспечить все блоги.

Что делаем:
Для реализации описанных выше преимуществ делаем следующее:
0) Заходим в панель управления хостингом. И направляем дополнительные домены, которые вы хотите свести на один WP, в папку /public_html/.
Когда вы в панели управления хостингом создаёте дополнительные домены, то для них создаётся дополнительная папка вида /public_html/домен_1 . При обращении к серверу с просьбой выдать главную страницу (да и не только на главную) домена_1 эта страница будет искаться именно в папке /public_html/домен_1. Что необходимо: все запросы к домен_1 должны идти в корневую папку /public_html/ .
В случае, если хостинг находиться под управлением cPannel, то необходимо пройти "Домены"->"Дополнительные домены"->"Управление перенаправлением" и там исправить соответствующие строки.
1) В корневой директории WP открываем файл wp-load. В этом файле определяется, откуда будут браться такие переменные как . Содержимое файла заменяем на следующие строки:

define( 'ABSPATH', dirname(__FILE__) . '/' );
$config_file_name = preg_replace('/www\./', '', $_SERVER['HTTP_HOST']);
error_reporting(E_ALL ^ E_NOTICE ^ E_USER_NOTICE);
/** The config file resides in ABSPATH */
require_once(ABSPATH.'config/'.$config_file_name.'.php');

В результате такой подмены в перменную $config_file_name будет записываться имя домена, к которому идёт обращение (2-ая строка). А в дальнейшем будет подключаться файл c настрйками WP (такми как имя БД, префикс таблиц и т.д.) - 5-ая строка. Имя запрашиваемого файла настроекзависит от того, к какому домену идёт обращение. WP будет искать этот файл в директории /config/ .
Таким образом, мы добились того, что движок WP будет обращаться к разным файлам настроек в зависимости от того, к какому домену идёт обращение.

3) В кореневой директории WP (у меня это /public_html/) создаём папку congif, в которой у нас будут лежать файлы настроек WP. В этой папке config создаём файлы с именами вида домен_1.ru.php , домен_2.ru.php и т.д. Количество таких файлов равно количеству доменов, которые будут сидеть на одном движке.
Внутри каждого файла следует прописать строки:

define('DB_NAME', 'имя_вашей_БД');
define('DB_USER', 'имя_пользователя_БД');
define('DB_PASSWORD', 'пароль_ползователя');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
$table_prefix = "префикс_таблиц";
define ('WPLANG', 'ru_RU');
define('ABSPATH', dirname(__FILE__).'/');
require_once(ABSPATH.'/config/wp-settings"Домен_1".php');

ВНИМАНИЕ: 1) Для каждого домена должен быть свой уникальный префикс!!!
2) Для каждого домена требуется создать файл wp-settingsДомен_1, текст которого полностью соответствует тексту файла wp-settings
Т.е. если все блоги будут работать у вас на одной БД, то содержание файлов домен_n.ru.php должно отличаться только префиксами таблиц (7я строка) и названием файла settings (10-я строка).

Ну вот и всё, в такой сборке всё должно работать.
У этого метода есть ряд преимуществ перед другими способами работы нескольких блогов на одном WP. Наиболее важным для меня оказалось то, что при имеется возможность для работы с несколькими БД. Для этого необходимо в файлах домен_n.ru.php также менять строки с 1-й по 3-ю. В настоящее время у меня три блога работают на одной БД, ещё два - на второй БД.
Если у вас уже были предустановлено 2, 3 блога, то достаточно провести описанные выше манипуляции и указать имена БД, пользователей и пароли. Переносить все таблицы в одну БД, меняя при этом их префиксы, нет необходимости. В этом случае количество БД останется прежним, а занимаемое дисковое пространство уменьшиться.
Лично у меня применение описанных выше действий позволило уменьшить занимаемое дисковое пространство на 60 % и освободить одну БД.
Использование одной инсталляции WP позволяет продуктивно использовать и "паркованные" домены. При традиционном использовании WP паркованные домены могут только ссылаться на один из ваших ресурсов и не могут быть самостоятельными проектами. Подмена префиксов таблиц в зависимости от запрашиваемого сайта позволяет создавать на основе паркованных доменов самостоятельные проекты, работая с ними как с "дополнительными" доменами. Экономия денежных средств явная: лично у меня в настоящее время 7 самостоятельных сайтов, не зависящих друг от друга. В тоже время, тарифный план хостера предусматривает 1 основной домен и 3 дополнительных (Итого: 1+3=4 сайта). В результате работа трёх доменов нам обходится бесплатно!

суббота, 16 января 2010 г.

Кто из нас в детстве не хотел попасть в Африку? Африка является тем сказочным местом, куда хотят убежать все мальчишки. Для меня африканский континент являлся воплощением всех чудес света. сейчас туры в Африку стали доступными и любой желающий может посетить чёрный континент. Конечно, посещение стран африки немного дороже, чем пребывание в ставшей родной Турцией. Но африка настолько огромна и настолько красива, что каждый найдёт себе занятие по вкусу. И никто не сможет устоять перед её красотами. ЗебрыДля любителей загорать обязательно найдётся местечко на песчаном пляже Занзибара возле тёплого и бескрайнего Индийского океана. Также любителям пляжного туризма стоит побывать в странах Северной Африки - Тунис, Египет, Марокко. Этот вид отдыха гораздо дешевле, чем пребывание на пляжах Индийского Океана. А для поклонников активного отдыха количество способов развлечься и забыть о шумном городе просто огромно. Чего только стоит сафари в уникальных африканских просторах среди стад зебр и антилоп ,львиных прайдов и длинношеих жирафов. прикосновение к традиционной культуре африканских племён сделает вас немножко ближе к природе и поможет понять всю красоту африканского континента. Не остануться без впечатлений и любители экстремального отдыха. Высокие горы Килиманджаро, Кении, Элгона и голубое африканское небо навсегда запомнятся любителям высокогорных восхождений. Тем, кто предпочитает покорять водную стихию обязательно стоит совершить сплав по величайшим рекам планеты Земля – Нил, Замбези, Конго. Кроме того среди экстрималов всего мира получили признание реки Кении, Намибии, Ботстваны, Зимбабве и ЮАР. Реки африканского континента традиционно считаются одними из самых трудных для преодоления. Достойный водный маршрут смогут найти как начинающие, так и профессионалы рафтинга. Открывают для себя Африку и российские любители дайвинга, которых манит чистая вода и коралловые аттолы - пристанище экзотических тропических рыб. Лично для себя я сделал выбор уже давно – посещение первозданных уголков Африки даёт гораздо больше позитива, чем посещение традиционных мест отдыха российских туристов.