您好,登錄后才能下訂單哦!
這篇文章給大家介紹怎么在php項目中利用shell腳本管理nginx虛擬主機,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
使用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項目中利用shell腳本管理nginx虛擬主機就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。