一、一键安装nginx

前提:yum源需要配置完成、wget命令能够正常使用、设备能够上外网

脚本如下:

#!/bin/bash
#Author: Jiangfeng
#Created Time: 2019/08/03
#nginx service manage script

#定义变量
softname=nginx-1.17.2.tar.gz
soft=nginx-1.17.2

#网络下载Nginx
cd /usr/local/src
wget http://nginx.org/download/nginx-1.17.2.tar.gz
tar xf $softname
if [ $? != 0 ];then
    echo "软件包下载失败,请查看wget是否安装"
    exit 1
fi
#解决依赖
cd $soft
yum install -y pcre-devel zlib-devel openssl-devel gcc
if [ $? != 0 ];then
    echo "无法安装依赖包,请检查yum"
    exit 2
fi

#配置
./configure --prefix=/usr/local/nginx --with-http_ssl_module


if [ $? != 0 ];then
    echo "$soft 配置失败"
    exit 3
fi

#编译安装
make && make install

if [ $? != 0 ];then
    echo "编译失败"
    exit 4


cd /usr/local/src
rm -f $softname
rm -rf $soft

二、shell脚本来实现nginx的启动|关闭|重启|重新加载配置文件(reload)|查看状态

前提:nginx安装完成,并且在/usr/local目录下

         脚本名字叫做”nginx”,放在/etc/init.d/目录下

使用方法:

/etc/init.d/nginx start|stop|restart|reload|status

脚本如下:

#!/bin/bash
#Author: Jiangfeng
#Created Time: 2019/08/03
#nginx service manage script

#variable
##nginx安装路径
nginx_path=/usr/local/nginx
##nginx脚本启动路径
nginxd=$nginx_path/sbin/nginx
##nginx服务启动后存放PID的文件
nginx_pid_file=$nginx_path/logs/nginx.pid


#调用shell的函数库
if [ -f /etc/init.d/functions ];then
  . /etc/init.d/functions
else
  echo "not find file:/etc/init.d/functions"
  eixt 1
fi

#对nginx PID脚本文件进行判断
if [ -f $nginx_pid_file ];then
  pid=`cat $nginx_pid_file`
  nginx_process_num=`ps -ef  | grep $pid | grep -v "grep" | wc -l`
fi


#函数部分
##Nginx的启动函数
start () {
##如果nginx启动则报错
if [ -f $nginx_pid_file ] && [ $nginx_process_num -ne 0 ];then
  echo "Nginx服务已经启动"
else
##如果pid文件存在,但是没有进程,说明上一次非法关闭了nginx,造成pid文件没有自动删除,所以启动nginx之前先删除旧的pid文件
  if [ -f $nginx_pid_file ] && [ $nginx_process_num -eq 0 ];then
    rm -f $nginx_pid_file
    action "nginx start" $nginxd
  fi
  action "nginx start" $nginxd
fi

}

##Nginx关闭函数
stop () {
##如果Nginx服务没有启动,则提示服务没有启动
if [ -f $nginx_pid_file ] && [ $nginx_process_num -eq 0 ];then
  echo "Nginx服务没有启动"
  exit 2
else
  action "nginx stop" killall -s QUIT nginx
  rm -f $nginx_pid_file
fi

}

##Nginx重启函数
restart () {
stop
sleep 1
start
if [ $? -eq 0 ];then
  action "nginx 重启完成"
fi
}
##重新读取配置文件,不会更改pid
reload () {
if [ -f $nginx_pid_file ] && [ $nginx_process_num -ne 0 ];then
  action "nginx reload" killall -s HUP nginx
else
  echo "Nginx没有启动"
fi
}

##查看Nginx启动状态
status () {
tmp=`mktemp nginx.XXXX`
curl -s -I 127.0.0.1 1> $tmp
#curl -I 127.0.0.1 > $tmp &>/dev/null
sed -i "s/\r//" $tmp
val=`grep "HTTP" $tmp | cut -d ' ' -f3`
if [ "$val" == "OK" ];then
  echo "Nginx start"
else
  echo "Nginx stop"
fi
rm -f $tmp
}


#main
case $1 in 
start) start;;
stop) stop;;
restart) restart;;
reload) reload;;
status) status;;
*) echo "USAGE: $0 start|stop|restart|reload|status";;
esac