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 )
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

时间: 2024-10-03 22:48:23

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

Nginx虚拟主机 (基于域名 基于端口 基于ip)

Nginx虚拟主机 基于域名的虚拟主机 基于IP地址的虚拟主机 基于端口的虚拟主机 一,安装DNS域名解析服务器 1,安装bind服务器 [[email protected] ~]# yum install bind -y 2,修改主配置文件(named.conf) [[email protected] ~]# vim /etc/named.conf options { listen-on port 53 { any; }; ##监听所有 listen-on-v6 port 53 { ::1;

Nginx虚拟主机之域名,端口,IP

要nginx源码包请私信我 Nginx虚拟主机之域名 [[email protected] ~]# yum install bind -y 配置DNS主配置文件 [[email protected] ~]# vim /etc/named.conf options { listen-on port 53 { any; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/d

windows 下nginx 虚拟主机搭建

需要在 nginx.conf里面引入刚才配置的那个文件 第一步 加东西 http的节点里面加上 一定要注意的是:必须以  ;  结尾 include D:/phpen/nginx-1.3.6/conf/vhost/www.light.com.conf; 或者 include D:/phpen/nginx-1.3.6/conf/vhost/*.conf; 第二步  写配置文件 下面的 这两种方法我都测试过的哦 可以为每一个单独创建一个文件      这个是便于管理 也可以把所有的都写入同一个文件

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

为了方便管理虚拟主机,应该尽量少修改主配置文件http.conf或者nginx.conf,大部分修改变更都在虚拟主机片配置文件httpd- vhost.conf或者vhost.conf中完成,这样有利于调试,降低风险.即便把虚拟主机配置文件修改得一团糟,只要把主配置文件中包含虚拟主机 配置文件的一行注释掉即可. Apache(多域名): 第一步首先要使扩展文件httpd/conf.d/vhosts.conf生效: 1. 打开 apache2/conf/httpd.conf 文件 2. 找到 #

配置nginx虚拟主机别名及别名企业场景应用说明

nginx虚拟主机的别名配置 1    虚拟主机别名介绍及配置 所谓虚拟主机别名,就是为了虚拟主机设置除了主域名以外的一个或多个域名名字,这样能实现用户访问的多个域名对应同一个虚拟主机网站的功能. 以www.etiantian.org域名的虚拟主机为例,为其增加一个别名etiantian.org,使得访问 [[email protected] bbs]# curl -I 51cto.com HTTP/1.1 301 Moved Permanently Date: Sun, 20 Aug 2017

Nginx 虚拟主机 VirtualHost 配置

Nginx 是一个轻量级高性能的 Web 服务器, 并发处理能力强, 对资源消耗小, 无论是静态服务器还是小网站, Nginx 表现更加出色, 作为 Apache 的补充和替代使用率越来越高. 我在<Apache 虚拟主机 VirtualHost 配置>介绍了在不同操作系统上使用 Apahce 虚拟主机的方法, 还有那么些朋友想知道 Nginx 虚拟主机配置方法, 本文作为补充也介绍如何 Nginx 上添加虚拟主机. 绝大多数的 Nginx 运行在 Linux 机器上, 虽然有 Windows

Nginx虚拟主机配置详解

Nginx虚拟主机配置详解 一.虚拟主机介绍 虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台"虚拟"的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功能(WWW.FTP.Email等),同一台主机上的虚拟主机之间是完全独立的.从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样. 利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程.虚拟主机提供了在同一台服务器.

nginx虚拟主机概念和类型介绍

nginx虚拟主机配置实战 1,虚拟主机概念和类型介绍 所谓虚拟主机,在web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可能是IP或端口),具有独立的程序及资源目录,可以独立地对外提供服务供用户访问. 这个这个独立的站点在配置里是由一定格式的标签段标记,对于apache软件来说,一个虚拟主机的标签段通畅被包含在<VirtualHost></VirtualHost>内,而nginx软件则使用一个server{}标签来标示一个虚拟主机,一个web服务里可以有多个虚拟主机主

nginx日志切割shell脚本

#!/bin/bash #function:cut nginx log files shell #cp /usr/local/nginx/logs/access.log /usr/local/nginx/logs/access.log.bak log_cut_path="/var/log/nginx" log_files_path="/usr/local/nginx/logs/" log_files_dir=${log_cut_path}$(date -d &quo