php管理nginx虚拟主机shell脚本实例
本文实例讲述了php管理nginx虚拟主机shell脚本,分享给大家供大家参考。具体分析如下:
使用php作为shell脚本是一件很方便的事情。理所当然,我们可以使用php脚本来管理nginx虚拟主机,下面是笔者的脚本文件供各位参考:
#!/usr/bin/php-q
<?php
start:fwrite(STDOUT,"===========VhostScript===========\n");
fwrite(STDOUT,"=Chooseanoperation\n");
fwrite(STDOUT,"=1.Create2.Delete3.Exit\n");
fwrite(STDOUT,"==================================\n");
$operate=trim(fgets(STDIN));
if($operate==1 ){
fwrite(STDOUT,"PleaseEntera DomainName:");
$domain=trim(fgets(STDIN));
$path="/home/sites/{$domain}";
$nginx_conf="/etc/nginx/sites/{$domain}";
$nginx_template="/etc/nginx/template/site_conf";
$apache_conf="/etc/httpd/conf/httpd.conf";
$conf_str="";
//变量初始化
if(file_exists($path))exit("DomainExisted!\n");
elsemkdir($path,0700);
if(file_exists($nginx_conf))exit("NginxConfigfileexisted!\n");
else{
$conf_str=file_get_contents($nginx_template);
}
//目录检测及配置文件拷贝
eval("\$conf_str=\"$conf_str\";");
$succes=file_put_contents($nginx_conf,$conf_str);
if(!$succes)exit("WriteConfigFileFauile!");
elseecho"CreateVhostsuccess!\n";
gotostart;
//写入配置文件
}
elseif($operate==2){
$confs_dir=dir("/etc/nginx/sites");
$confs_list=array();
$count=0;
while(false!==($conf_file=$confs_dir->read())){
if($conf_file==".")continue;
if($conf_file=="..")continue;
if(is_file($confs_dir->path."/".$conf_file)){
$confs_list[$count++]= $conf_file;
}
}
echo"Selectasitebynumberwhichtodelete:\n";
if(count($confs_list)>0)
foreach($confs_listas$k=>$v){
echo"{$k}.$v\n";
}
$index=trim(fgets(STDIN));
if(in_array($index,array_keys($confs_list))){
copy( $confs_dir->path."/".$confs_list[$index],"/etc/nginx/backup/{$confs_list[$index]}");
unlink($confs_dir->path."/".$confs_list[$index]);
exec("tar-zcf /home/sites/{$confs_list[$index]}.tar.gz/home/sites/".$confs_list[$index]);
exec("rm-Rf/home/sites/".$confs_list[$index]);
}
//删除指定配置,并保存备份
}
elseif($operate==3){
exit;
}
else{
exit("NoOperationSelected!");
}
?>下面是nginx的配置模版
server{
listen80;
server_name{$domain};
access_log/var/log/nginx/{$domain}_access_log;
error_log/var/log/nginx/{$domain}_error_log;
root{$path};
#不记录对站点图标访问
location=/favicon.ico{
log_not_foundoff;
access_logoff;
}
#不记录对robots.txt的访问
location=/robots.txt{
allowall;
log_not_foundoff;
access_logoff;
}
location=/{
try_files@proxy;
}
location/{
indexindex.htmindex.htmlindex.php;
try_files\$uri@proxy;
}
#匹配html
location~*\.(html|htm)${
expires30s;
gzipoff;
add_headerContent-Encodinggzip;
try_files\$uri\$uri//wp-content/cache/supercache/\$http_host/\$request_uri/index.html.gz@proxy;
}
#匹配图片、脚本文件等
location~*\.(jpe?g|gif|png|ico|css|js|flv|swf|avi|zip|rar|svg|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mp3)${
expires30d;
}
#传递给apache
location@proxy{
indexindex.htmindex.htmlindex.php;
proxy_pass http://127.0.0.1:81;
include/etc/nginx/proxy.conf;
}
}
希望本文所述对大家的php程序设计有所帮助。