使用php作為shell腳本是一件很方便的事情。理所當(dāng)然,我們可以使用php腳本來(lái)管理 nginx虛擬主機(jī),下面是筆者的 腳本 文件供各位參考
代碼如下:
#!/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 );
}
//目錄檢測(cè)及配置文件拷貝
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]);
}
//刪除指定配置,并保存?zhèn)浞?/P>
}
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};
#不記錄對(duì)站點(diǎn)圖標(biāo)訪問(wèn)
location = /favicon.ico {
log_not_found off;
access_log off;
}
#不記錄對(duì)robots.txt的訪問(wèn)
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
include /etc/nginx/proxy.conf;
}
}
更多信息請(qǐng)查看IT技術(shù)專欄