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与MySQL开发中页面乱码的产生与解决
Mar 27 PHP
php 无限级 SelectTree 类
May 19 PHP
php adodb连接mssql解决乱码问题
Jun 12 PHP
基于MySQL到MongoDB简易对照表的详解
Jun 03 PHP
利用php绘制饼状图的实现代码
Jun 07 PHP
PHP curl CURLOPT_RETURNTRANSFER参数的作用使用实例
Feb 07 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
Mar 24 PHP
php微信公众平台开发之获取用户基本信息
Aug 17 PHP
Laravel框架实现redis集群的方法分析
Sep 14 PHP
关于laravel 日志写入失败问题汇总
Oct 17 PHP
PHP getID3类的使用方法学习笔记【附getID3源码下载】
Oct 18 PHP
laravel框架邮箱认证实现方法详解
Nov 22 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/01 无线电
ThinkPHP3.1新特性之对Ajax的支持更加完善
2014/06/19 PHP
Yii2 ActiveRecord多表关联及多表关联搜索的实现
2016/06/30 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
2017/12/31 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
2018/06/16 PHP
jQuery的学习步骤
2011/02/23 Javascript
jquery配合css简单实现返回顶部效果
2013/09/30 Javascript
jQuery+PHP实现可编辑表格字段内容并实时保存
2015/10/09 Javascript
jquery自适应布局的简单实例
2016/05/28 Javascript
js中获取时间new Date()的全面介绍
2016/06/20 Javascript
jQuery简单实现页面元素置顶时悬浮效果示例
2016/08/01 Javascript
从0开始学Vue
2016/10/27 Javascript
jQuery中的select操作详解
2016/11/29 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
javascript 缓冲运动框架的实现
2017/09/29 Javascript
Vue使用NPM方式搭建项目
2018/10/25 Javascript
微信小程序转发事件实现解析
2019/10/22 Javascript
Python发送email的3种方法
2015/04/28 Python
TensorFlow实现RNN循环神经网络
2018/02/28 Python
python定时复制远程文件夹中所有文件
2019/04/30 Python
Python自定义一个异常类的方法
2019/06/27 Python
python二进制文件的转译详解
2019/07/03 Python
Django 开发调试工具 Django-debug-toolbar使用详解
2019/07/23 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
2020/04/07 Python
python用tkinter实现一个gui的翻译工具
2020/10/26 Python
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
Old Navy加拿大官网:美式休闲服饰品牌
2017/09/26 全球购物
美体小铺奥地利官方网站:The Body Shop奥地利
2019/04/11 全球购物
世界顶级户外运动品牌折扣网站:LeftLane Sports
2019/06/12 全球购物
Linux文件系统类型
2012/02/15 面试题
司机检讨书
2014/02/13 职场文书
企业活动策划方案
2014/06/02 职场文书
乡镇保密工作承诺书
2015/05/04 职场文书
酒店温馨提示语
2015/07/14 职场文书
Django实现翻页的示例代码
2021/05/24 Python
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技