Write the Code. Change the World.

1月 29

先更新yum并安装依赖

尽可能的安装最新版本。如果 yum 安装的不是最新版本,可以先卸载掉,再下载源码编译安装。yum 安装新包之前,可以先查看下该包是否是最新版本。编译安装后,可以 ls -l 建立软链接,下次有新包,可以再覆盖安装。

# 更新 yum 包
yum update

# 查看某个安装,比如 gcc。 它会显示是否存在该安装,该安装的版本,是否已经安装等信息。
yum list gcc

需要安装:

  1. gcc gcc-c++。它可以编译 C,C++,Ada,Object C和Java等语言。
  2. pcre pcre-devel。PCRE(Perl Compatible Regular Expressions) 是一个Perl库,包括 perl 兼容的正则表达式库。nginx 的 http 模块使用 pcre 来解析正则表达式,所以需要在 linux 上安装 pcre 库,pcre-devel 是使用 pcre 开发的一个二次开发库。
  3. nginx 使用 zlib 对 http 包的内容进行 gzip。可是,不是用 Brotli 么。两个都装,装了也没事。gzip 编译安装来个。如果不编译,使用 yum 安装,版本达不到要求。
  4. 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

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注