1 #!/bin/bash
2 #要求:检查本机是否已编译安装nginx,检查本机是否存在nginx源码包,编译安装nginx,实现开启、停止、查看状态等功能
3 #检查是否已编译安装nginx
4 while :
5 do
6 read -p "本机是否安装nginx?yes查看nginx状态,no跳转至安装nginx(yes/no):" wh_do
7 if [ "$wh_do" == "no" ];then
8 while :
9 do
10 read -p "是否确定编译安装nginx(yes/no)no表示退出脚本:" YON
11 if [ "$YON" == "yes" ];then
12 check_install=$(ls /usr/local |grep nginx)
13 if [ -n "$check_install" ];then
14 echo "已经编译安装nginx"
15 break
16 else
17 #配置本地yum源
18 mount_point=$(ls / |grep local_dvd)
19 if [ -z "$mount_point" ];then
20 mkdir /local_dvd
21 mount /dev/cdrom /local_dvd
22 echo "/dev/cdrom /local_dvd iso9660 defaults 0 0 " >> /etc/fstab
23 rm -rf /etc/yum.repos.d/*.repo
24 echo "[local]
25 name=local
26 baseurl=file:///local_dvd
27 enabled=1
28 gpgcheck=0 " >> /etc/yum.repos.d/local.repo
29 fi
30 check_have=$(find / -name nginx-*.tar.gz |head -n 1)
31 if [ -z "$check_have" ];then
32 yum -y install wget
33 wget http://nginx.org/download/nginx-1.16.0.tar.gz
34 fi
35 check_have=$(find / -name nginx-*.tar.gz |head -n 1)
36 #检查防火墙环境
37 se_status=$(getenforce)
38 if [ "$se_status"=="Enforcing" ];then
39 setenforce 0
40 sed -i "s/=Enforcing/=Disabled/g" /etc/selinux/config
41 fi
42 systemctl start firewalld
43 systemctl enable firewalld
44 #安装依赖包
45 yum -y install gcc-* zlib-* pcre-*
46 #解压nginx包
47 tar xzf $check_have -C /root/
48 #编译安装nginx
49 cd /root/nginx-*
50 pwd
51 ./configure && make && make install
52 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
53 fi
54 if `firewall-cmd --list-port |grep 80/tcp`
55 then
56 break
57 else
58 firewall-cmd --add-port=80/tcp
59 firewall-cmd --add-port=80/tcp --permanent
60 fi
61 break
62 elif [ "$YON" == "no" ];then
63 echo "退出脚本"
64 exit
65 else
66 echo "请输入正确的内容"
67 continue
68 fi
69 done
70 #nginx启动、停止、查看状态
71 elif [ "$wh_do" == "yes" ];then
72 check_install=$(ls /usr/local |grep nginx)
73 if [ -z "$check_install" ];then
74 echo "您未编译安装nginx,请先安装"
75 continue
76 fi
77 while :
78 do
79 read -p "请输入你要执行操作的序号(0-退出;1-开启;2-停止;3-重启;4-查看状态)" NUM
80 case $NUM in
81 0)
82 echo "退出脚本"
83 exit
84 ;;
85 1)
86 PID=$(ps aux |grep nginx |grep master |awk '{print $2}')
87 if [ -z "$PID" ];then
88 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
89 echo "启动nginx"
90 else
91 echo "nginx已经启动"
92 fi
93 ;;
94 2)
95 PID=$(ps aux |grep nginx |grep master |awk '{print $2}')
96 if [ -z "$PID" ];then
97 echo "nginx已经停止"
98 else
99 echo "停止nginx"
100 kill $PID
101 fi
102 ;;
103 3)
104 PID=$(ps aux |grep nginx |grep master |awk '{print $2}')
105 if [ -n "$PID" ];then
106 kill $PID
107 fi
108 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
109 echo "重启nginx"
110 ;;
111 4)
112 PID=`ps aux |grep nginx |grep master |awk '{print $2}'`
113 if [ -z "$PID" ];then
114 echo "nginx已停止"
115 else
116 echo "nginx已开启"
117 fi
118 ;;
119 *)
120 echo "请输入正确的序号"
121 ;;
122 esac
123 done
124 else
125 echo "请输入正确的选项"
126 continue
127 fi
128 done

shell基础之多功能nginx(安装、重启、停止等)的更多相关文章

  1. linux笔记:shell基础-bash基本功能

    历史命令的调用: 命令和文件补全(如果当前有多个可选的补全,则按2次tab键,可以列出所有的可选项): 命令别名: 让别名永久生效: 删除别名: bash常用快捷键: 标准输入输出: 输出重定向: 输 ...

  2. Linux学习 -- Shell基础 -- Bash基本功能

    历史命令 history -c   clear -w   写入 ~/.bash_history 默认保存1000条, 可在/etc/profile中修改 调用 Tab补全 命令.目录.文件 命令别名 ...

  3. ubuntu 14.04(desktop amd 64) nginx 安装启动停止

    sudo apt-get install nginx 关闭: sudo service nginx stop 启动: sudo nginx

  4. 1.Nginx安装

    1.Nginx安装配置 Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发的高性能 Web和 反向代理服务器,也是一个 IMAP/POP3/ ...

  5. Nginx入门篇-基础知识与linux下安装操作

    我们要深刻理解学习NG的原理与安装方法,要切合实际结合业务需求,应用场景进行灵活使用. 一.Nginx知识简述Nginx是一个高性能的HTTP服务器和反向代理服务器,也是一个 IMAP/POP3/SM ...

  6. nginx安装及基础配置(含jdk安装及配置)

    0.jdk安装配置 #下载相应的jdk软件包,然后解压安装,我这里包名称为:jdk-7u25-linux-x64.tar.gz tar -xzf jdk-7u25-linux-x64.tar.gz m ...

  7. nginx安装和基础代理配置

    mac上执行 npm install nginx 安装好后运行nginx sudo nginx 一般mac下nginx会安装在 /usr/local/etc/nginx 下 里面的nginx.conf ...

  8. LVS + Keepalived + Nginx安装及配置

    1.概述 上篇文章<架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层>(http://blog.csdn.net/yinwenjie/artic ...

  9. 架构设计:负载均衡层设计方案(7)——LVS + Keepalived + Nginx安装及配置

    1.概述 上篇文章<架构设计:负载均衡层设计方案(6)——Nginx + Keepalived构建高可用的负载层>(http://blog.csdn.net/yinwenjie/artic ...

随机推荐

  1. [面试仓库]CSS面试题汇总--布局篇

    一,盒模型   说到 CSS 布局这块的内容,首当其冲的就是我们的盒模型宽度计算问题,在开始我们的问题之前,我们首先要搞懂这些概念: 盒模型里面的内容(content): 也就是实实在在要展现的内容, ...

  2. Ubuntu所有版本下载及更新源

    官网:https://www.ubuntu.com/download/desktop没找到历史版本,且下载速度很慢在网易镜像站下载ubuntu:网址:http://mirrors.163.com/ub ...

  3. 2. Mybatis Select

    mybatis select是mybatis 中最常用的元素之一. 对简单的查询,select 元素的配置是相当简单的: <?xml version="1.0" encodi ...

  4. 女娲造人引发思考之Java设计模式:工厂模式

    目录 工厂模式的几种形态 简单工厂模式 示例 结构 优缺点 女娲抟土造人 工厂方法模式 结构 女娲举绳造人 抽象工厂模式 结构 女娲造万物 工厂模式的几种形态 工厂模式专门负责将大量有共同接口的类实例 ...

  5. 横趟!面试中遇到的 ZooKeeper 问题

    本文作者:HelloGitHub-老荀 本文是 HelloZooKeeper 系列的最后一篇文章,接下来主要聊聊面试中如果被问到 ZooKeeper 的问题如何回答,也可以当作学完本系列的测试. 准备 ...

  6. The Dole Queue UVA - 133

     In a serious attempt to downsize (reduce) the dole queue, The New National Green Labour Rhinoceros ...

  7. Unity基础—Computer Shader

    Computer Shader是什么? Computer shader是一段运行在GPU上的一段程序. 什么时候用Computer shader? 假如我们把一个cube当作单独的点,用许多个(cub ...

  8. 473. Matchsticks to Square

    Remember the story of Little Match Girl? By now, you know exactly what matchsticks the little match ...

  9. Python socket(TCP阻塞模式)基础程式

    前置知识:Python基础语法,socket库 tips: 1. 默认HOST_IP:127.0.0.1 2. 默认HOST_PORT:7676 参考代码: 1. 客户端程式 #!/usr/bin/e ...

  10. hdu4515 小模拟

    题意:       给你当期日期,问前D天和后D天的年月日. 思路:      直接模拟就行了水题,对了别忘了题目2013,3,5要输出这样的2013/03/05. #include<stdio ...