Nginx学习笔记(一):介绍和部署

Nginx 和Tengine介绍

Nginx

(1)Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一 个 IMAP/POP3/SMTP 代理服务器。

  • 第一个公开版本0.1.0发布于2004年10月4日
  • 其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名
  • 官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定
  • 2011年6月1日,nginx 1.0.4发布。
  • Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器
  • 并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发
  • 其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:新浪、网易、腾讯等。

(2)功能:

  • web服务器
  • web reverse proxy
  • smtp reverse proxy

(3)Nginx和apache的优缺点

  • 1、nginx相对于apache的优点:轻量级,同样起web 服务,比apache 占用更少的内存及资源抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx能保持低资源低消耗高性能;高度模块化的设计,编写模块相对简单;社区活跃,各种高性能模块出品迅速
  • 2.apache 相对于nginx 的优点:rewrite ,比nginx 的rewrite 强大;模块超多,基本想到的都可以找到;少bug ,nginx 的bug 相对较多
  • 3、Nginx 配置简洁, Apache 复杂
  • 4、最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程

Tengine

Tengine 是nginx的加强版,封装版,淘宝开源

  • 官网http://tengine.taobao.org/
  • 动态模块加载(DSO)支持。加入一个模块不再需要重新编译整个Tengine;
  • 支持SO_REUSEPORT选项,建连性能提升为官方nginx的三倍;
  • 支持SPDY v3协议,自动检测同一端口的SPDY请求和HTTP请求;
  • 流式上传到HTTP后端服务器或FastCGI服务器,大量减少机器的I/O压力;
  • 更加强大的负载均衡能力,包括一致性hash模块、会话保持模块,还可以对后端的服务器进行主动健康检查,根据服务器状态自动上线下线,以及动态解析upstream中出现的域名;
  • 输入过滤器机制支持。通过使用这种机制Web应用防火墙的编写更为方便;
  • 支持设置proxy、memcached、fastcgi、scgi、uwsgi在后端失败时的重试次数
  • 动态脚本语言Lua支持。扩展功能非常高效简单;
  • 支持管道(pipe)和syslog(本地和远端)形式的日志以及日志抽样;
  • 支持按指定关键字(域名,url等)收集Tengine运行状态;
  • 组合多个CSS、JavaScript文件的访问请求变成一个请求;
  • 自动去除空白字符和注释从而减小页面的体积

Tengine安装

为了锻炼自己的写脚本的能力,所以这里我写了一个脚本自动化安装Tenginx, 相关软件和配置文件下载地址请点击这里

将这三个文件上传到/root目录下,给脚本添加执行权限执行脚本即可

chmod 755 tengine.sh
sh tengine.sh

脚本内容:

#!/bin/bash

mkdir -p /root/nginx_install/
touch /root/nginx_install/nginx_install.log
log=/root/nginx_install/nginx_install.log
Timestamp=`date "+%Y-%m-%d %H:%M:%S"`

# 检查环境
check_env()
{
    echo -e  "$Timestamp 关闭防火墙" >> $log
    systemctl stop firewalld >> $log 2>&1
    echo -e  "$Timestamp 禁用防火墙开机启动" >> $log
    systemctl disable firewalld >> $log 2>&1
    echo -e  "$Timestamp 禁用selinux" >> $log
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
    setenforce 0 >> $log 2>&1
    echo -e  "$Timestamp 检查防火墙状态" >> $log
    systemctl status firewalld >> $log 2>&1
    status=`echo $?`
    if [ $status -gt 0 ]
    then
        echo -e "$Timestamp 环境初始化完成 " >> $log
        echo -e "\033[1;32m$Timestamp 环境初始化完成 \033[0m"
    else
        echo -e "$Timestamp 防火墙关闭失败,请手动关闭 " >> $log
        echo echo -e  "\033[1;31m$Timestamp 防火墙关闭失败,请手动关闭 \033[0m" && exit
    fi
}

