转载来源 : 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 |