SHELL编程实战Nginx多版本管理脚本

故事扮演 提交于 2019-11-29 08:56:10

转载来源  : Linux运维学习  :        https://mp.weixin.qq.com/s/w3zQmkw2FShY367rHi-PHA

 

1、从0开始源码编译构建Nginx WEB平台

1)学习Linux技术,重点不是学习系统安装、磁盘分区、命令操作、配置IP、远程连接等,学习的重点是基于Linux平台安装、部署、优化、排错、自动化的管理各种应用程序、软件服务,而Nginx、SHELL是目前互联网IT企业使用最广泛的软件之一。

2)Nginx是一款开源的、免费的WEB服务器软件,可以发布网站代码,提供网页信息服务,2019.3.12被F5硬件厂家以6.7亿收购,Nginx官方宣称其处理静态网页的并发达到5w/s,相当于Apache WEB整体性能的5-10倍。

3)从0开始基于MAKE源码编译,构建Nginx WEB平台,首先从Nginx官网下载Nginx软件包稳定版本:nginx-1.16.0.tar.gz,下载地址:

wget -c http://nginx.org/download/nginx-1.16.0.tar.gz 

4)Nginx软件包是基于tar工具打包、压缩的,所以通过tar工具解压缩,解压缩的指令如下:

#tar工具解压nginx软件包(-x extract,-z gzip,-v verbose,-f file);

tar -xzvf nginx-1.16.0.tar.gz

#cd切换至源代码目录;

cd nginx-1.16.0

5)因为Nginx基于C语言开发的源代码程序,默认不能被Linux操作系统直接使用的,需要通过C编译器将源代码文件编译生成二进制文件方可,要运行源码部署三个步骤。

6)预编译,./configure --prefix=/usr/local/nginx/ --user=www --group=www --with-http_stub_status_module

主要是检测Linux系统安装该软件所需的依赖环境,检测Linux系统是否存在GCC编译环境,指定软件服务部署的路径,自定义软件服务特定的功能和模块,会产生Makefile文件。

7)编译,make

主要是通过make编译工具,读取Makefile文件,调用Linux系统下GCC编译环境(C编译器&CC工具),将软件包中的源代码文件编译生成二进制文件。

Makefile文件用途,告知make编译工具,在编译源代码文件时,从哪个源代码文件开始编译至哪个源代码文件结束编译。

8)安装,make install

主要是将第二步make编译产生的二进制文件,拷贝或者安装至Linux操作系统指定的安装目录:--prefix=/usr/local/nginx/。

 

2、基于SHELL编程自动构建Nginx WEB平台(v1版本)

1)根据如上手工操作的MAKE源码方式,构建Nginx WEB平台,发现手工操作部署繁多、流程繁琐,如果企业要求部署100、1000台 Nginx WEB平台,通过手工方式会消耗大量的人力成本,可以引入SHELL编程提高运维人员的工作效率,减少运维人员的工作量。

n SHELL编程的概念?

n SHELL编程的意义?

n SHELL编程的规范?

#!/bin/bash

#2019年9月5日15:10:57

#auto install nginx web.

#by author www.jfedu.net

#####################

yum install -y wget tar make gzip gcc

yum install -y pcre pcre-devel zlib-devel

wget -c http://nginx.org/download/nginx-1.16.0.tar.gz

tar -xzf nginx-1.16.0.tar.gz

cd nginx-1.16.0

useradd -s /sbin/nologin www -M

./configure --prefix=/usr/local/nginx/ --user=www --group=www --with-http_stub_status_module

make

make install

/usr/local/nginx/sbin/nginx

ps -ef|grep -w nginx

netstat -tnlp|grep -w 80

setenforce 0

firewall-cmd --add-port=80/tcp --permanent

systemctl reload firewalld.service

iptables -A INPUT -m tcp -p tcp --dport 80 -j ACCEPT

service iptables restart

 

3、基于SHELL编程自动构建Nginx WEB平台(v2版本)

#!/bin/bash

#2019年9月5日15:10:57

#auto install nginx web.

#by author www.jfedu.net

####################

NGX_VER="1.16.0"

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=www --group=www --with-http_stub_status_module"

$NGX_YUM wget tar make gzip gcc

$NGX_YUM pcre pcre-devel zlib-devel

wget -c  $NGX_URL/$NGX_SOFT

tar -xzf $NGX_SOFT

cd $NGX_SRC

useradd -s /sbin/nologin www -M

./configure --prefix=$NGX_DIR/ $NGX_ARGS

make

make install

$NGX_DIR/sbin/nginx

ps -ef|grep -w nginx

netstat -tnlp|grep -w 80

setenforce 0

firewall-cmd --add-port=80/tcp --permanent

systemctl reload firewalld.service

iptables -A INPUT -m tcp -p tcp --dport 80 -j ACCEPT

service iptables restart

 

4、基于SHELL编程自动构建Nginx WEB平台(v3版本)

#!/bin/bash

#2019年9月5日15:10:57

#auto install nginx web.

#by author www.jfedu.net

#######################

NGX_VER="$1"

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=www --group=www --with-http_stub_status_module"

if [ $# -eq 0 ];then

        echo -e "\033[32m---------------\033[0m"

        echo -e "\033[32mUsage:{/bin/bash $0 1.2.3|1.12.2|help}\033[0m"

        exit 1

fi

CHECK_NUM=$(rpm -qa|grep -wcE "gcc|pcre-devel")

if [ $CHECK_NUM -lt 2 ];then

        $NGX_YUM wget tar make gzip gcc

        $NGX_YUM pcre pcre-devel zlib-devel

fi

wget -c  $NGX_URL/$NGX_SOFT

tar -xzf $NGX_SOFT

cd $NGX_SRC

useradd -s /sbin/nologin www -M

./configure --prefix=$NGX_DIR/ $NGX_ARGS

make

make install

$NGX_DIR/sbin/nginx

ps -ef|grep -w nginx

netstat -tnlp|grep -w 80

setenforce 0

firewall-cmd --add-port=80/tcp --permanent

systemctl reload firewalld.service

iptables -A INPUT -m tcp -p tcp --dport 80 -j ACCEPT

service iptables restart

 

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!