LNMP 平滑升级 Tengine 笔记

Tengine是阿里的一项开源 Web 服务器项目 是基于 Nginx 的,针对大访问量的网站和性能都有比较好的优化!

为了配合LNMP的https,升级加入了http2的配置,要开启HTTP/2协议支持,需要在nginx 1.10以上版本并且需要openssl库的版本在1.0.2以上编译,那么开始吧

查看OpenSSL版本

openssl version

版本低于1.0.2的话就需要升级

一、升级OpenSSL

1、下载最新版的OpenSSL库编译安装,(这里我openssl-1.1.0f 做案例)

wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz
#git clone https://github.com/openssl/openssl.git  #或者从这里获取
tar zxvf openssl-1.1.0f.tar.gz
cd openssl-1.1.0f
./config --prefix=/usr/local/openssl
make && make install

2、替换旧版本库

mv /usr/bin/openssl  /usr/bin/openssl.old
mv /usr/include/openssl /usr/include/openssl.old
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
#链接新库文件
ln -s /usr/local/openssl/lib/libssl.so /usr/local/lib64/libssl.so
ln -s /usr/local/openssl/lib/libcrypto.so /usr/local/lib64/libcrypto.so
#检查更新后的openssl依赖库是否是1.1.0f
strings /usr/local/lib64/libssl.so | grep OpenSSL
#显示结果表明已升级到最新版本链接库
OpenSSL 1.1.0f  25 May 2017
#配置openssl库文件的搜索路径
echo '/usr/local/openssl/lib' >> /etc/ld.so.conf
#使修改后的搜索路径生效
ldconfig -v
#查看openssl版本,结果显示升级成功
openssl version
OpenSSL 1.1.0f  25 May 2017

如果第一步执行权限不够的话就手动吧

二、升级Tengine

1、安装/编译,整理好了 目前版本是2.3.2,2019-08-20 更新的

wget -c http://tengine.taobao.org/download/tengine-2.3.2.tar.gz && tar zxvf tengine-2.3.2.tar.gz && cd tengine-2.3.2/ && ./configure --with-http_ssl_module --with-http_realip_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_secure_link_module --with-http_v2_module --with-http_stub_status_module --with-http_sub_module --with-openssl=/root/openssl-1.1.0f && make && mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old && cp -r objs/nginx /usr/local/nginx/sbin/nginx && vi /usr/local/nginx/conf/nginx.conf

2、删除配置,执行完 会打开/usr/local/nginx/conf/nginx.conf,i进入找到并删除一下代码 这个是监控模块 根据需求来配置

location /status {
    stub_status on;
    access_log   off;
}

3、查看状态,找到上面代码之后果断删除,找不到就看看 Nginx 是否正常:

/usr/local/nginx/sbin/nginx -t
#或者
nginx -t

如果有“ Successful ”结尾那就是没问题,最后收尾就好了!

4、收尾工作:停止 Nginx 并重启然后查看目前版本:

kill -USR2 `cat /usr/local/nginx/logs/nginx.pid` && kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin` && /etc/init.d/nginx restart && /usr/local/nginx/sbin/nginx -v

如果你看到了 Tengine/2.3.2的话那就是成功升级了!

代码详细讲解

#下载压缩包
wget -c http://tengine.taobao.org/download/tengine-2.3.2.tar.gz 
#git clone https://github.com/alibaba/tengine.git  或者从这里获取
#解压
tar zxvf tengine-2.3.2.tar.gz
#进入目录
cd tengine-2.3.2/
#执行安装脚本
./configure --prefix=/usr/local/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--sbin-path=/usr/local/nginx/sbin/nginx \
--pid-path=/usr/local/nginx/nginx.pid \
--error-log-path=/home/wwwlogs/nginx-error.log \
--http-log-path=/home/wwwlogs/access.log \
--user=nginx \
--group=nginx \
#使支持https请求,需已安装openssl
--with-http_ssl_module \        
#获取真实IP模块,默认为关
--with-http_realip_module \                            
#提供寻求内存使用基于时间的偏移量文件
--with-http_flv_module \
#对具有.mp4, .m4v, and .m4a.扩展名的H.264/AAC格式文件提供服务器端的伪流支持
--with-http_mp4_module \
#模块将文件解压缩后并在响应头加上 "Content-Encoding: gzip" 返回给客户端。为了解决客户端不支持gzip压缩
--with-http_gunzip_module \ 
#预读gzip功能          
--with-http_gzip_static_module \
#nginx安全下载模块
--with-http_secure_link_module \
#HTTP/2 模块
--with-http_v2_module \
#模块监控 
--with-http_stub_status_module \
#替换网站响应内容
--with-http_sub_module \
#这个就是升级的那个openssl 的路径
--with-openssl=/root/openssl-1.1.0f                    

#编译                                                 
make
#备份配置                                   
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
#复制配置粘贴
cp -r objs/nginx /usr/local/nginx/sbin/nginx
#配置 Nginx
vi /usr/local/nginx/conf/nginx.conf
#查看状态
/usr/local/nginx/sbin/nginx -t
#杀进程             
kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
#杀进程              
kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
#重启Nginx
/etc/init.d/nginx restart
#查看Nginx版本
/usr/local/nginx/sbin/nginx -v                                  

这些模块也只是nginx的一部分,需要的话自己去查相关模块及用法吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章