#!/bin/bash
#2020年2月16日
#auto_install_nginx_web.v3
#by fly
################################
#NGX_VER="$1"
NGX_CNF="nginx.conf"
NGX_YUM="yum install -y"
NGX_DIR="/usr/local/nginx"
NGX_SOFT="nginx-${NGX_VER}.tar.gz"
NGX_URL="http://nginx.org/download"
NGX_SRC="$(echo ${NGX_SOFT}|sed 's/\.tar.*//g')"
NGX_ARGS="--user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module"
#安装nginx
function nginx_install(){
$NGX_YUM gcc-c++ pcre pcre-devel zlib zlib-devel
$NGX_YUM wget make openssl openssl-devel net-tools
cd /usr/src
read -p "请选择版本号:(1.12.0|1.14.0|1.15.0|1.16.0):" NGX_VER
NGX_SOFT="nginx-${NGX_VER}.tar.gz"
NGX_SRC="$(echo ${NGX_SOFT}|sed 's/\.tar.*//g')"
wget -c $NGX_URL/$NGX_SOFT
tar -xf $NGX_SOFT
cd $NGX_SRC
useradd nginx
./configure --prefix=$NGX_DIR $NGX_ARGS
make && make install
$NGX_DIR/sbin/nginx
ps -ef|grep nginx
netstat -nutlp|grep -w 80
#setenforce 0
sed -i '/SELIUNX/s/enforcing/disabled/g' /etc/selinux/config
systemctl stop firewalld.service
echo "/usr/local/nginx/sbin/nginx" >>/etc/rc.local
echo -e "\033[32m nginx安装成功. \033[0m"
$NGX_DIR/sbin/nginx -v
exit
}
#卸载nginx
function nginx_remove(){
rm -rf $NGX_SOFT
rm -rf $NGX_DIR
netstat -nutlp|grep 80
systemctl stop firewalld
pkill nginx
ps -ef |grep nginx
echo -e "\033[32m nginx已卸载. \033[0m"
exit
}
#升级nginx
function nginx_update(){
$NGX_YUM gcc-c++ pcre pcre-devel zlib zlib-devel
$NGX_YUM wget make openssl openssl-devel net-tools
cd /usr/src
read -p "请选择版本号:(1.12.0|1.14.0|1.15.0|1.16.0):" NGX_VER
NGX_SOFT="nginx-${NGX_VER}.tar.gz"
NGX_SRC="nginx-$NGX_VER"
wget -c $NGX_URL/$NGX_SOFT
tar -xf $NGX_SOFT
cd $NGX_SRC
useradd nginx
./configure --prefix=$NGX_DIR $NGX_ARGS
make
mv $NGX_DIR/sbin/nginx $NGX_DIR/sbin/nginx.old
\cp objs/nginx $NGX_DIR/sbin/
$NGX_DIR/sbin/nginx -t
$NGX_DIR/sbin/nginx -s reload
netstat -nutlp|grep 80
systemctl stop firewalld
echo -e "\033[32m nginx升级成功. \033[0m"
$NGX_DIR/sbin/nginx -v
exit
} #添加虚拟主机
function virtual_add(){
#NGX_VHOST="$1"
cd $NGX_DIR/conf
grep -ai "include vhost" $NGX_CNF >>/dev/null 2>&1
if [ $? -ne 0 ];then
\cp $NGX_CNF ${NGX_CNF}.bak
grep -vE "#|^$" $NGX_CNF >${NGX_CNF}.swp
sed -i '/server/,$d' ${NGX_CNF}.swp
echo -e " include vhost/*;\n}" >>${NGX_CNF}.swp
\cp ${NGX_CNF}.swp $NGX_CNF
fi
mkdir -p vhost
cd vhost
read -p "请输入域名:(vv1.jf.com|vv2.jf.com|vv3.jf.com):" NGX_VHOST
cat>$NGX_VHOST<<EOF
server {
listen 80;
server_name $NGX_VHOST;
location / {
root html/$NGX_VHOST;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
EOF
cat $NGX_VHOST
mkdir -p $NGX_DIR/html/$NGX_VHOST
cat>$NGX_DIR/html/$NGX_VHOST/index.html<<EOF
<h1>$NGX_VHOST Test Pages.</h1>
<hr color-red>
EOF
$NGX_DIR/sbin/nginx -t >>/dev/null 2>&1
if [ $? -eq 0 ];then
echo -e "\033[32mnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok\033[0m"
echo -e "\033[32mnginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful\033[0m"
echo -e "\033[32m虚拟主机已添加!!!\033[0m"
$NGX_DIR/sbin/nginx -s reload
exit
fi
} #删除虚拟主机
function virtual_del(){
#NGX_VHOST="$1"
read -p "请输入域名:(vv1.jf.com|vv2.jf.com|vv3.jf.com):" NGX_VHOST
cd $NGX_DIR/conf/vhost/
ls ./
rm -rf $NGX_VHOST
rm -rf $NGX_DIR/html/$NGX_VHOST
$NGX_DIR/sbin/nginx -t >>/dev/null 2>&1
if [ $? -eq 0 ];then
echo -e "\033[33mnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok\033[0m"
echo -e "\033[33mnginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful\033[0m"
echo -e "\033[33m虚拟主机已删除!!!\033[0m"
$NGX_DIR/sbin/nginx -s reload
exit
fi
}
PS3=`echo -e "\033[32m/usr/bin/ $0 1)|2)|3)|4) 版本:\033[0m"`
select i in nginx_install nginx_remove nginx_update virtual_add virtual_del exit
do
case $i in
nginx_install )
nginx_install
;;
nginx_remove )
nginx_remove
;;
nginx_update )
nginx_update
;;
virtual_add )
virtual_add $1
;;
virtual_del )
virtual_del $1
;;
exit )
;;
* )
echo -e "\033[34m------------------------------ }\033[0m"
echo -e "\033[34mUsage:{/bin/sh $0 1)安装ningx }\033[0m"
echo -e "\033[34mUsage:{/bin/sh $0 2)卸载ningx }\033[0m"
echo -e "\033[34mUsage:{/bin/sh $0 3)升级ningx }\033[0m"
echo -e "\033[34mUsage:{/bin/sh $0 4)添加虚拟主机 请输入域名:www.xxx.com }\033[0m"
echo -e "\033[34mUsage:{/bin/sh $0 5)删除虚拟主机 请输入域名:www.xxx.com }\033[0m"
echo -e "\033[34m------------------------------ }\033[0m"
exit
esac
done

