Using PHP as a shell script is a handy thing to do. Of course, we can use PHP script to manage nginx virtual host, the following is the author's script file for your reference
| The code is as follows |
|
| #!/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 = "";
//Variable initialization
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);
}
//directory detection and configuration file copy
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;
//write configuration file
}
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]);
}
//Deletes the specified configuration and saves the backup
}
else if ($operate = = 3) {
exit;
}
else {
exit ("No Operation selected!");
}?> |
The following is the Nginx configuration template
| code is as follows |
&nbs P; |
| server { Listen; 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; } Access to #不记录对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_fi Les\ $uri \ $uri//wp-content/cache/supercache/\ $http _host/\ $request _uri/index.html.gz @proxy; } #匹配图片, script files, and so on 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; } } |