Nginx交互式管理脚本–自助添加虚拟主机

2022-06-29 21:19:29 浏览数 (1)

为配合网站测试,一直在频繁的添加虚拟主机,然后就是cp、修改配置、重启服务! 所幸就写一个Nginx添加虚拟主机的脚本,添加起来方便,再把Nginx的启动关闭添加进来,就省事很多了。

原理: 自动find本机Nginx的目录位置 照例利用while控制语句形成一个交互式的脚本界面 创建独立虚拟主机配置文件,内容为一般配置,利用read将用户需要的配置记录为变量,赋值给配置文件,再在Nginx.conf中includd 以后抽时间再完善智能添加PHP和PATH_INFO(关于PHP的配置可能需要个人修改,其他比如PATH_INFO当然也要自己修改,可以根据自己情况cp公司现有默认配置)

效果:

测试好使!

代码: #!/bin/bash nginxdir=`find / -name nginx|grep nginx/sbin/nginx|awk -F sbin '{print $1}'` while true do clear # menu echo " 本机Nginx路径为: $nginxdir" echo " ****************** Nginx tool ******************* *                                              *" echo "* (1)  启动Nginx                          *" echo "* (2)  关闭Nginx                          *" echo "* (3)  重启Nginx                          *" echo "* (4)  查看Nginx运行进程数                *" echo "* (5)  查看TCP连接状态                    *" echo "* (10) 添加虚拟主机                      *" echo "* (0)  退出本程序                        *" echo "*                                        * *************************************************" read -p  "请输入对应数字: " caozuo case $caozuo in # start 1) if [ -z "`ps ax|grep nginx|grep -v grep|grep -v nginx.sh|awk '{print $1}'`" ];         then         $nginxdir/sbin/nginx         sleep 1         if [ -z "`ps ax|grep nginx|grep -v grep|grep -v nginx.sh|awk '{print $1}'`" ];                 then                 read -p "Nginx 启动失败!"                 else                 read -p "Nginx 启动完成!回车继续!"         fi         else         read -p "Nginx is Running! 回车继续!"     fi ;; #stop 2) killall nginx     sleep 1     if [ -z "`ps ax|grep nginx|grep -v grep|grep -v nginx.sh|awk '{print $1}'`" ];         then         read -p "Nginx关闭完成!回车继续!"         else         read -p "Nginx关闭失败!回车继续!"     fi ;; #restart 3) if [ -z "`ps ax|grep nginx|grep -v grep|grep -v nginx.sh|awk '{print $1}'`" ];         then         $nginxdir/sbin/nginx         read -p "Nginx启动完成!回车继续!"         else         killall nginx         sleep 1         $nginxdir/sbin/nginx         read -p "Nginx重启完成!回车继续!"     fi ;; #process 4) read -p "Nginx运行进程数: `ps -ef|grep nginx|grep -v nginx.sh|grep -v grep|wc -l`" ;; #TCP 5) read -p "TCP连接状态: `netstat -n | awk '/^tcp/ { state[$NF]} END {for(key in state) print key,"t",state[key]}'`" ;; #vhost 10)         while true         do         clear         read -p "请输入要添加的虚拟主机完整域名: " vhost         read -p "请输入该域名使用的端口: " prot         read -p "请输入域名对应的root目录: " hostdir         read -p "请输入访问日志目录: " logdir echo " ################### 确认以下信息 ######################## " read -p "Nginx的目录为:        $nginxdir 要添加的虚拟主机为:    $vhost 该域名对应的端口为:    $prot 域名对应的root目录为:  $hostdir 访问日志文件为:        $logdir/$vhost.log ######################################################### [回车继续,如有误请输入0返回]:" queren2                 case $queren2 in                 0) break                 ;;                 *)                 mkdir $nginxdir/conf/vhost                 touch $nginxdir/conf/vhost/$vhost.conf                 sed -i "/include * mime.types/ a include $nginxdir/conf/vhost/$vhost.conf;" $nginxdir/conf/nginx.conf echo 'server   {   listen      '$prot';   server_name  '$vhost';   index index.php index.html index.htm;   root  '$hostdir'; location / {         if (!-e $request_filename){           rewrite ^(.*)$ /index.php?s=/$1 last;           rewrite ^(.*)$ /index.php/$1 last;         }         }     location ~ .*.(php|php5)?$     {           fastcgi_pass  127.0.0.1:9000;           fastcgi_index index.php; #          include fcgi.conf;         }     location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$     {       expires      30d;     }     location ~ .*.(js|css)?$     {       expires      1h;     } access_log '$logdir/$vhost.log'; }' >>$nginxdir/conf/vhost/$vhost.conf read -p "添加完成,需重启Nginx生效,回车返回!" break                 ;;                 esac         done ;; 0) break ;; *) read -p "请输入对应数字!或者Ctrl C退出!回车继续!" ;; esac done

0 人点赞