Difference between revisions of "Annotated AOLserver Configuration Reference"

From AOLserver Wiki
Jump to navigation Jump to search
(imported from WiKit id 1335)
 
m (category link fixup, formatting tweaks)
Line 1: Line 1:
(This looks pretty old... It does not accurately reflect the configuration options available in the latest code. --SD)
+
<pre>
 
 
''Thanks, a warning was definitely needed.  I copied this from http://aolserver.com but if there is a newer version around somewhere, we should certainly update the information below.  I mostly wanted a place to document the (new in 4.01) maxinput param, which is a 4.0 upgrade gotcha. --JR''
 
 
 
It would be nice if when you turned on Debug level logging (or some other higher level) AOLserver spat out all the config settings it was using, where it got them from, and what the default is.  The information would alwasy be accurate, and it would be an aid in debugging.  --SD
 
 
 
''Unfortunately, I see no way you could get that kind of introspection without humongous code changes.  e.g. consider in driver.c''
 
    if (!Ns_ConfigGetInt(path, "maxinput", &n) || n < 1) {
 
n = 1000 * 1024; /* 1m. */
 
    }
 
    drvPtr->maxinput = _MAX(n, 1024);
 
''The default for this param is defined a level up from the config file functions level, and involves calculation and bounds checking. --JR''
 
 
 
Well sure, you'd have to *touch* a lot of code, but the change would be trivial, and it doesn't require everything to change at once. Look at GetInt and GetBool in nsconf.c: there's already code using wrappers for convenience.
 
 
 
In the example above the bounds checking amounts to ensuring a positive integer, which could be expressed as Ns_ConfigGetPositiveInt etc., and the calculation is just a convenience for source code representation.
 
 
 
I'm sure there's some corner cases you couldn't or wouldn't want to handle, but you could cover the vast majority of it, cleaning up a lot of code in the process. --SD
 
 
 
 
 
 
 
----
 
 
 
 
     #
 
     #
 
     # config-reference.tcl.txt --
 
     # config-reference.tcl.txt --
Line 40: Line 18:
 
     # Data structures
 
     # Data structures
 
     ns_param  dstringcachemaxentries 10 ;# Max no. of Dstrings to put on cache
 
     ns_param  dstringcachemaxentries 10 ;# Max no. of Dstrings to put on cache
     ns_param  dstringcachemaxsize [[expr 3*1024]]
+
     ns_param  dstringcachemaxsize [expr 3*1024]
 
     ns_param  iobufsize      16000    ;# Buffer size suitable for I/O
 
     ns_param  iobufsize      16000    ;# Buffer size suitable for I/O
 
      
 
      
Line 75: Line 53:
 
     ns_section "ns/threads"
 
     ns_section "ns/threads"
 
     ns_param  mutexmeter      true      ;# measure lock contention
 
     ns_param  mutexmeter      true      ;# measure lock contention
     ns_param  stacksize      [[expr 128*1024]]  ;# stack size per thread (in bytes)
+
     ns_param  stacksize      [expr 128*1024]  ;# stack size per thread (in bytes)
 
      
 
      
 
      
 
      
Line 152: Line 130:
 
     ns_param  cache          true      ;# Enable cache for normal URLs
 
     ns_param  cache          true      ;# Enable cache for normal URLs
 
     ns_param  cachemaxentry  8192      ;# Largest file size allowable in cache
 
     ns_param  cachemaxentry  8192      ;# Largest file size allowable in cache
     ns_param  cachemaxsize    [[expr 5000*1024]] ;# Size of fastpath cache
+
     ns_param  cachemaxsize    [expr 5000*1024] ;# Size of fastpath cache
 
     ns_param  mmap            false    ;# Use mmap() for cache
 
     ns_param  mmap            false    ;# Use mmap() for cache
 
      
 
      
Line 180: Line 158:
 
     # ADP tuning
 
     # ADP tuning
 
     ns_param  cache          true      ;# In-memory cache of ADP's
 
     ns_param  cache          true      ;# In-memory cache of ADP's
     ns_param  cachesize      [[expr 5000*1024]]
