varnish failed to restart for VCC compiler error: expected of 'acl', 'sub', 'backend',

匿名 (未验证) 提交于 2019-12-03 01:08:02

问题:

I installed varnish (3.0.5) on amazon linux, but fail to start the varnish

[root@ip-172-31-10-??? sysconfig]# service varnish start Starting Varnish Cache:                                    [FAILED] 

Then I try to change the default varnish vcl and try to use "varnishd -d -f /etc/sysconfig/varnish" to locate the issue with following errors

[root@ip-172-31-10-??? sysconfig]# varnishd -d -f /etc/sysconfig/varnish Message from VCC-compiler: Expected one of         'acl', 'sub', 'backend', 'director', 'probe',  or 'import' Found: 'NFILES' at ('input' Line 8 Pos 1) NFILES=131072 ######-------  Running VCC-compiler failed, exit 1  VCL compilation failed 

The full varnish file is as following:

# Configuration file for varnish # # /etc/init.d/varnish expects the variable $DAEMON_OPTS to be set from this # shell script fragment. #  # Maximum number of open files (for ulimit -n) NFILES=131072  # Locked shared memory (for ulimit -l) # Default log size is 82MB + header MEMLOCK=82000  # Maximum number of threads (for ulimit -u) NPROCS="unlimited"  # Maximum size of corefile (for ulimit -c). Default in Fedora is 0 # DAEMON_COREFILE_LIMIT="unlimited"  # Set this to 1 to make init script reload try to switch vcl without restart. # To make this work, you need to set the following variables # explicit: VARNISH_VCL_CONF, VARNISH_ADMIN_LISTEN_ADDRESS, # VARNISH_ADMIN_LISTEN_PORT, VARNISH_SECRET_FILE, or in short, # use Alternative 3, Advanced configuration, below RELOAD_VCL=1  # This file contains 4 alternatives, please use only one.  ## Alternative 1, Minimal configuration, no VCL # # Listen on port 6081, administration on localhost:6082, and forward to # content server on localhost:8080.  Use a fixed-size cache file. # # DAEMON_OPTS="-a :6081  -T localhost:6082  -b localhost:8080   -u varnish -g varnish  -s file,/var/lib/varnish/varnish_storage.bin,1G"   ## Alternative 2, Configuration with VCL # # Listen on port 6081, administration on localhost:6082, and forward to # one content server selected by the vcl file, based on the request.  Use a # fixed-size cache file. # #DAEMON_OPTS="-a :6081 \ #             -T localhost:6082 \ #             -f /etc/varnish/default.vcl \ #             -u varnish -g varnish \ #             -S /etc/varnish/secret \ #             -s file,/var/lib/varnish/varnish_storage.bin,1G"   ## Alternative 3, Advanced configuration # # See varnishd(1) for more information. # # # Main configuration file. You probably want to change it :) VARNISH_VCL_CONF=/etc/varnish/default.vcl # # # Default address and port to bind to # # Blank address means all IPv4 and IPv6 interfaces, otherwise specify # # a host name, an IPv4 dotted quad, or an IPv6 address in brackets. VARNISH_LISTEN_ADDRESS=127.0.0.1 VARNISH_LISTEN_PORT=80 # # # Telnet admin interface listen address and port VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1 VARNISH_ADMIN_LISTEN_PORT=6082 # # # Shared secret file for admin interface VARNISH_SECRET_FILE=/etc/varnish/secret # # # The minimum number of worker threads to start VARNISH_MIN_THREADS=50 # # # The Maximum number of worker threads to start VARNISH_MAX_THREADS=1000 # # # Idle timeout for worker threads VARNISH_THREAD_TIMEOUT=120 # # # Cache file location VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin # # # Cache file size: in bytes, optionally using k / M / G / T suffix, # # or in percentage of available disk space using the % suffix. VARNISH_STORAGE_SIZE=1G # # # Backend storage specification VARNISH_STORAGE="file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE}" #VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}" # # # Default TTL used when the backend does not specify one VARNISH_TTL=120 # # # DAEMON_OPTS is used by the init script.  If you add or remove options, make # # sure you update this section, too. DAEMON_OPTS="-a ${VARNISH_LISTEN_ADDRESS}:${VARNISH_LISTEN_PORT}  -f ${VARNISH_VCL_CONF}   -T ${VARNISH_ADMIN_LISTEN_ADDRESS}:${VARNISH_ADMIN_LISTEN_PORT}   -t ${VARNISH_TTL} -w ${VARNISH_MIN_THREADS},${VARNISH_MAX_THREADS},${VARNISH_THREAD_TIMEOUT}   -u varnish -g varnish        -S ${VARNISH_SECRET_FILE}      -s ${VARNISH_STORAGE}"   ## Alternative 4, Do It Yourself. See varnishd(1) for more information. # # DAEMON_OPTS="" 

回答1:

The varnishd command expects a vcl file for the -f option not the sysconfig file, so your test run should be:

varnishd -d -f /etc/varnish/default.vcl  

According to your VARNISH_VCL_CONF=/etc/varnish/default.vcl in /etc/sysconfig/varnish

The full command line mimicking your startup script would be something along the lines:

varnishd -d -a 127.0.0.1:80 -f /etc/varnish/default.vcl -T 127.0.0.1:6082 -t 120 -w 1000,100,120 -u varnish -g varnish -S /etc/varnish/secret -s file,/var/lib/varnish/varnish_storage.bin,1G 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!