zoukankan      html  css  js  c++  java
  • 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 )
    for(www.111cn.net)each ( $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;
    }
    }

    from:http://www.111cn.net/phper/php-cy/68199.htm

  • 相关阅读:
    C++栈(stack)、队列(queue)、链表(list)的常用函数
    C++中cin>>a原理
    C++中vector和堆的常用使用方法&例题:数据流中的中位数
    使用centos8搭建僵尸毁灭工程(PZ)服务器
    【从C#走进Python】四、装饰器
    【从C#走进Python】三、变量声明
    【从C#走进Python】二、迭代器
    【从C#走进Python】一、上下文管理器
    【C#基础】拥抱Lambda(2):表达式树与LINQ
    【机器学习笔记】Python机器学习基本语法
  • 原文地址:https://www.cnblogs.com/alibai/p/4049388.html
Copyright © 2011-2022 走看看