php管理nginx虚拟主机shell脚本实例

本文实例讲述了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程序设计有所帮助。

时间: 2014-11-18

Shell脚本实现自动修改IP、主机名等功能分享

作为一名Linux SA,日常运维中很多地方都会用到脚本,而服务器的ip一般采用静态ip或者MAC绑定,当然后者比较操作起来相对繁琐,而前者我们可以设置主机名.ip信息.网关等配置.修改成特定的主机名在维护和管理方面也比较方便.如下脚本用途为:修改ip和主机名等相关信息,可以根据实际需求修改,举一反三! 复制代码 代码如下: #!/bin/sh  #auto Change ip netmask gateway scripts  #wugk 2012-12-17  cat <<EOF +++++

PowerShell脚本实现检测网络内主机类型

最近一直在写一个自动检测网络内主机类型的脚本.基本功能可以实现判断主机操作系统类型,如果是域内的主机可以获取主机的硬件参数和性能参数,并判断是否存在网络设备.对一个运维人员来说往往需要尽快熟悉一个陌生的网络.所以这个脚本就很方便了,如果有更好的建议欢迎指正感谢! 复制代码 代码如下: ############################################ #Author:Lixiaosong #Email:lixiaosong8706@gmail.com #For:检测/24掩

shell脚本实现批量测试局域网主机是否在线

由于局域网内主机多,VLAN也多,为时常能知道在线主机的数量,编写脚本以查验在线主机. 效果是:主机在线显示绿色,主机离线显示红色结果. 用法:./ping IP段    例如:./ping 192.168.0 复制代码 代码如下: #!/bin/bash NETWORK=$1 for HOST in $(seq 1 254) do         ping -c 1 -w 1 $NETWORK.$HOST &>/dev/null && result=0 || result=

Shell交互批量更改主机名的方法

需求分析: 1.ssh公钥拷贝,提供无密码管理. 2.批量同步hosts文件到多台主机. 3.批量修改主机名. 实现: 首先编辑一份用于同步到多台主机的hosts文件 vi /etc/hosts 192.168.0.1 server1 192.168.0.2 server2 192.168.0.3 server3 192.168.0.4 server4 192.168.0.5 server5 192.168.0.6 server6 192.168.0.7 server7 192.168.0.8

阿里云主机一键安装lamp、lnmp环境的shell脚本分享

阿里云主机一键安装lamp,lnmp,自动安装脚本,由阿里云主机分享 一键安装包下载地址:点击下载 1.阿里云分享的一键安装lamp,lnmp,此安装包包含的软件及版本为: 复制代码 代码如下: nginx:1.0.15.1.2.5.1.4.4 apache:2.2.22.2.4.2 mysql:5.1.73.5.5.35.5.6.15 php:5.3.18.5.4.23.5.5.7 php扩展:memcache.Zend Engine/ OPcache ftp:(yum/apt-get安装)

使用PowerShell获取当前主机内存使用量和总量的方法

群里一个小兄弟的提问 用PowerShell来写比c#要简单太多了,WMI直接提供了方法,调用即可. #made by kukisama $a=(get-wmiobject -class Win32_PhysicalMemory -namespace "root\cimv2").Capacity $b=(get-wmiobject -class Win32_PerfFormattedData_PerfOS_Memory -namespace "root\cimv2"

NTFS权限设置以避免通过webshell遍历主机目录

测试环境:Windows 2003 + IIS6.0 + Access数据库 运行上传的asp助手,在浏览其他分区的时候提示"路径未找到",用asp探针查看发现是因为对分区没有读取权限. 我们知道,匿名访问web使用系统中的"IUSR_主机名"这个用户,只要限制了这个用户的读取权限,即能限制访问者遍历服务器目录,保护服务器数据不被非法访问. 操作步骤: 1. 我的电脑,磁盘安全属性.2. 首先删除Everyone组.一般在服务器上看见Everyone就要删.3. 添

虚拟主机封杀webshell提权!!!!!!!!!!

