php管理nginx虚拟主机shell脚本实例

 更新时间:2014年11月19日 09:04:38   投稿:shichen2014   我要评论
这篇文章主要介绍了php管理nginx虚拟主机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:""/home/sites/{$domain}";
$nginx_conf ="";
$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;
}
}

希望本文所述对大家的php程序设计有所帮助。

相关文章

  • PHP获取字符流中第一个不重复字符的方法

    PHP获取字符流中第一个不重复字符的方法

    这篇文章主要介绍了PHP获取字符流中第一个不重复字符的方法,涉及php针对索引数组的遍历与判断相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • 简单谈谈 php 文件锁

    简单谈谈 php 文件锁

    PHP出现文件锁与mysql表锁有大概想的用法,就是同一时间只能让一个人操作,这样就避免了同时有多个人操作同一文件,这样导致数据丢失的情况了,下面我来给大家介绍PHP文件锁用法。
    2017-02-02
  • php使用Jpgraph绘制复杂X-Y坐标图的方法

    php使用Jpgraph绘制复杂X-Y坐标图的方法

    这篇文章主要介绍了php使用Jpgraph绘制复杂X-Y坐标图的方法,通过设置图像阴影、边距、字体、颜色、曲线等实现Jpgraph绘制复杂坐标图的功能,非常简单实用,需要的朋友可以参考下
    2015-06-06
  • php操作access金沙国际官网的方法详解

    php操作access金沙国际官网的方法详解

    这篇文章主要介绍了php操作access金沙国际官网的方法,结合实例形式详细分析了php基于ADOdb、PDO及ODBC等方式连接与操作access金沙国际官网的具体实现技巧与相关注意事项,需要的朋友可以参考下
    2017-02-02
  • 新手菜鸟必读:session与cookie的区别

    新手菜鸟必读:session与cookie的区别

    以下是对php中session与cookie的区别进行了详细的分析介绍,新手朋友们一定要过来参考下
    2013-08-08
  • PHP控制反转(IOC)和依赖注入(DI)

    PHP控制反转(IOC)和依赖注入(DI)

    本文主要介绍了PHP控制反转(IOC)和依赖注入(DI)的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • PHP基于文件锁解决多进程同时读写一个文件问题示例

    PHP基于文件锁解决多进程同时读写一个文件问题示例

    这篇文章主要介绍了PHP基于文件锁解决多进程同时读写一个文件的方法,结合实例形式分析了PHP使用flock进行文件读写加锁操作用法,需要的朋友可以参考下
    2017-09-09
  • PHP大转盘中奖概率算法实例

    PHP大转盘中奖概率算法实例

    这篇文章主要介绍了PHP大转盘中奖概率算法,实例讲述了概率算法的实现过程,非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • php中namespace及use用法分析

    php中namespace及use用法分析

    这篇文章主要介绍了php中namespace及use用法,结合实例形式分析了php中namespace及use的功能与具体使用方法,需要的朋友可以参考下
    2016-12-12
  • PHP实现上传多图即时显示与即时删除的方法

    PHP实现上传多图即时显示与即时删除的方法

    这篇文章主要介绍了PHP实现上传多图即时显示与即时删除的方法,结合实例形式分析了php针对图片文件的预览、上传及删除相关操作技巧,需要的朋友可以参考下
    2017-05-05

最新评论