# 安装依赖    
install_rely()
{
    echo -e  "$Timestamp 安装依赖" >> $log
    yum -y install gcc openssl-devel pcre-devel zlib-devel dos2unix >> $log 2>&1
    if [ $status -gt 0 ]
        then
                echo -e "$Timestamp 依赖安装完成 " >> $log
                echo -e "\033[1;32m$Timestamp 依赖安装完成 \033[0m"
        else
                echo -e "$Timestamp 依赖安装失败 " >> $log
                echo echo -e  "\033[1;31m$Timestamp 依赖安装失败,请检查你的yum源 \033[0m" && exit
        fi
}

#编译安装tengine
install_tengine()
{
    echo -e  "$Timestamp 创建文件夹" >> $log
    HOME_DIR=/var/tmp/nginx/client/
    if [ ! -d $HOME_DIR ]; then
        echo "create dir $HOME_DIR" >> $log
        mkdir -p $HOME_DIR
    fi

    echo -e  "$Timestamp 编译tengine" >> $log
    tar -zxf tengine-2.1.0.tar.gz
    cd tengine-2.1.0/
    ./configure --prefix=/opt/sxt/soft/tengine-2.1.0/ --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client/ --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre >> $log
    make >> $log
    make install >> $log
    if [ $status -gt 0 ]
        then
                echo -e "$Timestamp 编译安装成功 " >> $log
                echo -e "\033[1;32m$Timestamp 编译安装成功 \033[0m"
        else
                echo -e "$Timestamp 编译安装失败 " >> $log
                echo echo -e  "\033[1;31m$Timestamp 编译安装失败,请检查你的配置 \033[0m" && exit
        fi
}

# 拷贝配置文件
copy_files()
{
    echo -e  "$Timestamp 拷贝文件" >> $log
    cd /root
    cp ./nginx /etc/rc.d/init.d
    dos2unix /etc/rc.d/init.d/nginx >> $log 2>&1
    chmod 755 /etc/rc.d/init.d/nginx
    if [ $status -gt 0 ]
        then
                echo -e "$Timestamp 拷贝文件完成 " >> $log
                echo -e "\033[1;32m$Timestamp 拷贝文件完成 \033[0m"
        else
                echo -e "$Timestamp 拷贝文件失败 " >> $log
                echo echo -e  "\033[1;31m$Timestamp 拷贝文件失败,请检查你的配置文件 \033[0m" && exit
        fi

}

# 启动tengine
start_nginx()
{
    echo -e  "$Timestamp 启动nginx" >> $log
    /etc/rc.d/init.d/nginx start >> $log
    chkconfig --add nginx
    chkconfig nginx on
    if [ $status -gt 0 ]
        then
                echo -e "$Timestamp 启动tengine成功 " >> $log
                echo -e "\033[1;32m$Timestamp 启动tengine成功 \033[0m"
        else
                echo -e "$Timestamp 启动tengine失败,请检查你的配置文件 " >> $log
                echo echo -e  "\033[1;31m$Timestamp 启动tengine失败,请检查你的配置文件 \033[0m" && exit
        fi

}

#检查是否安装成功
check_server()
{
    ip=`ip -o -f inet addr |grep -E eno'[0-9]' |awk '{print $4}'|awk -F '/' '{print $1}'`
    curl http://$ip >> $log 2>&1
    if [ $status -gt 0 ];then
        echo -e "$Timestamp tengine安装成功 " >> $log
        echo -e "\033[1;32m$Timestamp tengine安装成功 \033[0m"
        echo -e "\033[1;32m请在浏览器输入:http://$ip 访问页面 \033[0m"
    else
        echo -e "$Timestamp tengine安装失败,请检查配置文件 " >> $log
        echo -e "\033[1;31m$Timestamp tengine安装失败,请检查配置文件 \033[0m" && exit    
    fi
}

check_env;
install_rely;
install_tengine;
copy_files;
start_nginx;
check_server;

安装完成如图所示:

3-2-1

|| 版权声明
作者:废权
链接:https://blog.yjscloud.com/archives/81
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归《废权的博客》所有,欢迎转载,转载请保留原文链接。
THE END
分享
二维码
Nginx学习笔记(一):介绍和部署
Nginx 和Tengine介绍 Nginx (1)Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一 个 IMAP/POP3/SMTP 代理服务器。 第一个公……
<<上一篇
下一篇>>
文章目录
关闭
目 录