Tengine(nginx)的安装及详解,它在Nginx的基础


1.介绍

1.1 Tengine

  • 本质上就是nginx,用法跟nginx一模一样,由淘宝团队进行二次开发。
  • 它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

1.2 nginx

  • nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件。它是一个俄罗斯人lgor sysoev开发的,作者将源代码开源出来供全球使用。
  • nginx比它大哥apache性能改进许多,nginx占用的系统资源更少,支持更高的并发连接,有更高的访问效率。
  • nginx不但是一个优秀的web服务软件,还可以作为反向代理,负载均衡,以及缓存服务使用。
  • 安装更为简单,方便,灵活。
  • 支持高并发,能支持几万并发连接
  • 资源消耗少,在3万并发连接下开启10个nginx线程消耗的内存不到200M
  • 可以做http反向代理和负载均衡
  • 支持异步网络i/o事件模型epoll

2. centos7.5安装nginx

tnginx官网链接http://tengine.taobao.org/download.html

2.1. yum安装(自动配置环境变量,但安装位置无法选择)

2.1.1. 卸载

停止Nginx软件
systemctl nginx stop
删除Nginx的自动启动
chkconfig nginx off
从源头删除Nginx
rm -rf /usr/sbin/nginx
rm -rf /etc/nginx
rm -rf /etc/init.d/nginx
再使用yum清理
yum remove nginx

2.1.2 安装

# 安装 
yum install nginx -y

# 如果显示没有的话
# 换一下源
配置腾讯云的yum源
1.下载centos源
wget -O /etc/yum.repos.d/CentOS-Base.repo   http://mirrors.cloud.tencent.com/repo/centos7_base.repo
2.下载epel源(第三方软件仓库)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo

3.清空yum缓存并且生成新的yum缓存
yum clean all
yum makecache
# 重新安装
yum install nginx -y

2.2 编译安装nginx

2.2.1 安装nginx前的依赖环境解决

yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y

2.2.2 安装

# 下载
 wget http://tengine.taobao.org/download/tengine-2.3.3.tar.gz
# 解压缩
 tar -zxvf tengine-2.3.3.tar.gz
 # 进入源码目录进行编译(指定位置安装)
 # ./configure --prefix=安装的位置
 ./configure --prefix=/opt/tngx230/
 # 安装 在源码目录
 make && make install
 
 # 如果编译错了,或者不想要了直接删除,重新解压/编译/安装
 rm -rf tngx230

2.3 环境变量的配置

2.3.1 echo $PATH

echo $PATH

# 原有的环境变量
usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

2.3.2 打开/etc/profile 在最后一行添加这一句

 vim /etc/profile
# 下列格式二选一即可(推荐第二种)
# 格式一
PATH="usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/tngx230/sbin"
# 格式二
PATH="$PATH:/opt/tngx230/sbin"

2.3.3 刷新

source /etc/profile

3. ubuntu安装nginx

3.1 apt-get安装(自动配置环境变量)

3.1.1 卸载

# 首先需要停止nginx的服务
sudo service nginx stop
# 删除nginx
sudo apt-get --purge remove nginx
# 自动移除全部不使用的软件包
sudo apt-get autoremove
# 列出与nginx相关的软件 并删除显示的软件
dpkg --get-selections|grep nginx

sudo apt-get --purge remove nginx
sudo apt-get --purge remove nginx-common
sudo apt-get --purge remove nginx-core

3.1.2 安装 

# apt-get安装
sudo apt-get install nginx
# 查看nginx是否安装成功
nginx -v
# 启动nginx
sudo systemctl nginx start
# 检查是否启动
sudo systemctl status nginx

3.2 源码编译安装

3.2.1 安装依赖

# 更新
sudo apt-get update
sudo apt-get install libxml2-dev build-essential openssl  libssl-dev make curl  libcurl4-gnutls-dev libjpeg-dev  libpng-dev libtool-bin bison  zlib1g-dev libpcre3 libpcre3-dev libssl-dev libxslt1-dev  libgeoip-dev libgoogle-perftools-dev libperl-dev libtool gcc libgd-dev libpcre2-dev -y

3.2.2 安装 

# 切换root用户,不然,会有权限不足,很可能安装失败,且安装成功,设置环境变量以后,也需要root去启动
su - root
# 安装tnginx
sudo wget http://tengine.taobao.org/download/tengine-2.3.3.tar.gz
# 解压缩
 sudo tar -zxvf tengine-2.3.3.tar.gz
 # 进入源码目录进行编译(指定位置安装)
 # ./configure --prefix=安装的位置
 sudo ./configure --prefix=/opt/tngx230/
 # 安装 在源码目录
 sudo make && make install
 

 # 如果编译错了,或者不想要了直接删除包即可,重新解压/编译/安装
 rm -rf tngx230