Nginx-多功能脚本的更多相关文章

  1. linux shell:nginx日志切割脚本

    需求原因:nginx不具备日志切割功能,日志量较大,方便分析. 实现目的:完成nginx日志切割,并根据时间命名   简要命令: mv /usr/local/tengine/logs/access.l ...

  2. Nginx实现负载均衡&Nginx缓存功能

    一.Nginx是什么 Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambl ...

  3. Nginx常用功能配置一

    Nginx常用功能配置 参数include配置 说明:如果日常工作中server标签存在太多,可以采用include配置模式,Nginx的主配置文件包含的所有虚拟主机的子配置文件会统一放入extra目 ...

  4. nginx常用功能和配置

    nginx常用功能和配置 1.nginx常用功能和配置 1.1 限流 1.2 压力测试工具--Ab 1.2.1安装 1.2.2 测试 1.2.3 返回值 1.3 limit_conn_zone 1.4 ...

  5. Nginx日志分析脚本

    目录 一.简介 二.脚本 一.简介 运维工作是一个比较复杂的工作,有时候面对上万条的日志,如何作分析?难道一条条的分析? 这估计看两眼就要打哈欠了吧?聪明的人会选择脚本,这就是为什么现在提倡自动化运维 ...

  6. mysql 自动备份和nginx自动安装脚本

    一.自动备份Mysql脚本: 如下脚本为mysql自动备份脚本,仅供参考,可以根据实际情况修改. #!/bin/sh #auto backup mysql #wugk #Define PATH定义变量 ...

  7. 关于mysql和Apache以及nginx的监控脚本怎么写会比较好的记录

    最近,自己业务进行上线,上线后,需要考虑的是对各种服务进行监控,包括(httpd服务,mysqld服务等),现在想以mysqld服务为例总结下那种方式的脚本最为专业和合理: (1).根据mysql的端 ...

  8. 转:Nginx RTMP 功能研究

    看点: 1.    Nginx 配置信息与使用.  (支持 rtmp与HLS配置) 2.    有ffmpeg 编译与使用,    命令行方式来测试验证客户端使用. 转自:http://blog.cs ...

  9. Nginx之旅系列 - Nginx日志功能 PK Linux内核printk

    题记:Nginx之旅系列是用来记录Nginx从使用到源码学习的点点滴滴,分享学习Nginx的快乐 Nginx 首页: http://nginx.org/ Nginx日志功能 PK Linux内核pri ...

  10. 自动部署Nginx和nfs并架设Nginx集群脚本

    本人经过多次尝试,简单完成了自动部署Nginx和nfs脚本,并且能够自动部署web反向代理集群,下面详细的阐述一下本人的思路.(以下脚本本人处于初学阶段,写的并不是很完善,所以需要后期进行整理和修正, ...

随机推荐

  1. 记一次.Net分布式事务死锁现象以及解决方法

    在本文中,将介绍一次遇到的.Net分布式事务死锁现象以及解决方法.我们将首先了解事务框架的构成,然后分析导致死锁的代码,最后提出解决方法. 事务框架 本次开发框架JMSFramework将分布式事务划 ...

  2. 暗黑2能用Java开发?还能生成APP?

    最近烧哥发现个宝藏项目,竟然用Java开发了暗黑2出来. 众所周知,暗黑2是暴雪开发的一款经典游戏,距今虽有20多年,仍然有很多粉丝. 粉丝延续热情的方式有很多,一种是做Mod,比如魔电,对怪物.技能 ...

  3. PREDIV与PLLMUL配置应用笔记

    下图为CH32V305/307和CH32F205/207时钟树框图,在此,以CH32V307VCT6芯片,外置25MHz晶振为例,简述图中PREDIV与PLLMUL的配置方法,最终实现144MHz系统 ...

  4. python笔记:第十二章文件

    1.打开文件 位于自动导入的模块IO中,无需手动导入. f = open('D:\M\test.txt') 若文件不存在,则报错 Traceback (most recent call last): ...

  5. Three.js使用InstancedMesh实现性能优化

    1. 引言 有这么一种场景:需要渲染一座桥,桥有很多桥柱,桥柱除了位置与倾斜角度不完全相同外,其他均相同,由于桥柱数量很大,使用three.js绘制较为卡顿,如何优化?注意,要求后续能选中某个桥柱 2 ...

  6. EntityCleanFramework

    EF几乎是按照领域的概念诞生,它可以和Clean结合(ECF是我新想出的名字).ECF 是为了统一业务架构开发方式,也可以说成在 微服务架构 中服务的通用开发方式.当有了统一开发方式后,协作将更上一层 ...

  7. Go的函数定义

    格式: 1 func function_name( [parameter list] ) [return_types] { 2 函数体 3 } 注释: func:函数由 func 开始声明 funct ...

  8. 明白error类型让你更快定位开发报错

    在javascript中,开发遇到的项目报错,很多时候都是通过 Error 这个类来展示的,清楚Error的类型可以更好定位项目中的问题 Error的类型 Error Error是所有其它错误的父类, ...

  9. [db2]数据备份与还原

    前言 备份还原db2数据库一般有两种方式,一种是使用db2 backup + db2 restore,另一种是db2move + db2look.前者备份的数据库文件不能使用后者的方式进行还原. 实例 ...

  10. 聚焦Web前端安全:最新揭秘漏洞防御方法

    在 Web 安全中,服务端一直扮演着十分重要的角色.然而前端的问题也不容小觑,它也会导致信息泄露等诸如此类的问题.在这篇文章中,我们将向读者介绍如何防范Web前端中的各种漏洞.[万字长文,请先收藏再阅 ...