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 相关文章推荐
Ajax+PHP快速上手及简单应用说明
Jul 24 PHP
PHP Web木马扫描器代码分享
Sep 06 PHP
浅析Yii2集成富文本编辑器redactor实例教程
Apr 25 PHP
PHP编程实现脚本异步执行的方法
Aug 09 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
Dec 31 PHP
php实现微信公众平台发红包功能
Jun 14 PHP
PHP的curl函数的用法总结
Feb 14 PHP
PHP-FPM 的管理和配置详解
Feb 17 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
May 13 PHP
Yii实现微信公众号场景二维码的方法实例
Aug 30 PHP
PHP如何使用array_unshift()在数组开头插入元素
Sep 01 PHP
php在linux环境中如何使用redis详解
Dec 15 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中遍历stdclass object的实现代码
2011/06/09 PHP
PHP中header和session_start前不能有输出原因分析
2013/01/11 PHP
精美漂亮的php分页类代码
2013/04/02 PHP
PHP实现从远程下载文件的方法
2015/03/12 PHP
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
2013/12/05 Javascript
三种方式获取XMLHttpRequest对象
2014/04/21 Javascript
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
代码分析jQuery四种静态方法使用
2015/07/23 Javascript
异步JS框架的作用以及实现方法
2015/10/29 Javascript
基于javascript实现图片切换效果
2016/04/17 Javascript
jQuery代码实现图片墙自动+手动淡入淡出切换效果
2016/05/09 Javascript
JQuery Mobile 弹出式登录框的实现方法
2016/05/28 Javascript
浅谈js和css内联外联注意事项
2016/06/30 Javascript
jQuery Ajax 加载数据时异步显示加载动画
2016/08/01 Javascript
BootStrap 弹出层代码
2017/02/09 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
2017/08/11 Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
2017/12/27 Javascript
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
深入浅析javascript函数中with
2018/10/28 Javascript
UEditor 自定义图片视频尺寸校验功能的实现代码
2020/10/20 Javascript
Python 爬虫学习笔记之单线程爬虫
2016/09/21 Python
python3.4用循环往mysql5.7中写数据并输出的实现方法
2017/06/20 Python
python 3.6 +pyMysql 操作mysql数据库(实例讲解)
2017/12/20 Python
python五子棋游戏的设计与实现
2019/06/18 Python
Python读取xlsx文件的实现方法
2019/07/04 Python
Python3打包exe代码2种方法实例解析
2020/02/17 Python
Django Form设置文本框为readonly操作
2020/07/03 Python
意大利奢侈品购物网站:Deliberti
2019/10/08 全球购物
新闻记者实习自我鉴定
2013/09/19 职场文书
采购部经理岗位职责
2014/02/10 职场文书
环保建议书400字
2014/05/14 职场文书
中小学生安全教育观后感
2015/06/17 职场文书
浅谈MySQL之浅入深出页原理
2021/06/23 MySQL
解决Mysql多行子查询的使用及空值问题
2022/01/22 MySQL
vue实现列表拖拽排序的示例代码
2022/04/08 Vue.js