Nginx 构建 RPM 包
构建参数修改
使用 cmake 命令配置项目,指定使用小型 OpenSSL 版本并设置构建类型为 Release。
cmake -DOPENSSL_SMALL=1 -DCMAKE_BUILD_TYPE=Release ..
安装依赖包
使用 dnf 命令安装一系列开发工具和库,确保编译环境完备。
dnf -y install \
    git \
    gcc \
    gcc-c++ \
    make \
    rpm-build \
    tar \
    golang \
    cmake \
    libunwind-devel \
    pcre2-devel \
    krb5-devel \
    libedit \
    libxml2-devel \
    libxslt-devel \
    gd-devel \
    libmaxminddb \
    perl-ExtUtils-Embed \
    perl-devel \
    c-ares-devel \
    openssl-devel \
    re2-devel \
    boost-devel \
    libstdc++-devel \
    yaml-cpp-devel \
    rake \
    brotli-devel \
    which \
    libatomic \
    libedit-devel \
    libmaxminddb-devel \
    libstdc++-static \
    lua-devel \
    perl-macros \
    xz
make 参数修改
使用 make 命令构建特定的模块,确保所有必要的模块都被编译。
make \
    base \
    module-auth-spnego \
    module-brotli \
    module-encrypted-session \
    module-fips-check \
    module-geoip \
    module-geoip2 \
    module-headers-more \
    module-image-filter \
    module-lua \
    module-ndk \
    module-njs \
    module-otel \
    module-passenger \
    module-perl \
    module-rtmp \
    module-set-misc \
    module-subs-filter \
    module-xslt
注意事项
由于上游修改移除了一个模块,使用 make all 构建时会缺失 module-passenger 模块。
!!! 注意
如果使用 make all 构建,将会缺失 module-passenger 模块。
Red Hat 系统
更新缓存并安装依赖包:
dnf makecache
dnf install -y \
    g++ \
    gcc \
    git \
    epel-release \
    libxslt \
    make \
    rpm-build \
    which \
    xz \
    'dnf-command(config-manager)'
dnf config-manager --set-enabled crb
Ubuntu 系统
更新包列表并安装依赖包:
sudo apt-get update
sudo apt-get install -y --no-install-suggests --no-install-recommends \
    curl \
    devscripts \
    equivs \
    git \
    libxml2-utils \
    lsb-release \
    xsltproc
Debian 创建用户并添加到 sudo 组
sudo adduser <username>
sudo usermod -aG sudo <username>
编译 BoringSSL
进入 BoringSSL 目录,创建构建目录并编译:
cd boringssl && \
mkdir build && \
cd build && \
cmake -DOPENSSL_SMALL=1 -DCMAKE_BUILD_TYPE=Release .. && \
make -j $(nproc)