用function函数实现安装、升级、卸载Nginx

创建以今天日期命名的文件夹

[root@localhost 20240828]# mkdir `date +%F`

 创建自动安装升级卸载nginx脚本

#!/bin/bash
#2024年8月30日
#auto config nginx web
#by author xin
######################
NGX_VHOST="$1"
NGX_VER="1.26.1"
NGX_YUM="yum install -y"
NGX_DIR="/usr/local/nginx"
NGX_ROOT_DIR="/data/webapps"
NGX_SOFT="nginx-${NGX_VER}.tar.gz"
NGX_URL="http://nginx.org/download"
NGX_ARGS="--user=www --group=www --with-http_stub_status_module"
echo -e "\033[32m----------------\033[0m"
function install_nginx(){
	#Install nginx
	if [ ! -f $NGX_DIR/sbin/nginx ];then
		#提前解决编译Nginx所需依赖环境、库文件;
		$NGX_YUM wget gzip tar make
		$NGX_YUM gcc pcre-devel zlib-devel
		#下载Nginx软件包;
		wget -c $NGX_URL/$NGX_SOFT -P /usr/src/
		#Cd切换至/usr/src/;
		cd /usr/src/
		ls -l $NGX_SOFT
		#通过Tar工具对其解压;
		tar -xzvf $NGX_SOFT
		#Cd切换至Nginx源代码目录;
		cd nginx-${NGX_VER}/
		#创建www用户和组;
		useradd -s /sbin/nologin www -M
		#预编译;
		./configure --prefix=$NGX_DIR/ $NGX_ARGS 
		#编译;
		make -j4
		#安装;
		make -j4 install
		#查看Nginx软件服务是否部署成功;
		ls -l $NGX_DIR/
		#启动Nginx服务进程;
		$NGX_DIR/sbin/nginx
		#查看Nginx进程状态;
		ps -ef|grep nginx
		#关闭Firewalld防火墙服务;
		systemctl stop firewalld.service
	fi
}

function remove_nginx(){
	#remove nginx
	echo -e "\033[32m----------------\033[0m"
	read -p "确认是否删除$NGX_DIR/目录&服务,yes or no?" INPUT
	if [ $INPUT == "yes" -o $INPUT == "y" ];then
		$NGX_DIR/sbin/nginx -s stop
		rm -rf $NGX_DIR/
		rm -rf /usr/src/nginx*
	fi
}

function add_vhost(){
	#NGX_VHOST=$1
	#add vhosts
	echo -e "\033[32m----------------\033[0m"
	read -p "请输入要添加的虚拟主机名称,例如v1.xin.com: " NGX_VHOST
	cd $NGX_DIR/conf/
	grep "include vhosts" nginx.conf >>/dev/null
	if [ $? -ne 0 ];then
		\cp nginx.conf nginx.conf.bak
		#修改nginx.conf配置加入include vhosts;
		cat>nginx.conf<<-EOF
		worker_processes  1;
		events {
		    worker_connections  1024;
		}
		http {
		    include       mime.types;
		    default_type  application/octet-stream;
		    sendfile        on;
		    keepalive_timeout  65;
		    include vhosts/*;
		}
		EOF
		#创建vhost虚拟主机配置文件目录;
		mkdir -p vhosts
	fi
	
	cd vhosts/
	if [ ! -f $NGX_VHOST ];then
		#创建$NGX_VHOST虚拟主机配置文件&代码写入;
		touch $NGX_VHOST
		cat>$NGX_VHOST<<-EOF
		server {
		        listen       80;
		        server_name  $NGX_VHOST;
		        location / {
		            root   $NGX_ROOT_DIR/$NGX_VHOST;
		            index  index.html index.htm;
		        }
		}
		EOF
		#创建虚拟主机发布目录;
		mkdir -p $NGX_ROOT_DIR/$NGX_VHOST/
		#在虚拟主机发布目录新建index.html测试页面&代码;
		cat>$NGX_ROOT_DIR/$NGX_VHOST/index.html<<-EOF
		$NGX_VHOST test pages 2024.
		EOF
		#重启Nginx服务进程;
		$NGX_DIR/sbin/nginx -s reload
		cat $NGX_VHOST
		echo -e "\033[32m----------------\033[0m"
		echo -e "\033[32m$NGX_VHOST虚拟主机添加成功!\033[0m"
	fi
}

function remove_vhost(){
	#remove vhosts
	echo -e "\033[32m----------------\033[0m"
        read -p "请输入要删除的虚拟主机名称,例如v1.jf.com: " NGX_VHOST
	cd $NGX_DIR/conf/vhosts/
	cat $NGX_VHOST
	ls -l $NGX_VHOST
	rm -rf $NGX_VHOST
	rm -rf $NGX_ROOT_DIR/$NGX_VHOST/
	$NGX_DIR/sbin/nginx -s reload
	echo -e "\033[31m$NGX_VHOST虚拟主机删除完毕!\033[0m"
}

PS3="请输入Nginx管理脚本的菜单: "
select i in install_nginx remove_nginx add_vhost remove_vhost
do
	case $i in
		install_nginx)
		install_nginx
		;;
		remove_nginx)
		remove_nginx
		;;
		add_vhost)
		add_vhost
		;;
		remove_vhost )
		remove_vhost
		;;
	esac
done

执行脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值