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


Posted in PHP onNovember 19, 2014

本文实例讲述了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;

}

}

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

PHP 相关文章推荐
MySql中正则表达式的使用方法描述
Jul 30 PHP
又一个php 分页类实现代码
Dec 03 PHP
php 魔术函数使用说明
Feb 21 PHP
慎用preg_replace危险的/e修饰符(一句话后门常用)
Jun 19 PHP
关于svn冲突的解决方法
Jun 21 PHP
php使用sql数据库 获取字段问题介绍
Aug 12 PHP
php中数字0和空值的区别分析
Jun 05 PHP
PHP实现采集中国天气网未来7天天气
Oct 15 PHP
PHP 微信支付类 demo
Nov 30 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
Feb 03 PHP
PHP解压tar.gz格式文件的方法
Feb 14 PHP
Yii2验证器(Validator)用法分析
Jul 23 PHP
PHP 读取和编写 XML
Nov 19 #PHP
PHP生成不重复随机数的方法汇总
Nov 19 #PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
Nov 19 #PHP
php中time()与$_SERVER[REQUEST_TIME]用法区别
Nov 19 #PHP
PHP中使用数组指针函数操作数组示例
Nov 19 #PHP
PHP循环遍历数组的3种方法list()、each()和while总结
Nov 19 #PHP
PHP分页类集锦
Nov 18 #PHP
You might like
php仿QQ验证码的实例分析
2013/07/01 PHP
php中的filesystem文件系统函数介绍及使用示例
2014/02/13 PHP
ThinkPHP之foreach标签使用概述
2014/06/30 PHP
php文件读取方法实例分析
2015/06/20 PHP
php array_merge_recursive 数组合并
2016/10/26 PHP
浅谈PHP中的面向对象OOP中的魔术方法
2017/06/12 PHP
laravel 框架实现无限级分类的方法示例
2019/10/31 PHP
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
JQuery在页面中添加和除移DOM示例代码
2013/06/24 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
JS实现网页表格自动变大缩小的方法
2015/03/09 Javascript
JS代码实现根据时间变换页面背景效果
2016/06/16 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
JavaScript注册时密码强度校验代码
2017/06/30 Javascript
vue+springboot实现项目的CORS跨域请求
2018/09/05 Javascript
详解Vue的常用指令v-if, v-for, v-show,v-else, v-bind, v-on
2018/10/12 Javascript
使用webpack4编译并压缩ES6代码的方法示例
2019/04/24 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
vue使用video.js进行视频播放功能
2019/07/18 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
2020/12/24 Javascript
[01:20]DOTA2更新全新英雄 天涯墨客现已加入游戏
2018/08/25 DOTA
python绘制圆柱体的方法
2018/07/02 Python
python构建基础的爬虫教学
2018/12/23 Python
python 随机生成10位数密码的实现代码
2019/06/27 Python
Python读取Excel数据并生成图表过程解析
2020/06/18 Python
移动端Web页面的CSS3 flex布局快速上手指南
2016/05/31 HTML / CSS
职业生涯规划书的格式
2013/12/29 职场文书
管理部副部长岗位职责范文
2014/03/09 职场文书
生日宴会主持词
2014/03/20 职场文书
求职信内容怎么写
2014/05/26 职场文书
人身损害赔偿协议书格式
2014/11/01 职场文书
信贷客户经理岗位职责
2015/04/09 职场文书
学雷锋献爱心倡议书
2015/04/27 职场文书
毕业设计致谢语
2015/05/14 职场文书
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis