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 相关文章推荐
用PHP来写记数器(详细介绍)
Oct 09 PHP
杏林同学录(九)
Oct 09 PHP
PHP 查找字符串常用函数介绍
Jun 07 PHP
深入解析php之sphinx
May 15 PHP
用PHP实现浏览器点击下载TXT文档的方法详解
Jun 02 PHP
php环境套包 dedeampz 伪静态设置示例
Mar 26 PHP
jQuery+PHP+ajax实现微博加载更多内容列表功能
Jun 27 PHP
PHP图片处理之图片背景、画布操作
Nov 19 PHP
PHP计算百度地图两个GPS坐标之间距离的方法
Jan 09 PHP
使用php实现网站验证码功能【推荐】
Feb 09 PHP
PHP实现活动人选抽奖功能
Apr 19 PHP
PHPstorm激活码2020年5月13日亲测有效
Sep 17 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
国王的咖啡这么大来头,名字的由来是什么
2021/03/03 咖啡文化
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
apache+php完美解决301重定向的两种方法
2011/06/08 PHP
PHP简洁函数小结
2011/08/12 PHP
深入php self与$this的详解
2013/06/08 PHP
利用PHP实现短域名互转
2013/07/05 PHP
PHP和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
php自定义函数截取汉字长度
2014/05/15 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
PHP中header函数的用法及其注意事项详解
2016/06/13 PHP
PHP+fiddler抓包采集微信文章阅读数点赞数的思路详解
2019/12/20 PHP
一个可以显示阴历的JS代码
2007/03/05 Javascript
jquery对象和DOM对象的区别介绍
2013/08/09 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
Bootstrap如何激活导航状态
2017/03/22 Javascript
js移动端事件基础及常用事件库详解
2017/08/15 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
Angularjs过滤器实现动态搜索与排序功能示例
2017/12/13 Javascript
Vue-component全局注册实例
2018/09/06 Javascript
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
python通过exifread模块获得图片exif信息的方法
2015/03/16 Python
更换Django默认的模板引擎为jinja2的实现方法
2018/05/28 Python
python中selenium操作下拉滚动条的几种方法汇总
2019/07/14 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
python中delattr删除对象方法的代码分析
2020/12/15 Python
tensorflow与numpy的版本兼容性问题的解决
2021/01/08 Python
法拉利英国精品店:Ferraris Boutique UK
2019/07/20 全球购物
服务员岗位职责
2014/01/29 职场文书
趣味活动策划方案
2014/02/08 职场文书
人事专员岗位职责范本
2014/03/04 职场文书
社会稳定风险评估方案
2014/06/02 职场文书
竞选纪律委员演讲稿
2014/09/13 职场文书
2014年材料员工作总结
2014/11/19 职场文书
运动会闭幕词
2015/01/28 职场文书
2015年高三毕业班班主任工作总结
2015/10/22 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python