《PHP學習:php管理nginx虛擬主機shell腳本實例》要點:
本文介紹了PHP學習:php管理nginx虛擬主機shell腳本實例,希望對您有用。如果有疑問,可以聯系我們。
PHP學習本文實例講述了php管理nginx虛擬主機shell腳本,分享給大家供大家參考.具體分析如下:
PHP學習使用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程序設計有所幫助.
歡迎參與《PHP學習:php管理nginx虛擬主機shell腳本實例》討論,分享您的想法,維易PHP學院為您提供專業教程。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/13895.html