我正在寻找快速设置基本网站的方法。
我有一个基本站点,可以使用databasem,templates,css,js等。 不,我希望能够快速建立一个网站。当我启动脚本时发生的事情是:
创建此脚本的最佳方法是什么?我怎么能做到这一点?
答案 0 :(得分:2)
这是一个关于你所说的完整(未经测试)的黑客行为。如果你对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
还要注意倾斜的引号`&lt; - 它们启动一个shell命令。第一行称为shebang-line(是的,就像那个80年代的老乐队,或者它是什么......)并且告诉shell使用什么来执行文件。 (Env是一个实用程序,有点找到其他程序,在本例中是php。如果你想在php有不同安装位置的系统中运行脚本,那就很好。)
另请注意,此脚本只是伪代码 - 它不起作用!在修改它之前不要运行它!
答案 1 :(得分:1)
这是您必须在服务器上执行的操作,因此您可以使用您喜欢的任何语言。它只是复制文件,将文本附加到文件并执行一些shell命令。
答案 2 :(得分:1)
嗯,这取决于您使用的操作系统,如果您使用Linux,您可以创建简单的脚本来执行此操作,它基本上应该包含一系列命令来设置它。
#!/bin/sh
mkdir /var/www/sitename
cp -au /var/www/skeleton/* /var/www/newfolder
etcetera.
然后,您可以通过使用某些参数
从命令行运行脚本来启动脚本./initiatesite.sh newsite.com databasename addwhateverparameteryouwant here。
有关将参数传递给shell脚本的更多信息:http://osr600doc.sco.com/en/SHL_automate/_Passing_to_shell_script.html
答案 3 :(得分:0)
您可以编写一个基本上完成所有这些操作的shell脚本。
所以我猜你会有一个由php处理的web前端,它需要一些参数,并让你的php脚本在你的服务器上调用一个shell脚本(通过系统调用)来设置你的数据库,复制文件,附加一些行到vhost配置等
如果这不是供您自己使用,而是为了客户,我会特别注意确保所有输入都没有污染并且首先是安全的。
答案 4 :(得分:0)
除非你以root身份运行PHP(不好主意),否则你不能在PHP中这样做。
想想你想要具体做什么以及如何做到这一点。在浏览器中启动站点是一个特定于用户的桌面操作,重新启动服务器是一个根操作,就像所有复制/编辑/移动的东西一样。
也许正确的安装程序会更适合您要完成的任务。听起来您正在使用Windows - 您是否只想为Windows提供安装?对于Linux,您需要一个shell脚本,例如。
答案 5 :(得分:0)
编写此代码的最佳方法是作为命令行脚本,如果需要,可以使用PHP编写。使用$argv
变量获取命令行变量的数组。确保此PHP文件不可通过Web访问。
另外,我会使用SVN导出到新网站的文件夹。这将确保您拥有最新的代码,并且它是一个干净的副本。