+
     ns_param  cachesize      [expr 5000*1024]
 
     ns_param  taglocks        false    ;# Enable post-ini creation of ADP tags
 
     ns_param  taglocks        false    ;# Enable post-ini creation of ADP tags
 
     ns_param  threadcache    false    ;# default for Tcl 7.6 (nsd76)
 
     ns_param  threadcache    false    ;# default for Tcl 7.6 (nsd76)
Line 206: Line 184:
 
     ns_param  address        $address  ;# This is not the same as your host addr
 
     ns_param  address        $address  ;# This is not the same as your host addr
 
     ns_param  location        "url"    ;# URL for auto-redirects (trailing slash)
 
     ns_param  location        "url"    ;# URL for auto-redirects (trailing slash)
     ns_param  maxinput        [[expr 5 * 1024 * 1024]]  ;# Maximum file size for uploads in bytes, default is 1MB, new in AOLserver 4.01
+
     ns_param  maxinput        [expr 5 * 1024 * 1024]  ;# Maximum file size for uploads in bytes, default is 1MB, new in AOLserver 4.01
  
 
      
 
      
Line 374: Line 352:
 
     #
 
     #
 
     ns_param  tcl_module          tcl
 
     ns_param  tcl_module          tcl
 +
</pre>
 +
 +
[[Category:Documentation]]
 +
[[Category:Configuration]]

