Как быстро настроить сайт PHP MySQL? - PullRequest
0 голосов
/ 12 июня 2009

Я ищу способы быстрой настройки базового сайта.

У меня есть базовый сайт, который работает с базой данных, шаблонами, css, js и так далее. Нет, я хочу иметь возможность быстро настроить сайт. Что произойдет при запуске скрипта:

  1. запросить некоторые переменные
  2. при отправке:
  3. создать папку в webroot
  4. скопировать стандартный сайт на эту карту
  5. создать базу данных на основе базы данных по умолчанию
  6. добавить новый сайт в мой vhost файл
  7. перезагрузите apache
  8. добавить новый сайт в мой файл хоста
  9. Запустите базовый сайт в браузере.

Как лучше всего создать этот скрипт? Как мне это сделать?

Ответы [ 6 ]

2 голосов
/ 12 июня 2009

Вот полный (не проверенный) взлом, который делает то, что вы сказали. Если вам удобно в php, тогда используйте это. Псевдокрипт:

#!/usr/bin/env php
<?php
echo "Site setup v0.0\n";
if($argc != 2){
    echo "Usage:\n   script sitename\n";
}
//set vars
$sitename = $argv[1];
$src_folder = "/path/to/some/folder";
$template_db ="template_site";

//copy files
`mkdir $sitename`;
`cp -R $src_folder $sitename`;

//copy template db
$dblink = mysql_connect("localhost");
if(!mysql_query($dblink, "CREATE DATABASE site_$sitename; USE site_$sitename;"))exit(-1);
$r = mysql_query($dblink, "SHOW TABLES FROM $template_db");
while($row = mysql_fetch_array($r)){
    $table = $row[0];
    mysql_query($dblink, "CREATE TABLE $table AS SELECT $template_db.$table");
}

//conf and restart apache
$f = fopen("httpd.conf","a");//open for append
fwrite("<VirtualHost $sitename> bla bla </VirtualHost>");
fclose($f);
`sudo apachectl -k restart`; //you'll be asked for a password here

//open in browser
`open http://$sitename/`; //on mac anyway...

?>

Сделать файл исполняемым с

chmod +x filename

Помните, что для запуска скриптов в текущей папке необходимо добавить ./. Как

./scriptname sitename

Также обратите внимание на наклонные кавычки `<- они запускают команду оболочки. Первая строка называется шебанг-линией (да, как та старая полоса 80-х годов или что это было ..) и указывает оболочке, что использовать для выполнения файла. (Env - это служебная программа, которая как бы находит другие программы, в данном случае php. Хорошо, если вы хотите запустить скрипт в системах, где php имеет разные места установки.) </p>

Также обратите внимание, что этот скрипт является просто псевдокодом - он не работает! Не запускайте его до изменения!

1 голос
/ 12 июня 2009

Ну, это зависит от того, какую операционную систему вы используете. Если вы используете Linux, вы можете создать простой скрипт для этого, в основном он должен содержать последовательность команд для установки этого.

#!/bin/sh
mkdir /var/www/sitename
cp -au /var/www/skeleton/* /var/www/newfolder
etcetera.

Затем вы можете запустить скрипт, запустив его из командной строки с некоторыми параметрами

. / Initiatesite.sh newsite.com имя базы данных добавить любой параметр, который вы хотите здесь.

Дополнительная информация о передаче параметров в сценарий оболочки: http://osr600doc.sco.com/en/SHL_automate/_Passing_to_shell_script.html

1 голос
/ 12 июня 2009

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

0 голосов
/ 12 июня 2009

Лучший способ написать это - использовать скрипт командной строки, который вы можете написать на PHP, если хотите. Используйте переменную $argv, чтобы получить массив переменных командной строки. Убедитесь, что этот файл PHP НЕ доступен через Интернет.

Кроме того, я бы использовал SVN для экспорта в папку для нового сайта. Это гарантирует, что у вас будет самый актуальный код и что это чистая копия.

0 голосов
/ 12 июня 2009

Вы не можете сделать это в PHP, если не запускаете PHP от имени root (плохая идея).

Подумайте о том, что вы хотите сделать конкретно, и как бы вы это сделали. Запуск сайта в браузере - это пользовательское действие на рабочем столе, перезапуск сервера - это действие root, как и все операции копирования, редактирования и перемещения.

Возможно, правильный установщик подойдет для того, что вы пытаетесь выполнить. Похоже, вы работаете с Windows - вы хотите только установить Windows? Например, для Linux вам потребуется сценарий оболочки.

0 голосов
/ 12 июня 2009

Вы можете написать сценарий оболочки, который в основном выполняет все это.

Итак, я полагаю, что ваш веб-интерфейс обрабатывается php, который принимает некоторые параметры, и этот php-скрипт вызывает сценарий оболочки (через системный вызов) на вашем сервере для настройки вашей базы данных, копирования файлов, добавления некоторых строк Конфигурация vhost и т. д.

Если это не для вашего личного использования, а для клиентов, я бы позаботился о том, чтобы все входные данные были незапятнанными и безопасными в первую очередь.

...