Небольшой скриптец на 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 комментариев
Джедай, епт, твою бы голову да в трезвые руки — был бы королем мира
Неистребимы в нашем народе кулибины — все стремятся переделать, лишь бы не пользоваться нормальным сервисом. Нормальные хостинги все эти функции предоставляют по определению, да еще и не за самые большие бапки.
Shimus, я как бы не переделывал, я с нуля писал. Не подскажешь хостинг, который предоставляет такую возможность автоматом установить сразу N вордпрессов, да еще и с минимальными данными — урл и заголовок?
Нет хостингов с такой возможностью, так что скрипт весьма полезен, автору спасибо.
Действительно интересно написано. Добавил в избранное, буду заходить почаще.
Да это действитеьно интересно, будем ждать продолжения
Да тема интересная, нигде подобного не встречал. Ну что ж ждем продолжения.
[…] писал про скрипт массовой установки вордпресса, но вот появилось более оптимальное решение, как это […]
есть еще более простые способы сделать «мультиблоговую» систему, причем на 1 копии WP и не так сильно париться со скриптами и заменами. а сделать все на 1 хранимой процедура.
а хостинг любой, главное , что бы ограничения не было по числу припаркованных доменов
скрипт отличный, только непонятно как его устоновить