88 lines
2.7 KiB
Bash
88 lines
2.7 KiB
Bash
#!/bin/bash
|
|
export PATH=$PATH:/usr/sbin
|
|
# =================配置区域=================
|
|
# 如果想在运行时动态修改,可以使用: ./script.sh 1.25.3.1 3.2.0
|
|
OPENRESTY_VERSION="${1:-1.27.1.2}" # OpenResty 版本,默认为 1.27.1.1 (根据实际发布情况调整)
|
|
OPENSSL_VERSION="${2:-3.6.0}" # OpenSSL 版本,默认为 3.4.0 (3.6.0 可能尚未发布)
|
|
# =========================================
|
|
|
|
# 设置遇到错误立即停止
|
|
set -e
|
|
|
|
# 获取 CPU 核心数用于加速编译
|
|
JOBS=$(nproc 2>/dev/null || sysctl -n hw.ncpu 2>/dev/null || echo 2)
|
|
|
|
echo "=== 准备编译 OpenResty ${OPENRESTY_VERSION} 与 OpenSSL ${OPENSSL_VERSION} ==="
|
|
echo "=== 使用 ${JOBS} 个线程进行编译 ==="
|
|
|
|
# 0. 安装基础依赖 (根据系统不同,这里仅作提示,建议手动确认)
|
|
echo "正在检查基础编译工具..."
|
|
if command -v apt-get >/dev/null; then
|
|
# Debian/Ubuntu
|
|
sudo apt-get update
|
|
sudo apt-get install -y build-essential libpcre2-dev zlib1g-dev curl
|
|
elif command -v yum >/dev/null; then
|
|
# CentOS/RHEL
|
|
sudo yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel perl make curl
|
|
fi
|
|
|
|
# 创建工作目录
|
|
WORK_DIR=$(mktemp -d)
|
|
cd "${WORK_DIR}"
|
|
echo "=== 进入临时工作目录: ${WORK_DIR} ==="
|
|
|
|
# 1. 下载源码
|
|
echo "=== 正在下载源码... ==="
|
|
curl -fL --retry 5 -O "https://openresty.org/download/openresty-${OPENRESTY_VERSION}.tar.gz"
|
|
curl -fL --retry 5 -O "https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz"
|
|
|
|
# 2. 解压源码
|
|
echo "=== 正在解压源码... ==="
|
|
tar -zxvf "openresty-${OPENRESTY_VERSION}.tar.gz"
|
|
tar -zxvf "openssl-${OPENSSL_VERSION}.tar.gz"
|
|
|
|
# 清理压缩包
|
|
rm *.tar.gz
|
|
|
|
# 3. 进入 OpenResty 目录
|
|
cd "openresty-${OPENRESTY_VERSION}"
|
|
|
|
# 4. 配置编译参数 (Configure)
|
|
# 注意:OpenSSL 路径使用的是相对路径 ../openssl-VERSION
|
|
echo "=== 开始配置 (Configure)... ==="
|
|
./configure \
|
|
--with-http_ssl_module \
|
|
--with-http_v2_module \
|
|
--with-http_v3_module \
|
|
--with-http_realip_module \
|
|
--with-http_sub_module \
|
|
--with-stream \
|
|
--with-stream_ssl_module \
|
|
--with-stream_ssl_preread_module \
|
|
--with-openssl="../openssl-${OPENSSL_VERSION}"
|
|
|
|
# 5. 编译 (Make)
|
|
echo "=== 开始编译 (Make)... 这可能需要几分钟 ==="
|
|
# 使用 gmake 如果存在,否则使用 make
|
|
if command -v gmake >/dev/null; then
|
|
gmake -j"${JOBS}"
|
|
else
|
|
make -j"${JOBS}"
|
|
fi
|
|
|
|
# 6. 安装 (Install)
|
|
echo "=== 开始安装 (Install)... ==="
|
|
if command -v gmake >/dev/null; then
|
|
sudo gmake install
|
|
else
|
|
sudo make install
|
|
fi
|
|
|
|
# 7. 清理
|
|
echo "=== 清理临时文件... ==="
|
|
cd ~
|
|
rm -rf "${WORK_DIR}"
|
|
|
|
echo "=============================================="
|
|
echo "安装完成!"
|
|
echo "==============================================" |