Tinkoff/Nginx-builder

nginx: [emerg] unknown directive "dav_methods"

patsevanton opened this issue · 6 comments

Config

server {
    listen 80;
    server_name _;
    location /upload {
        client_max_body_size 1g;
        root /usr/share/nginx/html/1;
        dav_methods PUT DELETE MKCOL COPY MOVE;
}

Status nginx

-- Unit nginx.service has begun starting up.
nginx[15509]: nginx: [emerg] unknown directive "dav_methods" in /etc/nginx/conf.d/webdav.conf:13
systemd[1]: nginx.service: control process exited, code=exited status=1
systemd[1]: Failed to start nginx - high performance web server.
-- Subject: Unit nginx.service has failed

config.yaml

nginx_version: 1.17.1
output_package: rpm
modules:
  - module:
      name: http_dav_module
      git_url: https://github.com/arut/nginx-dav-ext-module.git
      git_tag: v3.0.0
      dependencies:
        - libxml2-devel
        - libxslt-devel
    # static module
    $ ./configure --with-http_dav_module --add-module=/path/to/nginx-dav-ext-module

Log

builder - INFO - Module dir /usr/src/nginx/modules/http_dav_module
builder - INFO - -- Done: http_dav_module
builder - INFO - Download dependencies
builder - INFO - Running command: yum install --assumeyes libxslt-devel libxml2-devel
builder - INFO - Loaded plugins: fastestmirror, fusioninventory-agent
Loading mirror speeds from cached hostfile
Package libxslt-devel-1.1.28-5.el7.x86_64 already installed and latest version
Package libxml2-devel-2.9.1-6.el7_2.3.x86_64 already installed and latest version
Nothing to do

builder - INFO - Building .rpm package
builder - INFO - Running command: rpm --eval '%{_topdir}'
builder - INFO - /root/rpmbuild

builder - INFO - Running command: rpmbuild -bb nginx.spec
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd /root/rpmbuild/BUILD
+ rm -rf nginx-1.17.1
+ /usr/bin/tar -xf -
+ /usr/bin/gzip -dc /root/rpmbuild/SOURCES/nginx-1.17.1.tar.gz
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd nginx-1.17.1
+ /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ cp /root/rpmbuild/SOURCES/nginx.init.in .
+ sed -e 's|%DEFAULTSTART%|2 3 4 5|g' -e 's|%DEFAULTSTOP%|0 1 6|g' -e 's|%PROVIDES%|nginx|g'
+ sed -e 's|%DEFAULTSTART%||g' -e 's|%DEFAULTSTOP%|0 1 2 3 4 5 6|g' -e 's|%PROVIDES%|nginx-debug|g'
+ exit 0
+ umask 022
+ cd /root/rpmbuild/BUILD
+ cd nginx-1.17.1
+++ pcre-config --cflags
++ echo -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic
+ ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --modules-path=/usr/lib/nginx/modules --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx.pid --lock-path=/var/lock/nginx.lock --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --with-debug --user=nginx --group=nginx --with-http_gzip_static_module --with-http_v2_module --with-http_ssl_module --with-pcre-jit --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_gunzip_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_stub_status_module --with-http_sub_module --with-stream --with-stream_realip_module --with-stream_ssl_preread_module --with-cc-opt= --with-ld-opt= --add-module=/root/rpmbuild/SOURCES/modules/http_dav_module '--with-cc-opt=-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' '--with-ld-opt=-Wl,-z,relro -Wl,-z,now -pie' --with-debug

Добрый день, пока для работы можно добавить --with-http_dav_module в список параметров сборки по умолчанию. В будущем планируем давать возможность задавать подобные вещи через yaml конфиг https://github.com/TinkoffCreditSystems/Nginx-builder/blob/master/src/config.py#L27

"--with-{}".format(module)

Можно использовать вот так.
Где {} это имя модуля, в данном случае это http_dav_module

@javdet а зачем "по-молчанию", если этот модуль не нужен "всем" ? правильнее как раз добавить возможность "расширять" список опций/аргументов сборки

Вынес подключение встроенных модулей nginx в yaml конфиг #16

fix this issue in PR #16