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程序设计有所帮助。