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 clearstatcache()函数详解
Mar 02 PHP
PHP 魔术函数使用说明
May 14 PHP
基于php split()函数的用法详解
Jun 05 PHP
php格式化日期和时间格式化示例分享
Feb 24 PHP
php中mkdir函数用法实例分析
Nov 15 PHP
ThinkPHP中使用ajax接收json数据的方法
Dec 18 PHP
php检查日期函数checkdate用法实例
Mar 19 PHP
PHP7正式版测试,性能惊艳!
Dec 08 PHP
又拍云异步上传实例教程详解
Apr 19 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
Jun 20 PHP
PHP多进程通信-消息队列使用
Mar 08 PHP
php 实现简单的登录功能示例【基于thinkPHP框架】
Dec 02 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
德生PL990的分析评价
2021/03/02 无线电
优化NFR之一 --MSSQL Hello Buffer Overflow
2006/10/09 PHP
PHP获取音频文件的相关信息
2015/06/22 PHP
PHP生成树的方法
2015/07/28 PHP
浅析PHP7新功能及语法变化总结
2016/06/17 PHP
js判断浏览器的比较全的代码
2007/02/13 Javascript
Firefox和IE浏览器兼容JS脚本写法小结
2008/07/07 Javascript
ie focus bug 解决方法
2009/09/03 Javascript
js判断变量是否未定义的代码
2020/03/28 Javascript
使用firebug进行调试javascript的示例
2013/12/16 Javascript
jquery等待效果示例
2014/05/01 Javascript
jQuery多级弹出菜单插件ZoneMenu
2014/12/18 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
2016/08/19 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
Asp.Net之JS生成分页条的方法
2016/11/23 Javascript
JS访问DOM节点方法详解
2016/11/29 Javascript
angularjs实现下拉列表的选中事件示例
2017/03/03 Javascript
使用vue构建移动应用实战代码
2017/08/02 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
2017/08/24 Javascript
Vue+Java+Base64实现条码解析的示例
2020/09/23 Javascript
[03:36]2015国际邀请赛第二日现场精彩集锦
2015/08/06 DOTA
Python 的内置字符串方法小结
2016/03/15 Python
Python数据结构之翻转链表
2017/02/25 Python
Python中那些 Pythonic的写法详解
2019/07/02 Python
Python基础之函数基本用法与进阶详解
2020/01/02 Python
python多进程使用函数封装实例
2020/05/02 Python
python3获取控制台输入的数据的具体实例
2020/08/16 Python
Kiwi.com中国:找到特价机票并发现新目的地
2019/10/27 全球购物
一些网络技术方面的面试题
2014/05/01 面试题
个人贷款担保书
2014/04/01 职场文书
大跃进口号
2014/06/16 职场文书
民主生活会对照检查材料范文
2014/10/01 职场文书
篮球拉拉队口号
2015/12/25 职场文书
Win11局域网共享权限在哪里设置? Win11高级共享的设置技巧
2022/04/05 数码科技
使用Redis实现分布式锁的方法
2022/06/16 Redis