Небольшой скриптец на php, поможет установить сразу n вордпрессов, код открыт, можно интегрировать в свои решения. Скрипт под шелл, из веба незнаю будет работать или нет.

Исходные данные, нужные для работы. Надо дамп базы, дистрибутив вп, файл задания.

Дамп я делаю так — ставлю пустой вп, удаляю все не нужное — дефолтные страницы, записи, ссылки, добавляю нужные плуги, чпу и т.д., в зависимости от нужд. Дистрибутив ессно должен иметь все эти плуги.  Это все делается не каждый раз, дамп у меня один на всех, дистр под новый замес обновляю (тему меняю, прописывается в дампе потом).

В дампе надо поменять значения полей:

  • siteurl site.ru на {siteurl}
  • blog title на {blogtitle}
  • home site.ru {home}
  • admin_email {mail}

1 и 3 это урл блога, второе заголовок блога, четвертое — мыло админа. При желании можно выставить много значений, например запрет коментирования, кол-во строк в рсс и т.п. Я простой пример рассмотрю.

Формат задания

урл|заголовок блога
урл2|заголовок блога2
и т.д.

Немного про конфиги. У меня на сервере так настроены папки с сайтами — /home/user/site.ru/ Т.е. скрипт высчитывает рабочий путь путем $installation_dir + $url. База создается для site.ru просто site.

Сам скрипт. Комментировал по енг, потому что лень переключатся на русский, думаю итак понятно. Отработал три домена меньше чем за секунду.

#!/usr/bin/php

//author Alex Volkov, http://alexvolkov.ru
//distributed AS IS!

<?
//blog settings
$admin_mail = "my@mail.ru";

//folders and files
$task_file = "task.txt";
$dump_file = "dump.sql";
$installation_dir = "/path/to/domains/";
$distr_folder = "/wordpress/";
$work_dir = exec("pwd");

//db settings
$db_user = "user";
$db_pass = "pass";

//permissions settings
$group_id = "user";
$owner_id = "group";

function MakeInstall($url, $blog_title){
global $admin_mail, $dump_file,
$installation_dir, $distr_folder,
$work_dir, $db_user, $db_pass,
$group_id, $owner_id;

//start editing sql dump
$tmp_dump = file_get_contents($work_dir."/".$dump_file);
if(!$tmp_dump){ echo "no dump file here"; }

// make some replacements, i think it's clear to understand what i've changed
$tmp_dump = preg_replace("!{siteurl}!si","http://". $url, $tmp_dump);
$tmp_dump = preg_replace("!{home}!si", "http://".$url, $tmp_dump);
$tmp_dump = preg_replace("!{blogtitle}!si", $blog_title, $tmp_dump);
$tmp_dump = preg_replace("!{mail}!si", $admin_mail, $tmp_dump);

//create tmp file for dump
exec("touch tmp_dump.sql");
$tmp_file = fopen("tmp_dump.sql", "a+");
fwrite($tmp_file, $tmp_dump);
fclose($tmp_file);

$db_name = explode(".", $url);
$db_name = $db_name[0];

//prepare the query
$query = "CREATE DATABASE ".$db_name.";";

//execute it
exec("mysql -u ".$db_user." -p".$db_pass." --execute=' ".$query."'");

//importing the dump
exec("mysql -u ".$db_user." -p".$db_pass." ".$db_name." < tmp_dump.sql");

//remove temporary dump
exec("rm -f ./tmp_dump.sql");

//now copying wp distr
exec("cp -R ".$work_dir.$distr_folder."* ".$installation_dir.$url);

//here we're copying the configuration file and connect wp to db
//check before that your names in sample config like mine

$sample_config =
file_get_contents($work_dir.$distr_folder."wp-config-sample.php");
$sample_config =
preg_replace("!putyourdbnamehere!si", $db_name, $sample_config);
$sample_config =
preg_replace("!usernamehere!si", $db_user, $sample_config);
$sample_config =
preg_replace("!yourpasswordhere!si", $db_pass, $sample_config);

//writing our connect data into config
$tmp_file = fopen("wp-config.php", "a+");
fwrite($tmp_file, $sample_config);
fclose($tmp_file);
exec("cp ".$work_dir."/wp-config.php ".$installation_dir.$url);
exec("rm -f ./wp-config.php");

//changing the owner/group permissions
exec("chown -R ".$group_id.":".$owner_id." ".$installation_dir.$url);
}

$directive = file($task_file);

foreach($directive as $command){
$command = explode("|", $command);
if($command[0] !== ""){MakeInstall($command[0], $command[1]);}
}
?>

Скачать скрипт
P.S. Знатокам линуха — при chown идет GID:UID или UID:GID ? Маны рулят. OWNER:GROUP:

Еще несколько ссылочек.

10 responses


Do you want to comment?

Comments RSS and TrackBack Identifier URI ?

Джедай, епт, твою бы голову да в трезвые руки — был бы королем мира

Апрель 16, 2009 9:38 пп

Неистребимы в нашем народе кулибины — все стремятся переделать, лишь бы не пользоваться нормальным сервисом. Нормальные хостинги все эти функции предоставляют по определению, да еще и не за самые большие бапки.

Апрель 19, 2009 10:54 дп

Shimus, я как бы не переделывал, я с нуля писал. Не подскажешь хостинг, который предоставляет такую возможность автоматом установить сразу N вордпрессов, да еще и с минимальными данными — урл и заголовок?

Апрель 19, 2009 12:15 пп

Нет хостингов с такой возможностью, так что скрипт весьма полезен, автору спасибо.

Апрель 19, 2009 4:22 пп

Действительно интересно написано. Добавил в избранное, буду заходить почаще.

Май 11, 2009 2:11 пп

Да это действитеьно интересно, будем ждать продолжения

Май 11, 2009 8:26 пп

Да тема интересная, нигде подобного не встречал. Ну что ж ждем продолжения.

Май 11, 2009 9:51 пп


есть еще более простые способы сделать «мультиблоговую» систему, причем на 1 копии WP и не так сильно париться со скриптами и заменами. а сделать все на 1 хранимой процедура.
а хостинг любой, главное , что бы ограничения не было по числу припаркованных доменов

Июль 6, 2010 4:51 пп

скрипт отличный, только непонятно как его устоновить

Ноябрь 3, 2010 12:08 дп

Comment now!
















1