83 lines
2.6 KiB
Bash
Executable File
83 lines
2.6 KiB
Bash
Executable File
# -----------------------------------------------------------------------------
|
||
# Linux installation (no repo, curl source)
|
||
# -----------------------------------------------------------------------------
|
||
if [[ "$OS" == "Linux" ]]; then
|
||
echo "🐧 Installing on Linux ($OPENRESTY_ARCH)..."
|
||
|
||
# 1️⃣ 安装必要依赖
|
||
echo "📦 Installing build dependencies..."
|
||
sudo apt-get update -y
|
||
sudo apt-get install -y build-essential libpcre3 libpcre3-dev zlib1g-dev libssl-dev perl curl tar
|
||
|
||
# 2️⃣ 检查内存(若小于2GB则添加swap)
|
||
MEM_TOTAL=$(awk '/MemTotal/ {print $2}' /proc/meminfo)
|
||
if [ "$MEM_TOTAL" -lt 2097152 ]; then
|
||
echo "⚠️ Memory less than 2GB, adding 1GB swap..."
|
||
sudo fallocate -l 1G /swapfile || sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
|
||
sudo chmod 600 /swapfile
|
||
sudo mkswap /swapfile
|
||
sudo swapon /swapfile
|
||
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab >/dev/null
|
||
fi
|
||
|
||
# 3️⃣ 下载源码
|
||
VERSION=$(curl -s https://openresty.org/en/download.html | grep -Eo 'openresty-[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head -n 1 | cut -d'-' -f2)
|
||
URL="https://openresty.org/download/openresty-${VERSION}.tar.gz"
|
||
|
||
echo "📦 Downloading OpenResty v${VERSION}..."
|
||
curl -fSL "$URL" -o /tmp/openresty.tar.gz
|
||
|
||
echo "📂 Extracting..."
|
||
cd /tmp
|
||
tar -xzf openresty.tar.gz
|
||
cd "openresty-${VERSION}"
|
||
|
||
# 4️⃣ 编译配置
|
||
echo "⚙️ Configuring and building..."
|
||
./configure \
|
||
--prefix=/usr/local/openresty \
|
||
--with-http_ssl_module \
|
||
--with-http_realip_module \
|
||
--with-http_stub_status_module \
|
||
--with-stream \
|
||
--with-stream_ssl_module \
|
||
--with-threads
|
||
|
||
# 5️⃣ 编译与安装
|
||
make -j"${CORES}" || { echo "❌ Build failed, trying single-threaded build..."; make; }
|
||
sudo make install
|
||
|
||
# 6️⃣ 校验安装结果
|
||
if [ ! -x /usr/local/openresty/nginx/sbin/nginx ]; then
|
||
echo "❌ OpenResty binary not found after install."
|
||
exit 1
|
||
fi
|
||
|
||
# 7️⃣ systemd 服务
|
||
echo "⚙️ Setting up systemd service..."
|
||
sudo tee /lib/systemd/system/openresty.service >/dev/null <<'EOF'
|
||
[Unit]
|
||
Description=OpenResty Web Server
|
||
After=network.target
|
||
|
||
[Service]
|
||
Type=forking
|
||
PIDFile=/usr/local/openresty/nginx/logs/nginx.pid
|
||
ExecStart=/usr/local/openresty/nginx/sbin/nginx
|
||
ExecReload=/usr/local/openresty/nginx/sbin/nginx -s reload
|
||
ExecStop=/usr/local/openresty/nginx/sbin/nginx -s quit
|
||
PrivateTmp=true
|
||
LimitNOFILE=65535
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
EOF
|
||
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl enable --now openresty
|
||
sudo systemctl status openresty --no-pager || true
|
||
|
||
echo "✅ OpenResty v${VERSION} installed successfully on Linux"
|
||
exit 0
|
||
fi
|