ps su -root 切换失败

使用su命令登录到root用户时,老是报"su:认证失败"错误。报这个错误的原因是root用户默认是被锁定了的,
# 解决办法
只要使用passwd命令重新设置下root密码即可。
sudo passwd 

su root 和 su - root 有什么区别
su 默认切到 root
su 与su - 的区别:
su 是不改变当前变量
su - 是切换到用户的变量
su只能获得root的执行权限,不能获得环境变量,而su - 是切换到root并获得root的环境变量及执行权限.

3.3 环境变量的配置

3.3.1 echo $PATH

echo $PATH

# 原有的环境变量
usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

 3.3.2 打开/etc/profile 在最后一行添加这一句

 vim /etc/profile
# 下列格式二选一即可(推荐第二种)
# 格式一
PATH="usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/opt/tngx230/sbin"
# 格式二
PATH="$PATH:/opt/tngx230/sbin"

3.3.3 刷新 

source /etc/profile

4. 常用nginx命令以及路径介绍(在ubuntu上需要切换到root上执行)

4.1 yum安装时,nginx的路径

以下是Nginx的默认路径:
Nginx配置路径:/etc/nginx/
错误日志:/var/log/nginx/error.log
访问日志:/var/log/nginx/access.log
默认站点目录:/usr/share/nginx/html
PID目录:/var/run/nginx.pid


事实上,只需知道Nginx配置路径,
其他路径均可在/etc/nginx/nginx.conf 
以及/etc/nginx/conf.d/default.conf 中查询到。

4.2 编译安装时,nginx的路径 

#解释目录
conf存放nginx配置文件的
html存放前端文件目录工,首页文件就在这里
logs存放nginx运行日志,错误日志的
sbin存放nginx执行脚本的

4.3 docker安装,nginx的路径

Nginx配置路径(日志)  /etc/nginx/nginx.conf
Nginx配置路径(server) /etc/nginx/conf.d/default.conf
错误日志 /var/log/nginx/error.log
访问日志 /var/log/nginx/access.log
默认站点目录 /usr/share/nginx/html
PID目录    /var/run/nginx.pid

4.4 nginx命令

常用命令
# 关闭防火请,不然nginx启动,无法访问
iptables -F
(1) 启动:
nginx
(2) 测试Nginx配置是否正确:
nginx -t
(3) 平滑重启,重新读取nginx配置文件
nginx -s reload
(4) 停止nginx:
nginx -s stop

4.5 附送uwsgi常用命令

启动:
uwsgi  --ini  uwsgi.ini

停止:
uwsgi --stop uwsgi.pid

重启:
uwsgi --reload uwsgi.pid

5. nginx.conf基础介绍

#配置文件内容如下
# 进程数
worker_processes  1;
events {
    worker_connections  1024;
}
# 核心代码
http {
    include       mime.types;
    default_type  application/octet-stream;
    # 定义nginx访问日志的格式 
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    # 访问日志的功能
    access_log  logs/access.log  main;
    # 推图片等静态文件压缩,提升传输效率
    gizp  on;
    #server被称为虚拟主机,可以有多个
    # 提供主页面的功能
    server {
    	# 监听的端口号 
        listen       80;
        # 填写服务器的域名,或者IP,或者localhost
        server_name  localhost;
        # 路径匹配,当你的请求来自,192.168.16.37/ 这样的url的时候,就进入以下的location路径匹配
        # location /--->的斜杠就是192.168.16.37/的斜杠
        location /{
            # root参数定义网页的根目录,
            root   html/;
            # 指定首页文件的名字,两个都是,可以删掉一个
            index  index.html index.htm;
        }
        # 错误页面,当请求返回404,给页面返回404页面,需要放在网页的根目录下,比如我的这个就是html/
        error_page  404              /404.html;
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }  
}   
    }

6. nginx错误页面优化

nginx的错误页面优化
就是打开nainx.conf里面的如下参数
error_page  404              /404.html;

7. nginx访问日志功能(解开注释)

  • 分全局以及主机,最外面的是全局,在server里面的当前主机的日志
log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

8. nginx禁止某个ip访问

# 单个禁止
location / {
deny 你想禁止的ip地址;
}

 9. nginx的状态信息功能,检测当前有多少个链接数

# 开启nginx状态功能
# 请求192.168.14.42/status 进入
location /status {
stub_status on;
}

10. 图解

vum -y install httpd-tools


-n requests # 执行的请求数,即一共发起多少请求。
-c concurrency #请求并发数。
-k    # 启用HTTP KeepAlive功能,即在一个HTTP会话中执行多个请求。

# 案例
ab -kc 1000 -n 100000 http://192.168.119.10/

相关内容