先更新yum并安装依赖
尽可能的安装最新版本。如果 yum 安装的不是最新版本,可以先卸载掉,再下载源码编译安装。yum 安装新包之前,可以先查看下该包是否是最新版本。编译安装后,可以 ls -l 建立软链接,下次有新包,可以再覆盖安装。
# 更新 yum 包
yum update
# 查看某个安装,比如 gcc。 它会显示是否存在该安装,该安装的版本,是否已经安装等信息。
yum list gcc
需要安装:
- gcc gcc-c++。它可以编译 C,C++,Ada,Object C和Java等语言。
- pcre pcre-devel。PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。
- nginx 使用 zlib 对 http 包的内容进行 gzip。可是,不是用 Brotli 么。两个都装,装了也没事。gzip 编译安装来个。如果不编译,使用 yum 安装,版本达不到要求。
- bbzip2 是一个基于Burrows-Wheeler 变换的无损压缩软件,压缩效果比传统的LZ77/LZ78压缩算法来得好。
yum install gcc gcc-c++
yum install pcre pcre-devel
yum install zlib zlib-devel
yum install bzip2
手动安装 openssl3
https://www.openssl.org/source/
当前最新版本是 openssl-3.0.7.tar
cd /usr/local/src/openssl
wget https://www.openssl.org/source/openssl-3.0.7.tar.gz
tar -xzvf openssl-3.0.7.tar.gz
mkdir /usr/local/openssl
cd openssl-3.0.7
# 指定安装路径为 /usr/local/openssl
./config --prefix=/usr/local/openssl
如果出现如下这样的报错信息,需要安装 perl-CPAN
This is perl 5, version 26, subversion 3 (v5.26.3) built for x86_64-linux-thread-multi
(with 57 registered patches, see perl -V for more detail)
Copyright 1987-2018, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.
Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.
安装 perl-CPAN
# 安装perl-CPAN
yum install -y perl-CPAN
# 进入CPAN的shell模式,不懂的,遇到确认就直接回车(3+1次),一切默认
# 过程可能有点慢,需要下载相关依赖,耐心等待执行结果
perl -MCPAN -e shell
# 出现 cpan[1]> 提示,输入下边命令继续,时间会有点久
install IPC/Cmd.pm
# 出现 cpan[2]>提示,输入 exit 退出
exit
再重新执行
./config --prefix=/usr/local/openssl
然后,你会发现出现 OpenSSL has been successfully configured
的提示。如果中间环节有问题,请查找解决。
编译安装(这个环节有点久)
make && make install
# 安装完成后,进入 bin 目录
cd /usr/local/openssl/bin
# 查看版本号(发现会报错)
./openssl version
报错如下:
./openssl: error while loading shared libraries: libssl.so.3: cannot open shared object file: No such file or directory
libssl.so.3文件在/usr/local/openssl/lib64目录下面,需要配置到共享库中:
vim /etc/ld.so.conf
# 换行尾部添加
/usr/local/openssl/lib64
# 保存退出,执行下边命令使生效
ldconfig
建立软链接
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssls
# 查看版本号
openssl3 version
安装 cmake
https://blog.vini123.com/289
当前最新版本 https://github.com/Kitware/CMake/releases/download/v3.25.2/cmake-3.25.2-linux-x86_64.tar.gz
编译安装 zlib (可以先 yum,如果版本不合适,再回来编译按装)
https://blog.vini123.com/299
编译安装zlib2 (可以先 yum,如果版本不合适,再回来编译按装)
https://blog.vini123.com/300
编译安装 libzip (可以先 yum,如果版本不合适,再回来编译按装)
这里还是编译安装吧。php8 对 libzip 要求有点特殊。
https://blog.vini123.com/290
安装 ngx_brotli
https://blog.vini123.com/302
cd /tmp
git clone https://github.com/google/ngx_brotli.git
cd /tmp/ngx_brotli/deps
rm -rf brotli
git clone https://github.com/google/brotli.git
cd /tmp/ngx_brotli
git submodule update --init
方法一: 重新编译
通过nginx -V查看原有的编译参数,在编译的时候通过--add-module=把模块编译进去。
比如:
./configure [nginx -V 原有的configure arguments] --add-module=/tmp/ngx_brotli
make && make install
方法二:动态编译
./configure --with-compat --add-dynamic-module=/tmp/ngx_brotli
make modules
https://blog.csdn.net/zyy247796143/article/details/125539223
https://juejin.cn/post/7060352308718075935
安装 nginx more_clear_headers 模块
https://github.com/openresty/headers-more-nginx-module/tags
https://github.com/openresty/headers-more-nginx-module
https://blog.vini123.com/385
安装 nginx
最终的配置,上边做的那么多就是为了这个。
./configure --user=nginx --group=nginx --prefix=/alidata/service/nginx --pid-path=/alidata/service/nginx/run/nginx.pid --with-http_stub_status_module --with-threads --with-file-aio --with-pcre-jit --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_realip_module --with-http_addition_module --with-stream --with-stream_ssl_module --with-stream_ssl_preread_module --with-stream_realip_module --with-http_slice_module --with-pcre --with-openssl=/usr/local/src/default/openssl-3.0.8 --with-openssl-opt=enable-tls1_3 --add-module=/usr/local/src/nginx/ngx_brotli --add-module=/usr/local/src/nginx/headers-more-nginx-module-0.34
https://blog.vini123.com/298