【问题标题】:installing nginx module from bash script doesn't work从 bash 脚本安装 nginx 模块不起作用
【发布时间】:2020-04-09 05:52:31
【问题描述】:

我使用 Nginx v16.1.1,我想安装 modsecurity。

如果我从命令行运行下面列出的命令,ModSecurity 模块将作为已安装的模块出现在“nginx -V”中。

但是,如果我将脚本作为文件执行(例如 ./myscript.sh),它不会按预期安装模块。

#!/bin/sh

# Download and Install libModSecurity
cd /opt/
git clone https://github.com/SpiderLabs/ModSecurity
cd ModSecurity
git checkout v3/master
sh build.sh
git submodule init
git submodule update
./configure

# Build libModSecurity
make && make install
make check

# Download the ModSecurity Nginx connector
cd /opt/
git clone https://github.com/SpiderLabs/ModSecurity-nginx.git

#########
# Nginx #
#########

echo "Installing Nginx..."

# Download latest stable version
NGINX_VER='nginx-1.16.1'
cd /opt/
echo "Downloading $NGINX_VER..."
wget http://nginx.org/download/$NGINX_VER.tar.gz
tar xvzf $NGINX_VER.tar.gz
cd $NGINX_VER

./configure --prefix=/usr/share/nginx \
--with-debug \
--add-module=/opt/ModSecurity-nginx \
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' \
--with-ld-opt=' -Wl,-E'

# Install
make && make install

# Check installed modules
nginx -V

有什么想法吗?

【问题讨论】:

  • “将脚本作为脚本运行”是什么意思,这与“手动运行脚本”有何不同?
  • @tripleee 已编辑
  • 如果您之前安装了nginx,那么脚本中的nginx 可能会运行您最初安装的那个。 type nginx在这两种情况下输出什么?

标签: linux bash nginx


【解决方案1】:

./configure 之后的 \ 将阻止 --with-debug 被读取为命令,这可能是导致此问题的原因(如果您有必要的权限)

./configure \
--with-debug \
--add-module=/opt/ModSecurity-nginx \
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' \
--with-ld-opt=' -Wl,-E'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    相关资源
    最近更新 更多