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 insert语法详解
Jun 07 PHP
PHP 木马攻击防御技巧
Jun 13 PHP
Joomla下利用configuration.php存储简单数据
May 19 PHP
让你成为更出色的PHP开发者的10个技巧
Feb 25 PHP
基于PHP CURL用法的深入分析
Jun 09 PHP
深入PHP curl参数的详解
Jun 17 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
Apr 17 PHP
PHP生成短网址的3种方法代码实例
Jul 08 PHP
PHP直接修改表内容DataGrid功能实现代码
Sep 24 PHP
Laravel+jQuery实现AJAX分页效果
Sep 14 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
Feb 08 PHP
Phpstorm+Xdebug断点调试PHP的方法
May 14 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
web方式ftp
2006/10/09 PHP
php错误提示failed to open stream: HTTP request failed!的完美解决方法
2011/06/06 PHP
用php实现选择排序的解决方法
2013/05/04 PHP
php操作mysqli(示例代码)
2013/10/28 PHP
PHP和MySql中32位和64位的整形范围是多少
2016/02/18 PHP
php数据访问之查询关键字
2016/05/09 PHP
Javascript调用XML制作连动下拉列表框
2006/06/25 Javascript
理解JavaScript的caller,callee,call,apply
2009/04/28 Javascript
idTabs基于JQuery的根据URL参数选择Tab插件
2012/04/11 Javascript
JavaScript弹出窗口方法汇总
2014/08/12 Javascript
jquery实现用户打分评分特效
2015/05/28 Javascript
js document.getElementsByClassName的使用介绍与自定义函数
2016/11/25 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
2017/08/16 jQuery
Three.js开发实现3D地图的实践过程总结
2017/11/20 Javascript
vue中的$emit 与$on父子组件与兄弟组件的之间通信方式
2018/05/13 Javascript
微信小程序登录session的使用
2019/03/17 Javascript
vue组件暴露和.js文件暴露接口操作
2020/08/11 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
vue3使用vue-count-to组件的实现
2020/12/25 Vue.js
Python爬取十篇新闻统计TF-IDF
2018/01/03 Python
详解Python3 pickle模块用法
2019/09/16 Python
节日快乐! Python画一棵圣诞树送给你
2019/12/24 Python
纯css3(无图片/js)制作的几个社交媒体网站的图标
2013/03/21 HTML / CSS
实现CSS3中的border-radius(边框圆角)示例代码
2013/07/19 HTML / CSS
详解window.open被浏览器拦截的解决方案
2019/07/18 HTML / CSS
Rentalcars.com中国:世界上最大的在线汽车租赁服务
2019/08/22 全球购物
数控专业应届生求职信
2013/11/27 职场文书
小学生元旦感言
2014/02/26 职场文书
2015教师见习期工作总结
2014/12/12 职场文书
公司开会通知
2015/04/20 职场文书
党小组评议意见
2015/06/02 职场文书
2015暑假社会调查报告
2015/07/13 职场文书
职工培训工作总结
2015/08/10 职场文书
我爱我班主题班会
2015/08/13 职场文书
导游词之苏州盘门景区
2019/11/12 职场文书
Java各种比较对象的方式的对比总结
2021/06/20 Java/Android