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和ACCESS写聊天室(八)
Oct 09 PHP
PHP6 先修班 JSON实例代码
Aug 23 PHP
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
Nov 18 PHP
PHP采集相关教程之一 CURL函数库
Feb 15 PHP
用 Composer构建自己的 PHP 框架之基础准备
Oct 30 PHP
php相对当前文件include其它文件的方法
Mar 13 PHP
深入理解PHP中的Streams工具
Jul 03 PHP
php编程每天必学之验证码
Mar 03 PHP
PHP中的表达式简述
May 29 PHP
phpStudy2016 配置多个域名期间遇到的问题小结
Oct 19 PHP
php校验公钥是否可用的实例方法
Sep 17 PHP
PHP高并发和大流量解决方案整理
Mar 09 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图片缩放实现方法
2014/02/20 PHP
如何离线执行php任务
2017/02/21 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
javascript获取ckeditor编辑器的值(实现代码)
2013/11/18 Javascript
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
实用框架(iframe)操作代码
2014/10/23 Javascript
node.js中的fs.truncate方法使用说明
2014/12/15 Javascript
jquery获取当前日期的方法
2015/01/14 Javascript
JS动态修改iframe内嵌网页地址的方法
2015/04/01 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
angularjs中ng-bind-html的用法总结
2017/05/23 Javascript
Angular4如何自定义首屏的加载动画详解
2017/07/26 Javascript
bootstrap Table实现合并相同行
2019/07/19 Javascript
详解Element-UI中上传的文件前端处理
2019/08/07 Javascript
python使用SMTP发送qq或sina邮件
2017/10/21 Python
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
Python实现带参数与不带参数的多重继承示例
2018/01/30 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
2019/04/11 Python
Python3.5文件读与写操作经典实例详解
2019/05/01 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
2019/07/12 Python
解决Django后台ManyToManyField显示成Object的问题
2019/08/09 Python
python sklearn常用分类算法模型的调用
2019/10/16 Python
python实现密码强度校验
2020/03/18 Python
django 解决model中类写不到数据库中,数据库无此字段的问题
2020/05/20 Python
CSS3田字格列表的样式编写方法
2018/11/22 HTML / CSS
英国最大的天然和有机产品在线零售商之一:Big Green Smile
2020/05/06 全球购物
国培远程培训感言
2014/03/08 职场文书
超市仓管员岗位职责
2014/04/07 职场文书
工伤赔偿协议书
2014/04/15 职场文书
自强自立美德少年事迹材料
2014/08/16 职场文书
教师自我剖析材料(四风问题)
2014/09/30 职场文书
2014年乡镇工作总结
2014/11/21 职场文书
暑假打工感想
2015/08/07 职场文书
MySql开发之自动同步表结构
2021/05/28 MySQL
通过T-SQL语句创建游标与实现数据库加解密功能
2022/03/16 SQL Server
python自动获取微信公众号最新文章的实现代码
2022/07/15 Python