shell脚本安装nginx和启动关闭nginx
一、一键安装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