首页 > php开发 > php管理nginx虚拟主机shell脚本

php管理nginx虚拟主机shell脚本

下文整理了一段php管理nginx虚拟主机shell脚本,希望这段脚本能帮助到各位同学,使用php作为shell脚本是一件很方便的事情,理所当然,我们可以使用php脚本来管理 nginx虚拟主机,下面是笔者的 脚本 文件供各位参考,代码如下:

#!/usr/bin/php -q 
	<?php 
	 
	start: fwrite(STDOUT,"===========Vhost Script===========\n"); 
	fwrite(STDOUT,"= Choose an operation \n"); 
	fwrite(STDOUT,"= 1.Create 2.Delete 3.Exit\n"); 
	fwrite(STDOUT,"==================================\n"); 
	$operate = trim(fgets(STDIN)); 
	if ( $operate == 1  ){ 
	fwrite(STDOUT,"Please Enter a  Domain Name:"); 
	$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 ("Domain Existed!\n"); 
	else mkdir($path,0700); 
	if(file_exists($nginx_conf)) exit ("Nginx Config file existed!\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 ("Write Config File Fauile!"); 
	else echo "Create Vhost success!\n"; 
	goto start; 
	//写入配置文件 
	} 
	else if ($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 "Select a site by number which to delete:\n"; 
	    if( count( $confs_list ) >0 ) 
	        foreach ( $confs_list as $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]); 
	    }  
	    //删除指定配置,并保存备份 
	} 
	else if( $operate == 3 ) { 
	    exit; 
	} 
	else { 
	 exit ("No Operation Selected!"); 
	} 

下面是nginx的配置模版,代码如下:

server { 
	listen 80; 
	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_found off; 
	access_log off; 
	} 
	#不记录对robots.txt的访问 
	location = /robots.txt { 
	allow all; 
	log_not_found off; 
	access_log off; 
	} 
	location = / { 
	try_files @proxy; 
	} 
	location / { 
	index index.htm index.html index.php; 
	try_files \$uri @proxy; 
	} 
	#匹配html 
	location ~* \.(html|htm)$ { 
	expires 30s; 
	gzip off; 
	add_header Content-Encoding gzip; 
	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)$ { 
	expires 30d; 
	} 
	#传递给apache 
	location @proxy { 
	index index.htm index.html index.php; 
	proxy_pass   http://127.0.0.1:81; 
	include /etc/nginx/proxy.conf; 
	} 
	}

永久地址:http://www.phprm.com/develop/fs9110.html

转载随意~请带上教程地址吧^^

标签:php虚拟主机 nginx虚拟主机

发表留言