前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ubuntu21编译安装tengine

Ubuntu21编译安装tengine

作者头像
用户6792968
发布2022-08-30 12:11:20
4470
发布2022-08-30 12:11:20
举报
文章被收录于专栏:fred 随笔fred 随笔

前言

服务器内部署了很多容器业务,但是许多业务都是需要用80端口对外发布的,会端口占用无法正常运行。 所以决定使用nginx去反向代理对应服务,这样,就可以用80端口发布多个业务。业务容器映射至不同端口上,实现业务需求

为什么选择tengine

tengine是淘宝团队基于nginx二次开发的web服务器项目,针对大访问量网站的需求,添加了很多高级功能和特性

tengine具备什么特性

  • 继承Nginx-1.18.0的所有特性,兼容Nginx的配置;
  • 支持HTTP的CONNECT方法,可用于正向代理场景;
  • 支持异步OpenSSL,可使用硬件如:QAT进行HTTPS的加速与卸载;
  • 增强相关运维、监控能力,比如异步打印日志及回滚,本地DNS缓存,内存监控等;
  • Stream模块支持server_name指令;
  • 更加强大的负载均衡能力,包括一致性hash模块、会话保持模块,还可以对后端的服务器进行主动健康检查,根据服务器状态自动上线下线,以及动态解析upstream中出现的域名;
  • 输入过滤器机制支持。通过使用这种机制Web应用防火墙的编写更为方便;
  • 支持设置proxy、memcached、fastcgi、scgi、uwsgi在后端失败时的重试次数;
  • 动态脚本语言Lua支持。扩展功能非常高效简单;
  • 支持按指定关键字(域名,url等)收集Tengine运行状态;
  • 组合多个CSS、JavaScript文件的访问请求变成一个请求;
  • 自动去除空白字符和注释从而减小页面的体积
  • 自动根据CPU数目设置进程个数和绑定CPU亲缘性;
  • 监控系统的负载和资源占用从而对系统进行保护;
  • 显示对运维人员更友好的出错信息,便于定位出错机器;
  • 更强大的防攻击(访问速度限制)模块;
  • 更方便的命令行参数,如列出编译的模块列表、支持的指令等;
  • 支持Dubbo协议;
  • 可以根据访问文件类型设置过期时间; ...

上手安装tengine

1. 环境介绍:

服务器系统版本

内核版本

服务器厂商

Ubuntu21.10

5.13.0-28-generic

腾讯云轻量服务器

2. 下载源码包

下载tengine 下载pcre

3. 解压源码包
代码语言:javascript
复制
tar xf tengine-2.3.3.tar.gz
tar xf pcre-8.37.tar.gz
4. 编译pcre
代码语言:javascript
复制
cd  pcre-8.37
./configure
# 报错缺少 C 编译环境
apt update
apt install g++ -y
# 重新编译
./configure
make && make install
cd ~
5. 编译安装tengine
代码语言:javascript
复制
cd tengine-2.3.3/
./configure  --prefix=/usr/local/tengine \
        --sbin-path=/usr/sbin/nginx \
        --modules-path=/usr/lib/tengine/modules \
        --conf-path=/usr/local/tengine/conf/nginx.conf \
        --error-log-path=/var/log/tengine/error.log \
        --http-log-path=/var/log/tengine/access.log \
        --pid-path=/var/run/nginx.pid \
        --lock-path=/var/run/nginx.lock \
        --http-client-body-temp-path=/var/cache/nginx/client_temp \
        --http-proxy-temp-path=/var/cache/nginx/proxy_temp \
        --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
        --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
        --http-scgi-temp-path=/var/cache/nginx/scgi_temp \
        --user=root  \
        --group=root  \
        --with-http_ssl_module \
        --with-http_realip_module \
        --with-http_addition_module \
        --with-http_sub_module \
        --with-http_dav_module \
        --with-http_flv_module \
        --with-http_mp4_module \
        --with-http_gunzip_module \
        --with-http_gzip_static_module \
        --with-http_random_index_module \
        --with-http_secure_link_module \
        --with-http_stub_status_module \
        --with-http_auth_request_module \
        --with-http_xslt_module=dynamic \
        --with-http_image_filter_module=dynamic \
        --with-http_geoip_module=dynamic \
        --with-threads \
        --with-stream \
        --with-stream_ssl_module \
        --with-stream_ssl_preread_module \
        --with-stream_realip_module \
        --with-stream_geoip_module=dynamic \
        --with-http_slice_module \
        --with-mail \
        --with-mail_ssl_module \
        --with-compat \
        --with-http_v2_module \
        --add-module=modules/ngx_http_upstream_check_module \
        --add-module=modules/ngx_http_upstream_session_sticky_module \
	--with-openssl=/usr/local/openssl
# 报错找不到openssl环境,编译一下openssl
 wget https://mirrors.cloud.tencent.com/openssl/source/openssl-1.1.1m.tar.gz
tar xf openssl-1.1.1m.tar.gz 
cd openssl-1.1.1m/
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl no-ssl2
make && make install
cat << eof >> /etc/profile.d/openssl.sh
export PATH=/usr/local/openssl/bin:\$PATH
export LD_LIBRARY_PATH=/usr/local/openssl/lib
export LC_ALL="en_US.UTF-8"
export LDFLAGS="-L/usr/local/openssl/lib -Wl,-rpath,/usr/local/openssl/lib"
eof
source /etc/profile.d/openssl.sh
# 继续编译tengine,再次报错,缺失zlib库
apt install zlib1g-dev -y
# 报错缺失libxml2/libxslt
apt install libxslt1-dev libxml2-dev -y
# 报错缺失gd库
apt install libgd-dev -y
# 报错缺失 geoip 库
apt install libgeoip-dev -y
# 接下来没有报错了,configure完成后,继续安装
make && make install 
# 编译报错,make[1]: *** [objs/Makefile:1987: /usr/local/openssl/.openssl/include/openssl/ssl.h] Error 127
# 修改编辑配置文件
vim auto/lib/openssl/conf

CORE_INCS="$CORE_INCS $OPENSSL/.openssl/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/.openssl/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/.openssl/lib/libcrypto.a"
# 修改为
CORE_INCS="$CORE_INCS $OPENSSL/include"
CORE_DEPS="$CORE_DEPS $OPENSSL/include/openssl/ssl.h"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libssl.a"
CORE_LIBS="$CORE_LIBS $OPENSSL/lib/libcrypto.a"
# 重新编译安装一遍,安装就完成了
6. 检查tengine是否可用了
代码语言:javascript
复制
nginx  -t
# 报错,/var/cache/nginx/client_temp 不存在,手动创建一下目录
mkdir -p /var/cache/nginx/

大功告成

编译过程中遇到许多依赖缺失,Ubuntu系统与centos不一样,centos下可以直接安装缺失依赖,Ubuntu下依赖包名字是不同的,如gcc-c++,centos可以直接安装,Ubuntu需要安装g++。 后续可以配置tengine,将业务反向代理出去,统一使用80端口发布,用域名区分业务。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 环境介绍:
  • 2. 下载源码包
  • 3. 解压源码包
  • 4. 编译pcre
  • 5. 编译安装tengine
  • 6. 检查tengine是否可用了
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档