Conf/Examples/Full

From AOLserver Wiki
Jump to navigation Jump to search

Full Configuration

part of AOLserver Config Examples

 # 
 #    AOLServer 4 configuration file.
 #
 #    Copyright (C) 2003-2009 Francesco P. Lovergine <frankie@debian.org>
 #
 #    This program is free software; you can redistribute it and/or modify
 #    it under the terms of the GNU General Public License as published by
 #    the Free Software Foundation; either version 2 of the License, or
 #    (at your option) any later version.
 #
 #    This program is distributed in the hope that it will be useful,
 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 #    GNU General Public License for more details.
 #
 #    You should have received a copy of the GNU General Public License
 #    along with this program; if not, write to the Free Software
 #    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 #
 #    On Debian GNU/Linux systems a copy of the license is available
 #    as /usr/share/common-licenses/GPL.
 #
 #
 #    AOLServer can run multiple domains on a single machine. 
 #
 #    You can add more ns/server/domain sections and use the -s domain
 #    command line option to use the same configuration file in multi-configuration
 #    flavor. You could also use more configuration files and run multiple
 #    instances of the daemon, alternatively.
 #
 #    This file use a single 'main' domain per default.
 #
 array set debian_config {
   HOSTNAME localhost
   #ADDRESS 0.0.0.0
   ADDRESS 127.0.0.1
   HTTP_PORT 8000
   HTTPS_PORT 443
 }
 proc parse_shell_snippet {filename} {
   global debian_config
   set fd [open $filename r]
   set line_no 1
   while {![eof $fd]} {
       set line [string trim [gets $fd] " "]
       if {$line == ""} continue
       switch -regexp -- $line {
           ^#.* { }
           .*=.* {
               set pair [split $line =]
               set name [string trim [lindex $pair 0] " "]
               set value [string trim [lindex $pair 1] " "]
               set debian_config($name) $value
           }
          default {
               error "Error parsing $filename (line: $line_no): $line"
          }
       }
       incr line_no
   }
   close $fd
 }
 #
 # Parse default vars snippet file
 #
 parse_shell_snippet /etc/default/aolserver4
 #############################################################################################
 #
 #    GLOBAL VARIABLES
 #
 set httpport    $debian_config(HTTP_PORT)
 set httpsport   $debian_config(HTTPS_PORT)
 set controlport 9999
 set hostname $debian_config(HOSTNAME)
 set address  $debian_config(ADDRESS)
 set servername main
 set serverdesc "AOLServer Site"
 set package    aolserver4
 set pageroot      /var/www
 set directoryfile index.adp,index.html,index.htm
 set homedir /usr/lib/${package}
 set bindir  ${homedir}/bin
 set sslmodule    nsssl.so
 set sslkeyfile   ${homedir}/servers/${servername}/modules/nsssl/keyfile.pem
 set sslcertfile  ${homedir}/servers/${servername}/modules/nsssl/certfile.pem
 set serverlog       /var/log/${package}/${package}.log
 set pidfile         /var/run/${package}/${package}.pid
 ##############################################################################################
 #
 #    GLOBAL SERVER PARAMETERS
 #
 #
 ns_section "ns/parameters"
 ns_param home ${homedir}
 ns_param debug false
 ns_param servername ${servername}
 ns_param user  www-data
 ns_param group www-data
 # 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 serverlog       ${serverlog}	;# Logging file name
 ns_param pidfile         ${pidfile}	;# pid of server file name
 # 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        localhost ;# SMTP host for ns_sendmail



 ##############################################################################################
 #
 #    MODULE CONFIGURATIONS
 #
 #
 #
 # 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   default         "*/*"     ;# MIME type for unknown extension
 ns_param   noextension     "*/*"     ;# MIME type for missing extension
 #ns_param   ".xls"          "application/vnd.ms-excel"
 #
 #   I18N Mime-types; define content-type header values
 #                    to be mapped from these file-types.
 #                    Note that you can map file-types of adp files to control
 #                    the output encoding through mime-type specificaion.
 #                    Remember to add an adp mapping for that extension.
 #
 ns_param   .adp            "text/html; charset=iso-8859-1"
 ns_param   .u_adp          "text/html; charset=UTF-8"
 ns_param   .gb_adp         "text/html; charset=GB2312"
 ns_param   .sjis_html      "text/html; charset=shift_jis"
 ns_param   .sjis_adp       "text/html; charset=shift_jis"
 ns_param   .gb_html        "text/html; charset=GB2312"
 #
 #   I18N File-type to Encoding mappings
 #
 ns_section "ns/encodings"
 ns_param   .utf_html       "utf-8"
 ns_param   .sjis_html      "shiftjis"
 ns_param   .gb_html        "gb2312"
 ns_param   .big5_html      "big5"
 ns_param   .euc-cn_html    "euc-cn"
 #
 # Note: you will need to include file-type to encoding mappings
 #       for ANY source files that are to be used, to allow the
 #       server to handle them properly.  E.g., the following
 #       asserts that the GB-producing .adp files are themselves
 #       encoded in GB2312 (this is not simply assumed).
 #
 ns_param   .gb_adp         "gb2312"
 #
 # 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)
                                                                                                                          
 ##########################################################################################
 #
 #  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   $servername         $serverdesc ;# 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    $homedir/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
 #
 #     Fast path configuration is used to configure options used for serving
 #     static content, and also provides options to automatically display
 #     directory listings.
 #
 # Parameters:
 #
 #     cache               Boolean. Enable cache for normal URLs.
 #                         Optional, default is false.
 #     cachemaxsize        Integer. Size of fast path cache.
 #                         Optional, default is 5120000.
 #     cachemaxentry       Integer. Largest file size allowed in cache.
 #                         Optional, default is cachemaxsize / 10.
 #     mmap                Boolean. Use mmap() for cache.
 #                         Optional, default is false.
 #     directoryfile       String. Directory index/default page to
 #                         look for. Optional, default is directoryfile
 #                         parameter set in ns/server/${servername} section.
 #     directorylisting    String. Directory listing style. Optional,
 #                         Can be "fancy" or "simple".
 #     directoryproc       String. Name of Tcl proc to use to display
 #                         directory listings. Optional, default is to use
 #                         _ns_dirlist. You can either specify directoryproc,
 #                         or directoryadp - not both.
 #     directoryadp        String. Name of ADP page to use to display
 #                         directory listings. Optional. You can either
 #                         specify directoryadp or directoryproc - not both.
 #
 #
 #    ns_section "ns/server/${servername}/fastpath"
 #        ns_param directorylisting fancy
 #
 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 	$homedir/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        $hostname ;# This is not the same as your hostname
 ns_param   address         $address  ;# This is not the same as your host addr
 ns_param   location        "http://$hostname/"     ;# URL for auto-redirects (trailing slash)
 #
 # Socket driver module (HTTPS) -- nsssl
 #
 ns_section "ns/server/${servername}/module/nsssl"
 ns_param   port            $httpsport
 ns_param   hostname        $hostname     
 ns_param   address         $address  
 ns_param   keyfile         $sslkeyfile
 ns_param   certfile        $sslcertfile


 #
 # Control port -- nscp
 #
 # To enable:
 #
 # 1. Define an address and port to listen on. For security
 #    reasons listening on any port other then 127.0.0.1 is
 #    not recommended.
 #
 # 2. Decided whether or not you wish to enable features such
 #    as password echoing at login time, and command logging.
 #
 # 3. Add a list of authorized users and passwords. The entires
 #    take the following format:
 #
 #    <user>:<encryptedPassword>:
 #
 #    You can use the ns_crypt Tcl command to generate an encrypted
 #    password. The ns_crypt command uses the same algorithm as the
 #    Unix crypt(3) command. You could also use passwords from the
 #    /etc/passwd file.
 #
 #    The first two characters of the password are the salt - they can be
 #    anything since the salt is used to simply introduce disorder into
 #    the encoding algorithm.
 #
 #    ns_crypt <key> <salt>
 #    ns_crypt x t2
 #
 #    The configuration example below adds the user "nsadmin" with a
 #    password of "x".
 #
 # 4. Make sure the nscp.so module is loaded in the modules section.
 #
 ns_section "ns/server/${servername}/module/nscp"
 ns_param   port            $controlport      ;# Control port listens on port 9999
 ns_param   address         127.0.0.1         ;# For security, use 127.0.0.1 only
 ns_param   echopassword 1
 ns_param   cpcmdlogging 1
 ns_param   reconnection off
 # 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            ${serverlog}
 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-lib /usr/lib/cgi-bin"        ;# Where system CGI executables live (GET)
 #ns_param   map #    "POST /cgi-lib /usr/lib/cgi-bin"       ;# Where system CGI executables live (POST)
 #ns_param   map #    "GET /cgi-bin /usr/local/cgi-bin"      ;# Where your CGI executables live (GET)
 #ns_param   map #    "POST /cgi-bin /usr/local/cgi-bin"     ;# Where your CGI executables live (POST)
 ns_param   map     "GET /cgi-bin /usr/lib/cgi-bin"      ;# Where your CGI executables live (GET)
 ns_param   map     "POST /cgi-bin /usr/lib/cgi-bin"     ;# Where your CGI executables live (POST)
 ns_param map            "GET /*.py"
 #ns_param map           "GET /doc /usr/share/doc"
 ns_param map            "POST /*.pl"
 ns_param map            "POST /*.py"
 ns_param interps         cgiinterps
                                                                                                               
 #ns_section "ns/interps/CGIinterps"
 #ns_param .pl          "/usr/bin/perl"
 #ns_param .sh          "/bin/sh"
 #ns_param .py          "/usr/bin/python"
                                                                                                               
 # 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        $hostname    ;# Hostname used in response to client
 ns_param   port            $httpport           ;# Port to listen on
 ns_param   socketfile      /var/run/${package}/${servername}.sock ;# 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.
 # Add here optional modules when needed.
 #
 ns_section "ns/server/${servername}/modules"
 ns_param   nssock             nssock.so
 ns_param   nslog              nslog.so
 ns_param   nscgi              nscgi.so
 ns_param   nsperm             nsperm.so
 #ns_param   nscp               nscp.so
 #if { [file exists $sslcertfile] && [file exists $sslkeyfile] } {
 #ns_param   nsssl 	       nsssl.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


 #
 # Example: Multiple connection thread pools.
 #
 # To enable:
 #
 # 1. Define one or more thread pools.
 # 2. Configure pools as with the default server pool.
 # 3. Map method/URL combinations to the pools
 #
 # All unmapped method/URL's will go to the default server pool.
 #
 #ns_section ns/server/main/pools
 #ns_section slow "Slow requests here."
 #ns_section fast "Fast requests here."
 #
 #ns_section ns/server/main/pool/slow
 #ns_param map {POST /slowupload.adp}
 #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
 #
 #ns_section ns/server/main/pool/fast
 #ns_param map {GET /faststuff.adp}
 #ns_param maxthreads 10
 #
 #
 # Example:  Web based stats interface.
 #
 # To enable:
 #
 # 1. Configure whether or not stats are enabled. (Optional: default = false)
 # 2. Configure URL for statistics. (Optional: default = /_stats)
 #
 #    http://<host>:<port>/_stats
 #
 # 3. Configure user. (Optional: default = aolserver)
 # 4. Configure password. (Optional: default = stats)
 #
 # For added security it is recommended that configure your own
 # URL, user, and password instead of using the default values.
 #
 #ns_section ns/server/stats
 #    ns_param enabled 1
 #    ns_param url /aolserver/stats
 #    ns_param user nsadmin
 #    ns_param password 23dfs!d
 #