加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

使用php管理nginx虚拟主机shell脚本的技巧

发布时间:2023-09-09 12:32:06 所属栏目:PHP教程 来源:
导读:下文整理了一段php管理nginx虚拟主机shell脚本,希望这段脚本能帮助到各位同学,使用php作为shell脚本是一件很方便的事情,理所当然,我们可以使用php脚本来管理 nginx虚拟主机,下面是笔者的 脚本 文件供各位参考,代码如
下文整理了一段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]); 
    } //开源软件:Cuoxin.com 
    //删除指定配置,并保存备份 

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; 

}

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章