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编程中八种常见的文件操作方式
Nov 19 PHP
PHP查询MySQL大量数据的时候内存占用分析
Jul 22 PHP
fgetcvs在linux的问题
Jan 15 PHP
PHPAnalysis中文分词类详解
Jun 13 PHP
PHP会话控制:Session与Cookie详解
Sep 27 PHP
两个php日期控制类实例
Dec 09 PHP
PHP中$_SERVER使用说明
Jul 05 PHP
stripos函数知识点实例分享
Feb 11 PHP
PHP实现的AES 128位加密算法示例
Sep 16 PHP
TP3.2.3框架文件上传操作实例详解
Jan 23 PHP
php操作redis数据库常见方法实例总结
Feb 20 PHP
phpQuery采集网页实现代码实例
Apr 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
php中邮箱地址正则表达式实现与详解
2012/04/24 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
微信支付之JSAPI公众号支付详解
2019/05/15 PHP
PHP使用PDO 连接与连接管理操作实例分析
2020/04/21 PHP
JQery 渐变图片导航效果代码 漂亮
2010/01/01 Javascript
ExtJS Store的数据访问与更新问题
2010/04/28 Javascript
禁止选中文字兼容IE、Chrome、FF等
2013/09/04 Javascript
Javascript中call的两种用法实例
2013/12/13 Javascript
js实现拖拽功能
2017/03/01 Javascript
Javascript中this关键字指向问题的测试与详解
2017/08/11 Javascript
Vue自定义指令使用方法详解
2017/08/21 Javascript
浅谈js的解析顺序 作用域 严格模式
2017/10/23 Javascript
IE11下使用canvas.toDataURL报SecurityError错误的解决方法
2017/11/19 Javascript
JS获取input[file]的值并显示在页面的实现方法
2018/03/09 Javascript
详解vue2.6插槽更新v-slot用法总结
2019/03/09 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
javascript中innerHTML 获取或替换html内容的实现代码
2020/03/17 Javascript
Vuex中的Mutations的具体使用方法
2020/06/01 Javascript
利用JavaScript模拟京东按键输入功能
2020/12/01 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
Python笔记(叁)继续学习
2012/10/24 Python
详解Python3中yield生成器的用法
2015/08/20 Python
python 设置文件编码格式的实现方法
2017/12/21 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
2018/02/13 Python
numpy向空的二维数组中添加元素的方法
2018/11/01 Python
python实现音乐播放和下载小程序功能
2020/04/26 Python
HTML5边玩边学(3)像素和颜色
2010/09/21 HTML / CSS
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
先进个人事迹材料
2014/01/25 职场文书
怎么写自荐书范文
2014/02/12 职场文书
运动会入场词200字
2014/02/15 职场文书
新任教师自我鉴定
2014/02/24 职场文书
农村婚礼主持词
2014/03/13 职场文书
仓库管理计划书
2014/05/04 职场文书
竞选班干部演讲稿100字
2014/08/20 职场文书
2016年安全月活动总结
2016/04/06 职场文书