创建以今天日期命名的文件夹
[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
执行脚本