使用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 )
for(www.111cn.net)each ( $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;
}
}

from:http://www.111cn.net/phper/php-cy/68199.htm

php管理nginx虚拟主机shell脚本的更多相关文章

  1. Nginx网络架构实战学习笔记(一):Nginx简介、安装、信号控制、nginx虚拟主机配置、日志管理、location 语法、Rewrite语法详解

    文章目录 nginx简介 nginx安装 nginx信号控制 nginx虚拟主机配置 日志管理 location 语法 精准匹配的一般匹配 正则匹配 总结 Rewrite语法详解 nginx简介 Ng ...

  2. Nginx虚拟主机以及自动启动脚本详解

    想要部署Nginx虚拟主机,那么首先需要nginx的环境,那么我们一起来看一下吧systemctl stop firewalldiptables -Fsetenforce 01)安装支持软件yum - ...

  3. Apache与Nginx虚拟主机设置(多域名和多端口的区别)

    为了方便管理虚拟主机,应该尽量少修改主配置文件http.conf或者nginx.conf,大部分修改变更都在虚拟主机片配置文件httpd- vhost.conf或者vhost.conf中完成,这样有利 ...

  4. Nginx教程(二) Nginx虚拟主机配置

    Nginx教程(二) Nginx虚拟主机配置 1 虚拟主机管理 1.1 Nginx管理虚拟主机 虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主 ...

  5. Nginx 虚拟主机 VirtualHost 配置

    Nginx 是一个轻量级高性能的 Web 服务器, 并发处理能力强, 对资源消耗小, 无论是静态服务器还是小网站, Nginx 表现更加出色, 作为 Apache 的补充和替代使用率越来越高. 我在& ...

  6. Linux(7)- Nginx.conf主配置文件、Nginx虚拟主机/访问日志/限制访问IP/错误页面优化、Nginx反向代理、Nginx负载均衡

    一.Nginx.conf主配置文件 Nginx主配置文件conf/nginx.conf是一个纯文本类型的文件,整个配置文件是以区块的形式组织的.一般,每个区块以一对大括号{}来表示开始与结束. 核心模 ...

  7. Nginx教程(二) Nginx虚拟主机配置 (转)

    Nginx教程(二) Nginx虚拟主机配置 1 虚拟主机管理 1.1 Nginx管理虚拟主机 虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主 ...

  8. nginx虚拟主机配置

    nginx虚拟主机配置   虚拟主机的概念虚拟主机,就是把一台物理服务器划分成多个"虚拟"的服务器,每一个虚拟主机都可以有独立的域名和独立的目录nginx虚拟主机的配置nginx的 ...

  9. Nginx高性能服务器安装、配置、运维 (5) —— Nginx虚拟主机配置

    六.Nginx虚拟主机配置 建立基于域名的虚拟主机: (1)建立基于域名的虚拟主机配置文件(以abc.com为例): (2)更改虚拟主机配置文件: 更改配置如下(更改部分即可): server { l ...

随机推荐

  1. JavaScript常用设计模式

    单例模式:确保类只能被实例化一次. var obj = {} 2.函数返回值 var func = function () {return {}} var obj = func(); 3.构造函数初始 ...

  2. 自己定义构造方法和description方法

    本文文件夹 知识回想 一.自己定义构造方法 二.description方法 说明:这个Objective-C专题,是学习iOS开发的前奏,也为了让有面向对象语言开发经验的程序猿,可以高速上手Objec ...

  3. 算法笔记_216:第六届蓝桥杯软件类校赛部分真题(Java语言C组)

    目录 1 题目一 2 题目二 3 题目三 4 题目四 5 题目五 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 题目一 二项式的系数规律,我国数学家很早就发现了. 如[图1.png],我国南宋数学 ...

  4. 《Unix&Linux大学教程》学习笔记二:指令常识

    1:指令的本质——调用可执行程序 在Shell输入命令时,其实就是根据名称运行相应的程序. 2:在系统中查找程序 which 指令名 type 指令名 3:时间与日历 date [-选项] 参数 ca ...

  5. wordpress 开源博客系统部署

     1.开发工具 server apache    下载地址:http://www.apache.org   http://httpd.apache.org/download.cgi 数据库 mys ...

  6. js动态创建HTML(radio、checkbox...)[摘抄]

    function create(parentId,eleType,eleName,eleId,eleValue){ var board = document.getElementById(parent ...

  7. 如何处理Entity Framework中的DbUpdateConcurrencyException异常

    1. Concurrency的作用 场景 有个修改用户的页面功能,我们有一条数据User, ID是1的这个User的年龄是20, 性别是female(数据库中的原始数据) 正确的该User的年龄是25 ...

  8. redhat7.0安装ifconfig

    问题描述: Setup is unable to find the "ifconfig" program on your machine. Please make sure it ...

  9. 非常漂亮滴皮肤skin++ 终极破解之法

    破解includeparametershook汇编windows *[标题]:Skin++通用界面换肤系统V2.0.1破解探讨 *[作者]:gz1X <gz1x(at)tom(dot)com&g ...

  10. 类型“System.Data.SQLite.SQLiteParameter”在未被引用的程序集中定义。必须添加对程序集“System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139”的引用

    出现这个问题是 你的系统是64位 同时 dll生成的 any cpu 应该换为 x86