Jump to content

Автоподнятие проекта (студийная наработка)


Recommended Posts

Итак, создав свою CMS понял - постоянно добавлять руками виртуал хосты это хреново, а еще заводить базу ... уу .. надоело. Итак, автоматизация с нами.

Условия

1) FreeBSD сервер

2) Mysql server

3) Apache + vhosts

4) PHP

5) только командная строка

Основа

1) есть проект движка, допустим он лежит в /htdocs/cms/

надо сделать его дамп - после каждой стабильной версии конечно

 cd /htdocs/cms
tar -cjvf /home/user/cms.tar.bz2 ./*

отлично у нас есть архив

2) дампим базу болванку. я лично юзал навикат, а вообще можно

 mysql -uusername -ppassword --databases [b]cms[/b] > /home/user/cms.sql

в принципе можно это сделать и скриптом в сумме, но до этого руки уже не дошли

Создаем скрипт

1) создаем файл /home/user/addsite и

 chmod u+x /home/user/addsite

дабы запускался

2)

 #!/usr/local/bin/php  для незнающих - первая строка - путь к интерпретатору... в принципе весь скрипт можн она голом bash написать но я для примера тут изголяюсь как могу :-D 

вбиваем настройки
[code]
$sitename = $argv[1];
$htdocs = '/htdocs/'; // тут у меня проекты
$vhosts = '/usr/local/etc/apache22/extra/httpd-vhosts.conf'; //это файл виртуалхостов
$mysql['hostname'] = 'localhost';
$mysql['username'] = 'user';
$mysql['userpass'] = 'pass';

$argv[1] - получение первого параметра, он у меня название проекта а так же как будет видно и название базы, директории и домена

 
if(empty($sitename)) die("Sitename not specified *EVIL*\n");

ну коенечно - если нечего добавлять то и фиг с вами ребята

 
$connect = mysql_connect($mysql['hostname'], $mysql['username'], $mysql['userpass'] ) or die("Could not connect: " . mysql_error()."\n");
mysql_query("CREATE DATABASE IF NOT EXISTS `".$sitename."` CHARACTER SET utf8 COLLATE utf8_general_ci");
mysql_close();
system('mysql -u'.$mysql['username'].' -p'.$mysql['userpass'].' '.$sitename.' < /home/9lap/cms.sql');

по-другому не придумал, но в общем - создали базу (я храню базы в utf8) и запихали туды дамп

 
system("echo '' >> ".$vhosts);
system("echo ' ServerAdmin admin@mail.su' >> ".$vhosts);
system("echo ' DocumentRoot ".$htdocs.$sitename."' >> ".$vhosts);
system("echo ' ServerName ".$sitename.".studio.ru' >> ".$vhosts);
system("echo ' ErrorLog ".$htdocs.$sitename."/error.log' >> ".$vhosts);
system("echo '\n\n' >> ".$vhosts);

это мы добавили хост

 
system("mkdir ".$htdocs.$sitename);
system("cd ".$htdocs.$sitename."; tar -jxvf /home/user/cms.tar.bz2");
system("chmod -R 0775 ".$htdocs.$sitename);

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

 
system('apachectl graceful');
?>

перечитали конфиг без перезапуска апача и остались доворльны - все доолжно работать

время написания скрипта - час, с курением манов и разбором тонны ошибок. Возможна куча модификаций, ну да уже зависит от архитектуры системы и апача

совет - создайте в bash алиас на скрипт - и будет вам счастье

addsite sitename

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy