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

前端技术 2023/09/04 PHP

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

本文地址:https://www.stayed.cn/item/9696

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。