Shell-Script

從鹽供應器編譯 nginx shell 失敗

  • December 22, 2013

我有一個鹽供應商,它正在呼叫一個 shell 腳本來編譯 Nginx 和一些需要的模組。這是對以下腳本的呼叫.sls

nginx:
#  pkg.installed:
#    - name: nginx
 file.directory:
   - name: /src/
   - user: root
   - group: root
   - mode: 644
 cmd.run:
   - name: /srv/salt/config/nginx/compiler.sh | bash
   - cwd: /
   - require:
     - pkg: nginx-compiler-base

所以它/srv/salt/config/nginx/compiler.sh | bash是執行的,它確實開始了。腳本執行是:

#!/bin/bash
cd ../../../../
cd /src/

nginxVersion="1.5.5" # set the value here from nginx website
wget http://nginx.org/download/nginx-$nginxVersion.tar.gz
tar -xzf nginx-$nginxVersion.tar.gz
#rm nginx # removes the soft link
ln -sf nginx-$nginxVersion nginx

cd nginx

   ./configure --with-http_auth_request_module \
   --with-http_gzip_static_module        \
   --with-http_stub_status_module        \
   --with-http_ssl_module                \
   --with-pcre                           \
   --with-file-aio                       \
   --with-http_realip_module             \
   --without-http_scgi_module            \
   --without-http_uwsgi_module           \
   --without-http_fastcgi_module

make
make install

這確實到達了去皮的部分。之後我得到這個作為輸出和失敗的消息:

    在此處輸入圖像描述

如果我ssh進入伺服器,那麼su,我可以執行腳本中的每一行並且它可以工作。我不確定為什麼當供應商失敗時它會失敗。

所以似乎原因是| bash我在呼叫腳本時正在使用。換句話說name: /srv/salt/config/nginx/compiler.sh | bash應該是name: /srv/salt/config/nginx/compiler.sh,所以鹽.sls應該是:

# Set Nginx to run in levels 2345.
nginx:
 file.directory:
   - name: /src/
   - user: root
   - group: root
   - mode: 644
 cmd.run:
   - name: /srv/salt/config/nginx/compiler.sh
   - cwd: /
   - require:
     - pkg: nginx-compiler-base

然後是我轉向的文件:

#!/bin/bash
cd /src

nginxVersion="1.5.7" # set the value here from nginx website
wget -N http://nginx.org/download/nginx-$nginxVersion.tar.gz
tar -xzf nginx-$nginxVersion.tar.gz
ln -sf nginx-$nginxVersion nginx

cd /src/nginx

#mkdir /tmp/nginx-modules
#cd /tmp/nginx-modules
#wget https://github.com/agentzh/headers-more-nginx-module/archive/v0.19.tar.gz
#tar -xzvf v0.19.tar.gz 

./configure --with-http_auth_request_module --with-http_dav_module --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-pcre --with-file-aio --with-ipv6 --with-http_realip_module --without-http_scgi_module --without-http_uwsgi_module

#\
#--add-module=/tmp/nginx-modules/headers-more-nginx-module-0.19 \

make
make install

執行並按預期安裝。希望這可以節省一些時間。

引用自:https://unix.stackexchange.com/questions/106192