首页 > 网站 > WEB服务 > 正文

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

2020-03-22 18:24:03
字体:
来源:转载
供稿:网友
本文实例讲述了php管理nginxhtml' target='_blank'>虚拟主机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教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表