Revision as of 17:36, 7 October 2005

    #
    # config-reference.tcl.txt --
    #
    #      Annotated AOLserver Configuration Reference
    #
    #      Nearly every AOLserver configuration variable is represented
    #      here.  This file is provided as a reference -- please do not load
    #      this into your server.
    #
    
    #
    # Global parameters
    #
    ns_section "ns/parameters"
    ns_param   home            $home     ;# Server's home directory
    
    # Data structures
    ns_param   dstringcachemaxentries 10 ;# Max no. of Dstrings to put on cache
    ns_param   dstringcachemaxsize [expr 3*1024]
    ns_param   iobufsize       16000     ;# Buffer size suitable for I/O
    
    # Limits
    ns_param   keepalivetimeout 30       ;# Max time conn is kept alive (keepalive)
                                         ;#   (set to 0 to disable keepalive)
    ns_param   listenbacklog   32        ;# Max length of pending conn queue
    ns_param   maxkeepalive    100       ;# Max no. of conns in keepalive state
    ns_param   schedmaxelapsed 2         ;# Warn when waiting on really long procs
    ns_param   shutdowntimeout 20        ;# Secs to wait on shutdown if open conns
    
    # Server logging
    ns_param   dev             true      ;# Display logging with "Dev" severity
    ns_param   debug           false     ;# Display logging with "Debug" severity
    ns_param   logexpanded     false     ;# true = double-spaced server.log
    ns_param   logroll         false     ;# Roll server.log every 24 hours.
    ns_param   maxbackup       10        ;# Max number of old server.log files
    ns_param   pidfile         "nspid"   ;# PID of server (named "nspid.PORT")
    ns_param   serverlog       "server.log" ;# Filename of server.log
    
    # DNS tuning
    ns_param   dnscache        true      ;# In-memory cache of DNS lookups
    ns_param   dnscachetimeout 60        ;# How long to keep hostnames in cache
    
    # Miscellaneous
    ns_param   checkexitcode   false     ;# Check exit code on forked process
    ns_param   crashcmd        ns_crash  ;# A Tcl command that dumps core.
    ns_param   mailhost        smtp.yourcompany.com ;# SMTP host for ns_sendmail
    
    
    #
    # Thread library (nsthread) parameters
    #
    ns_section "ns/threads"
    ns_param   mutexmeter      true      ;# measure lock contention
    ns_param   stacksize       [expr 128*1024]  ;# stack size per thread (in bytes)
    
    
    #
    # MIME types.
    #
    # Note: AOLserver already has an exhaustive list of MIME types, but in
    # case something is missing you can add it here.
    #
    ns_section "ns/mimetypes"
    ns_param   ".xls"          "application/vnd.ms-excel"
    ns_param   default         "*/*"     ;# MIME type for unknown extension
    ns_param   noextension     "*/*"     ;# MIME type for missing extension
    
    
    ############################################################
    #
    # Server-level configuration
    #
    #  There is only one server in AOLserver, but this is helpful when multiple
    #  servers share the same configuration file.  This file assumes that only
    #  one server is in use so it is set at the top.
    #
    
    ns_section "ns/servers"
    ns_param   $server         $servername ;# Name of virtual server.
    
    #
    # Server parameters
    #
    ns_section "ns/server/${servername}"
    ns_param   directoryfile   $directoryfile ;# List of files to use (index.html)
    ns_param   pageroot        $pageroot ;# Directory under which all pages live
    
    # Tuning options
    ns_param   connsperthread  0         ;# Normally there's one conn per thread
    ns_param   flushcontent    false     ;# Flush all data before returning
    ns_param   maxconnections  100       ;# Max connections to put on queue
    ns_param   maxdropped      0         ;# Shut down if dropping too many conns
    ns_param   maxthreads      20        ;# Tune this to scale your server
    ns_param   minthreads      0         ;# Tune this to scale your server
    ns_param   threadtimeout   120       ;# Idle threads die at this rate
    
    # Limits
    ns_param   maxheaders      16384     ;# Max no. of headers from client
    ns_param   maxline         8192      ;# Max line length from client
    ns_param   maxpost         65536     ;# Max bytes on a POST
    ns_param   sendfdthreshold 2048      ;# Min size of file descriptor to send
    
    # Performance statistics gathering
    ns_param   globalstats     true      ;# Enable built-in statistics
    ns_param   urlstats        true      ;# Enable URL statistics
    ns_param   maxurlstats     1000      ;# Max number of URL's to do stats on
    
    # Directory listings can be generated with an ADP or a Tcl proc.
    ns_param   directoryadp    $home/dirlist.adp  ;# Choose one or the other
    ns_param   directoryproc   _ns_dirlist        ;#  ...but not both!
    ns_param   directorylisting simple   ;# Can be simple or fancy (for ns_dirlist)
    
    # Miscellaneous
    ns_param   checkmodifiedsince true   ;# Check url if no If-Modified-Since?
    ns_param   enableaolpress  false     ;# Enable extra features used by AOLpress
    ns_param   headercase      preserve  ;# tolower, toupper, preserve
    
    #
    # Internal redirects
    #
    ns_section "ns/server/${servername}/redirects"
    ns_param   404 "/notfound.html"      ;# Not Found error page
    ns_param   500 "/servererror.html"   ;# Server Error page
    
    #
    # Fastpath serves HTML
    #
    ns_section "ns/server/${servername}/fastpath"
    ns_param   cache           true      ;# Enable cache for normal URLs
    ns_param   cachemaxentry   8192      ;# Largest file size allowable in cache
    ns_param   cachemaxsize    [expr 5000*1024] ;# Size of fastpath cache
    ns_param   mmap            false     ;# Use mmap() for cache
    
    #
    # Tcl interpreter
    #
    ns_section "ns/server/${servername}/tcl"
    ns_param   autoclose       true      ;# Close files the Tcl interp opened
    ns_param   debug           false     ;# Names of files sourced is logged
    ns_param   nsvbuckets      8         ;# No. of buckets to hold nsv's
    ns_param   statlevel       0         ;# How many levels deep to run tclstats
    ns_param   statmaxbuf      100       ;# Maximum entries in tclstats table
    ns_param   library  "$home/servers/${servername}/modules/tcl" ;# Private tcl library for the server
    
    #
    # ADP (AOLserver Dynamic Page) configuration
    #
    ns_section "ns/server/${servername}/adp"
    
    # ADP features
    ns_param   map             "/*.adp"  ;# Extensions to parse as ADP's
    ns_param   map             "/*.html" ;# Any extension can be mapped
    ns_param   enableexpire    true      ;# Set "Expires: now" on all ADP's
    ns_param   enabledebug     true      ;# Turn on Tclpro debugging with "?debug"
    ns_param   debuginit "ns_adp_debuginit" ;# Debug procedure
    
    # ADP tuning
    ns_param   cache           true      ;# In-memory cache of ADP's
    ns_param   cachesize       [expr 5000*1024]
    ns_param   taglocks        false     ;# Enable post-ini creation of ADP tags
    ns_param   threadcache     false     ;# default for Tcl 7.6 (nsd76)
    ns_param   threadcache     true      ;# default for Tcl 8.2 (nsd82)
    
    # ADP special pages
    ns_param   errorpage  ${pageroot}/errorpage.adp        ;# Pretty-print ADP errors with an ADP
    ns_param   startpage  ${pageroot}/startpage.inc        ;# Page to include for all ADP's
    
    
    #
    # ADP custom parsers -- see adp.c
    #
    ns_section "ns/server/${servername}/adp/parsers"
    ns_param   adp             ".adp"   ;# The simple parser looks for <\% ... \%>
    ns_param   fancy           ".adp"   ;# The fancy parser does a lot more.
    
    
    #
    # Socket driver module (HTTP)  -- nssock
    #
    ns_section "ns/server/${servername}/module/nssock"
    ns_param   port            $httpport ;# Port for HTTP (typically 80)
    ns_param   hostname        $host     ;# This is not the same as your hostname
    ns_param   address         $address  ;# This is not the same as your host addr
    ns_param   location        "url"     ;# URL for auto-redirects (trailing slash)
    ns_param   maxinput        [expr 5 * 1024 * 1024]  ;# Maximum file size for uploads in bytes, default is 1MB, new in AOLserver 4.01

    
    #
    # Socket driver module (HTTPS) -- nsssl
    #
    ns_section "ns/server/${servername}/module/nsssl"
    ns_param   port            $httpsport ;# Port for HTTPS (typically 443)
    ns_param   hostname        $host     ;# This is not the same as your hostname
    ns_param   address         $address  ;# This is not the same as your host addr
    ns_param   keyfile         ${home}/servers/${servername}/modules/nsssl/keyfile.pem
    ns_param   certfile        ${home}/servers/${servername}/modules/nsssl/certfile.pem
    
    
    #
    # Control port -- nscp
    #
    ns_section "ns/server/${servername}/module/nscp"
    ns_param   port            9999      ;# Control port listens on port 9999
    ns_param   address         "127.0.0.1" ;# For security, use 127.0.0.1 only
    
    # Control port users
    ns_section "ns/server/${servername}/module/nscp/users"
    # The default password for nsadmin is "x". You should change it.
    # type "ns_crypt newpassword salt" and put the encrypted string below.
    ns_param user "nsadmin:t2GqvvaiIUbF2:" ;# sample user="nsadmin", pw="x".
    
    #
    # Access log -- nslog
    #
    ns_section "ns/server/${servername}/module/nslog"
    ns_param   file            "access.log"
    ns_param   formattedtime   true      ;# true=common log format
    ns_param   logcombined     false     ;# true==NCSA combined format
    ns_param   maxbackup       5         ;# Max number to keep around when rolling
    ns_param   rollhour        0         ;# Time to roll log
    ns_param   rolllog         true      ;# Should we roll log?
    ns_param   rollonsignal    true      ;# Roll log on SIGHUP
    
    #
    # CGI interface -- nscgi
    #
    # Note: CGI is *vastly* inferior to ADP's or even built-in Tcl libraries.
    #
    ns_section "ns/server/${servername}/module/nscgi"
    ns_param   debug           false     ;# Be chatty in log
    ns_param   gethostbyaddr   false     ;# Whether to do reverse DNS lookups
    ns_param   limit           0         ;# Max number of concurrent CGI processes
    ns_param   maxoutput       10240     ;# Max bytes allowed from external process
    ns_param   buffersize      8192      ;# Buffer output from external process
    ns_param   map  "GET /cgi /usr/local/cgi"        ;# Where your CGI executables live (GET)
    ns_param   map  "POST /cgi /usr/local/cgi"       ;# Where your CGI executables live (POST)
    
    # CGI environment variable handling -- See admin guide
    ns_param   systemenvironment false   ;# Copies environment from nsd start shell
    
    
    #
    # Access control (permissions) -- nsperm
    #
    ns_section "ns/server/${servername}/module/nsperm"
    
    #
    # Unix domain socket driver -- nsunix
    #
    ns_section "ns/server/${servername}/module/nsunix"
    ns_param   hostname        "host"    ;# Hostname used in response to client
    ns_param   port            "port"    ;# Port to listen on
    ns_param   socketfile      "path.name" ;# UNIX domain socket driver
    
    #
    # Virtual Hosting redirector -- nsvhr
    #
    ns_section "ns/server/${servername}/module/nsvhr"
    ns_param   busyurl         "url"     ;# Redirect here if back-end times out
    ns_param   errorurl        "url"     ;# Redirect here on proxy errors
    ns_param   method          "GET"     ;# Methods allowed to proxy
    ns_param   method          "POST"    ;# Methods allowed to proxy (can have >1)
    ns_param   timeout         30        ;# Timeout waiting for back-end
    
    # Register hosts to proxy
    ns_section "ns/server/${servername}/module/nsvhr/maps"
    ns_param   "www.tcpsocket.com"    "http://127.0.0.0:2000" ;# HTTP proxy
    ns_param   "www.domainsocket.com" "unix://somehost"       ;# Domain socket
    
    #
    # Database drivers
    #
    # Two pools are given here.  Sybase uses the Sybase client libraries,
    # obtained from Sybase.  Postgres is freely available at
    # www.postgresql.org.  Sybase uses an external proxy daemon while
    # Postgres uses an internal driver.  The Sybase driver requires some
    # configuration in ns/db/driver/sybase_driver to tell th "nsext.so"
    # driver where to find the nssybpd executable and some other things.
    # The Postgres driver doesn't need any of that because it's internal
    # and does not use nsext.so.
    #
    ns_section "ns/db/drivers"
    ns_param   sybase_driver   nsext.so       ;# Use nsext.so for a proxy daemon
    ns_param   postgres_driver nspostgres.so  ;# An internal driver
    
    ns_section "ns/db/driver/sybase_driver"
    ns_param   localdaemon     nssybpd        ;# Name of the proxy daemon executable
    ns_param   param           path_to_sybase ;# Usually the $SYBASE env var
    
    ns_section "ns/db/pools"
    ns_param   sybase_pool    "Sybase Pool"
    ns_param   postgres_pool  "Postgres Pool"
    
    ns_section "ns/db/pool/sybase_pool"
    ns_param   driver          sybase_driver
    ns_param   datasource      SERVER_NAME:database_name
    ns_param   user            user_name
    ns_param   password        password
    ns_param   connections     1
    ns_param   logsqlerrors    true      ;# Verbose SQL query error logging
    ns_param   verbose         false     ;# Verbose error logging
    ns_param   maxidle         600       ;# Max time to keep idle db conn open
    ns_param   maxopen         3600      ;# Max time to keep active db conn open
    
    ns_section "ns/db/pool/postgres_pool"
    ns_param   driver          postgres_driver
    ns_param   datasource      HOSTNAME:PORT:database_name
    ns_param   user            user_name
    ns_param   password        password
    ns_param   connections     1
    ns_param   logsqlerrors    true      ;# Verbose SQL query error logging
    ns_param   verbose         false     ;# Verbose error logging
    ns_param   maxidle         600       ;# Max time to keep idle db conn open
    ns_param   maxopen         3600      ;# Max time to keep active db conn open
    
    
    #
    # Accessing DB pools
    #
    # In the case of virtual servers you can give different virtual
    # servers access to different databases, or you can let them access
    # them all.  AOLserver 3.x does not use virtual servers so the only
    # useful value is "*", but if you use one config file for multiple nsd
    # processes, or you are using a version of AOLserver that supports
    # virtual servers, then you should list the pools you want to access.
    #
    ns_section "ns/server/${servername}/db"
    ns_param pools          *            ;# Wildcard gives access to all
    ns_param defaultpool    sybase_pool
    
    
    #
    # Modules to load
    #
    # Note: Only load the modules you are actually going to use.
    #
    ns_section "ns/server/${servername}/modules"
    ns_param   nssock             nssock.so
    ns_param   nsssl              nsssle.so
    ns_param   nscp               nscp.so
    ns_param   nslog              nslog.so
    ns_param   nscgi              nscgi.so
    ns_param   nsperm             nsperm.so
    
    #
    # Loading a Tcl module
    #
    # This example shows a Tcl module, called "tcl_module", has its code
    # in the AOLserver Tcl library in either the modules/tcl/tcl_module
    # directory or servers/servername/modules/tcl/tcl_module directory.
    #
    ns_param   tcl_module          tcl