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. Java(246-264)【List、Set】

    1.数据结构_栈 Stack先进后出 2.数据结构_队列 Queue先进先出 3.数据结构_数组 Array查询快.增删慢 需要创建一个新数组,将指定新元素存储在指定索引位置,再把原数组元素根 据索引 ...

  2. 【笔记】《算法竞赛入门》习题7-6 UVa12113_重叠的正方形

    title: 习题7-6 UVa12113_重叠的正方形 date: 2021-01-31 19:08:00 categories: 算法竞赛入门 tags: 数据结构 算法 UVa <算法竞赛 ...

  3. React函数式组件的性能优化

    优化思路 主要优化的方向有2个: 减少重新 render 的次数.因为在 React 里最重(花时间最长)的一块就是 reconction(简单的可以理解为 diff),如果不 render,就不会 ...

  4. 【Azure 应用服务】App Service/Azure Function的出站连接过多而引起了SNAT端口耗尽,导致一些新的请求出现超时错误(Timeout)

    问题描述 当需要在应用中有大量的出站连接时候,就会涉及到SNAT(源地址网络转换)耗尽的问题.而通过Azure App Service/Function的默认监控指标图表中,却没有可以直接查看到SNA ...

  5. 安全高效跨平台的. NET 模板引擎 Fluid 使用文档

    Liquid 是一门开源的模板语言,由 Shopify 创造并用 Ruby 实现.它是 Shopify 主题的主要构成部分,并且被用于加载店铺系统的动态内容.它是一种安全的模板语言,对于非程序员的受众 ...

  6. ListBox控件的另一种数据绑定方式

    把DataTemplate防止ListBox中的绑定 <ListBox x:Name="ListBoxName"> <ListBox.ItemTemplate&g ...

  7. 软件篇-02-基于ZED 2和ORB_SLAM2的SLAM实践

    时隔两周,我又回来了. ​ 本期内容如题,ZED 2的SDK功能还是挺多的,包括轨迹跟踪,实时建图等等.虽然由于是商业产品,我看不到他们的源代码,但是根据使用情况来看,ZED 2内部是采用了IMU和光 ...

  8. wordpress 自定义路由及展示页

    wordpress 自定义路由及展示页 注册domain/test这个路由 wordpress 有重写url的方法,叫 add_rewrite_rule().在function.php中加入如下代码段 ...

  9. Python简易远控(单线程版)

    1. 技术:管道通信,流文件处理,socket基础 2. Tips: 默认IP:127.0.0.1 默认端口:7676 3. 代码样例: 服务端: #!/usr/bin/env python # en ...

  10. 攻防世界Web刷题记录(新手区)

    攻防世界Web刷题记录(新手区) 1.ViewSource 题如其名 Fn + F12 2.get post 3.robots robots.txt是搜索引擎中访问网站的时候要查看的第一个文件.当一个 ...