1.为了打造一个安全的虚拟主机,在asp+SQL环境下,我们要做的是封杀ASP webshell.封杀serv-u提权漏洞和SQL注入的威胁 2.默认安装的win主机上webshell功能十分强大,我们要封杀webshell的哪些功能 也就是不让webshell查看系统服务信息,执行cmd命令和略览文件目录,我们要实现的功能是每个用户只能访问自己的目录,而且可以用FSO等ASP组件,在这里我以海洋木马和win200为例给大家演示一下.好多资料都是网上收集而来,在这表示感谢. 3.现在我们先设置好

nginx虚拟主机防webshell完美版

我们先来看下nginx.conf server  {    listen       80;    server_name  www.a.com;    index index.html index.htm index.php;    root  /data/htdocs/www.a.com/; #limit_conn   crawler  20; location ~ .*\.(php|php5)?$    {            #fastcgi_pass  unix:/tmp/php-c

清平云 betweb云服务完美版虚拟主机自动化套件使用介绍

BET 是一套基于win平台上的web服务器 整合套件.BET 是一套快速部署web的软件.部署一台服务器快到只要30秒.BET 是一套全功能脚本环境.他可以支持php所有版本及aspx asp.不依赖任何3方软件.BET 是一套全平台软件,他包含了所有服务器(ftp,mysql,sqlserver,memcache,wincha,Zend所有组建)所以你无需再安装其他软件,直接启动就可以配置好所有服务及安全,运行环境配置最低可到 512m内存. betweb 云服务完美版(windows一键部

nginx虚拟主机配置实例详解

nginx虚拟主机配置 server { listen 80; server_name localhost; location / { root html; index index.html index.htm; } error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.

Nginx虚拟主机多server_name的顺序问题

Nginx配置文件中没有相关的rewrite跳转规则,那么就应该是MediaWiki的PHP程序做的跳转,但是,遍历了MediaWiki目录下的所有文件以及查询了MySQL数据库中的每个表,都没有发现记录有这个域名.后来,通过查看源代码发现MediaWiki是根据$_SERVER['SERVER_NAME']做的跳转,顺藤摸瓜,发现了下列问题: 在一个Nginx虚拟主机中,可以绑定多个server_name,例如: 而server_name的先后顺序的不同,对PHP程序中使用$_SERVER["

Nginx 虚拟主机配置的三种方式(基于域名)

Nginx配置虚拟主机支持3种方式:基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置. 详解Nginx 虚拟主机配置的三种方式(基于IP) https://www.jb51.net/article/149774.htm 详解Nginx 虚拟主机配置的三种方式(基于端口) https://www.jb51.net/article/14978.htm 3.Nginx基于域名的虚拟主机配置 使用基于域名的虚拟主机配置是比较流行的方式,可以在同一个IP上配置多个域名并且都通过80端

详解Nginx 虚拟主机配置的三种方式(基于IP)

Nginx配置虚拟主机支持3种方式:基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置. 详解Nginx 虚拟主机配置的三种方式(基于端口) https://www.jb51.net/article/14977.htm 详解Nginx 虚拟主机配置的三种方式(基于域名) https://www.jb51.net/article/14978.htm 1.基于IP的虚拟主机配置 如果同一台服务器有多个IP,可以使用基于IP的虚机主机配置,将不同的服务绑定在不同的IP上. 1.1

详解Nginx 虚拟主机配置的三种方式(基于端口)

Nginx配置虚拟主机支持3种方式:基于IP的虚拟主机配置,基于端口的虚拟主机配置,基于域名的虚拟主机配置. 详解Nginx 虚拟主机配置的三种方式(基于IP) https://www.jb51.net/article/14974.htm 详解Nginx 虚拟主机配置的三种方式(基于域名) https://www.jb51.net/article/14978.htm 2.Nginx基于端口的虚拟主机配置 如一台服务器只有一个IP或需要通过不同的端口访问不同的虚拟主机,可以使用基于端口的虚拟主机配

基于域名、端口和IP搭建nginx虚拟主机

nginx支持的虚拟主机有三种 1.基于域名的虚拟主机 2.基于IP的虚拟主机 3.基于端口的虚拟主机 一.基于域名构建 1.编译安装nginx服务 2.配置DNS域名解析服务 3.配置虚拟主机 a.创建自测网页 [root@localhost named]# cd [root@localhost ~]# mkdir -p /var/www/html/kgc [root@localhost ~]# mkdir -p /var/www/html/accp [root@localhost ~]# l