I'm tryng get it working as well, I have PostgreSQL7.1 and aolserver 3.31 with ns_cache from aolserver 3.2 and everithing else my nsd.tcl that start working is :
-----------
# Modified by Roberto Mello - rmello@cc.usu.edu - June 2000
ns_log notice "nsd.tcl: starting to read config file..."
#
# If httpport is set to 80, you'll have to start AOLserver as root and pass the user
# AOLserver will run as in the command line. (e.g. ./nsd -u nsadmin -g nsadmin -t ../nsd.tcl)
# (assuming you're starting AOLserver from the {aolserverdir}/bin directory.
set httpport 8000
set httpsport 8443
#
# Make sure your /etc/hostname is setup right, with your full domain. If you want AOLserver
# to listen to www.foobar.com instead of foobar.com then hard code the appropriate domain
# in the line below (e.g. set hostname www.foobar.com).
#
set hostname [ns_info hostname]
set address [ns_info address]
#
# You can name your server whatever you want, but you'll need a directory with that
# name under {aolserverdir}/servers/ writable by you AOLserver user.
#
# For example: if your AOLserver is in /usr/local/aolserver and your server is "server1"
# you will need a /usr/local/aolserver/servers/server1 directory.
#
set server "server1"
set servername "daderver"
set dbdatasource "localhost::wwwrun"
set dbuser wwwrun
set dbpassword ""
set dbconnections 2
#
# AOLserver's home and binary directories. Autoconfigurable.
#
set homedir [file dirname [ns_info config]]
set bindir [file dirname [ns_info nsd]]
#
# Where are your pages going to live ?
#
set pageroot ${homedir}/servers/${server}/www
set directoryfile index.adp,index.tcl,index.html,index.htm
#
# nsssl: Only loads if keyfile.pem and certfile.pem exist.
# If you are using SSL, make sure you have these dirs and files (refer
# to the AOLserver docs)
set sslkeyfile ${homedir}/servers/${server}/modules/nsssl/keyfile.pem
set sslcertfile ${homedir}/servers/${server}/modules/nsssl/certfile.pem
#
# Global server parameters
#
ns_section "ns/parameters"
ns_param home $homedir
ns_param debug false
ns_param MailHost localhost
ns_param ServerLog ${homedir}/log/server.log
ns_param LogRoll on
#
# Thread library (nsthread) parameters
#
ns_section "ns/threads"
ns_param mutexmeter true ;# measure lock contention
#ns_param stacksize [expr 128*1024] ;# Per-thread stack size for hungry C modules
#
# 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''
#
# Tcl Configuration
#
ns_section "ns/server/${server}/tcl"
ns_param autoclose "on"
ns_param debug "false"
#
# This is where this server's private Tcl library is. All .tcl files in this directory
# are parsed when AOLserver starts.
#
ns_param library "${homedir}/servers/${server}/tcl"
############################################################
#
# 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 in the "server" Tcl variable
# Other host-specific values are set up above as Tcl variables, too.
#
ns_section "ns/servers"
ns_param $server $servername
#
# Server parameters
#
ns_section "ns/server/${server}"
ns_param directoryfile $directoryfile
ns_param pageroot $pageroot
ns_param globalstats false ;# Enable built-in statistics
ns_param urlstats false ;# Enable URL statistics
ns_param maxurlstats 1000 ;# Max number of URL's to do stats on
ns_param enabletclpages true ;# Parse tcl files in pageroot (dangerous)
#
# If you want to customize AOLserver's response to things like "Internal Server Error"
# and other HTTP responses.
ns_param NotFoundResponse "/global/file-not-found.html"
ns_param ServerBusyResponse "/global/busy.html"
ns_param ServerInternalErrorResponse "/global/error.html"
ns_param ForbiddenResponse "/global/forbidden.html"
ns_param UnauthorizedResponse "/global/unauthorized.html"
# Directory listings -- use an ADP or a Tcl proc to generate them.
#
#ns_param directoryadp $pageroot/dirlist.adp ;# Choose one or the other
ns_param directoryproc _ns_dirlist ;# ...but not both!
ns_param directorylisting fancy ;# Can be simple or fancy
#
# ADP (AOLserver Dynamic Page) configuration
#
ns_section "ns/server/${server}/adp"
ns_param map "/*.adp" ;# Extensions to parse as ADP's
ns_param DefaultParser fancy
#ns_param map "/*.html" ;# Any extension can be mapped
ns_param enableexpire false ;# Set "Expires: now" on all ADP's
ns_param enabledebug false ;# Allow Tclpro debugging with "?debug"
# ADP special pages
#ns_param errorpage ${pageroot}/errorpage.adp ;# Pretty-print ADP scripting errors
#
# ADP custom parsers -- see adp.c
#
# "adp" is faster but lacks some features. "fancy" is a little slower but has
# extra features.
#
ns_section "ns/server/${server}/adp/parsers"
ns_param fancy ".adp"
#
# Socket driver module (HTTP) -- nssock
#
ns_section "ns/server/${server}/module/nssock"
ns_param port $httpport
ns_param hostname $hostname
ns_param address $address
#
# Socket driver module (HTTPS) -- nsssl
#
# nsssl does not load unless sslkeyfile/sslcertfile exist (above).
#
ns_section "ns/server/${server}/module/nsssl"
ns_param port $httpsport
ns_param hostname $hostname
ns_param address $address
ns_param keyfile $sslkeyfile
ns_param certfile $sslcertfile
#
# Database drivers
# The database driver is specified here. PostgreSQL driver being loaded.
# Make sure you have the driver compiled and put it in {aolserverdir}/bin
#
ns_section "ns/db/drivers"
ns_param postgresql ${bindir}/postgres.so ;# Load PostgreSQL driver
ns_section "ns/db/driver/postgresql"
ns_param pgbin /usr/local/pgsql/bin
#
# Database Pools: This is how AOLserver "talks" to the RDBMS.
# The three pools here are examples but they work.
# Make sure to replace "yourdb" and "yourpassword" with the actual values for
# your db name and the password for it.
# AOLserver can have different pools connecting to different databases and even different
# different database servers.
#
ns_section "ns/db/pools"
ns_param main "Main Pool"
ns_param log "Log Pool"
ns_param subquery "Subquery Pool"
ns_section "ns/db/pool/main"
ns_param Driver postgresql
ns_param Connections $dbconnections ;# 5 is a good number. Increase according to your needs
ns_param DataSource $dbdatasource ;# Replace 'yourdb' with the name of your database in PG
ns_param User $dbuser ;# User and password AOLserver will use to connect
ns_param Password $dbpassword
ns_param Verbose On ;# Set it to On to see all queries. Good for debugging SQL.
ns_param LogSQLErrors On
ns_param ExtendedTableInfo On
# ns_param MaxOpen 1000000000 ;# Uncommenting these two cause AOLserver to keep the
# ns_param MaxIdle 1000000000 ;# db connection open. Can be a good thing, up tp your needs.
ns_section "ns/db/pool/log"
ns_param Driver postgresql
ns_param Connections $dbconnections ;# 5 is a good number. Increase according to your needs
ns_param DataSource $dbdatasource ;# Replace 'yourdb' with the name of your database in PG
ns_param User $dbuser ;# User and password AOLserver will use to connect
ns_param Password $dbpassword
ns_param Verbose On
ns_param LogSQLErrors On
ns_param ExtendedTableInfo On
# ns_param MaxOpen 1000000000
# ns_param MaxIdle 1000000000
ns_section "ns/db/pool/subquery"
ns_param Driver postgresql
ns_param Connections $dbconnections ;# 5 is a good number. Increase according to your needs
ns_param DataSource $dbdatasource ;# Replace 'yourdb' with the name of your database in PG
ns_param User $dbuser ;# User and password AOLserver will use to connect
ns_param Password $dbpassword
ns_param Verbose On
ns_param LogSQLErrors On
ns_param ExtendedTableInfo On
# ns_param MaxOpen 1000000000
# ns_param MaxIdle 1000000000
ns_section "ns/server/${server}/db"
#ns_param Pools "*" ;# Load all pools specified above
ns_param Pools "*" ;# Load all pools specified above
ns_param DefaultPool "main" ;# Which will be the default pool?
#
# nscp: AOLserver Control Port - very useful for testing and evaluating.
# Uncomment the sample password below and do a "telnet localhost 9999"
# log in with "nsadmin", password "x", type "ns_crypt newpassword salt"
# and paste the new encrypted string below.
#
# Sample User="nsadmin", password="x"
set nscp_user "nsadmin:t2GqvvaiIUbF2:"
# nscp: loads only if nscp_user is set
#
if { $nscp_user != "" } {
ns_param nscp ${bindir}/nscp.so
} else {
ns_log warning "nsd.tcl: nscp not loaded because user/password is not set."
}
#
# Control port -- nscp
# nscp does not load unless nscp_user is a valid user.
#
ns_section "ns/server/${server}/module/nscp"
ns_param port 9999
ns_param address "127.0.0.1" ;# LOCALHOST IS RECOMMENDED
ns_section "ns/server/${server}/module/nscp/users"
ns_param user $nscp_user
#
# Access log -- nslog
#
ns_section "ns/server/${server}/module/nslog"
ns_param rolllog true ;# Should we roll log?
ns_param rollonsignal true ;# Roll log on SIGHUP
ns_param rollhour 0 ;# Time to roll log
ns_param maxbackup 5 ;# Max number to keep around when rolling
#
# CGI interface -- nscgi, if you have legacy stuff. Tcl or ADP files inside
# AOLserver are vastly superior to CGIs.
#
#ns_section "ns/server/${server}/module/nscgi"
# ns_param map "GET /cgi-bin/ /web/$server/cgi-bin"
# ns_param map "POST /cgi-bin/ /web/$server/cgi-bin"
# ns_param Interps CGIinterps
#ns_section "ns/interps/CGIinterps"
# ns_param .pl "/usr/bin/perl"
#
# Modules to load
#
ns_section "ns/server/${server}/modules"
ns_param nssock ${bindir}/nssock.so
ns_param nslog ${bindir}/nslog.so
ns_param nsperm ${bindir}/nsperm.so
# ns_param nscgi ${bindir}/nscgi.so
# ns_param dqd_utils dqd_utils[expr {int($tcl_version)}].so
ns_param ns_xml ${bindir}/nsxml.so
ns_param ns_sha1 ${bindir}/nssha1.so
ns_param ns_cache ${bindir}/nscache.so
ns_param ns_rewrite ${bindir}/nsrewrite.so
#
## nsssl: loads only if requisite files already exist (see top of this
# file).
#
if { [file exists $sslcertfile] && [file exists $sslkeyfile] } {
ns_param nsssl ${bindir}/nsssle.so
} else {
ns_log warning "nsd.tcl: nsssl not loaded because key/cert files do not exist."
}
#
# If you have an auxiliary config file, you can tell AOLserver to source it
# with the line:
#
# source /path/to/your/file/yourfile.tcl
#
ns_log notice "nsd.tcl: Now reading aux config ServerDAD."
#source /home/aolserver/servers/server1/parameters/server1.tcl
ns_log notice "nsd.tcl: finished reading config file."
-------------
It goes ok till tryng to create the administrator account when I get the following message:
----------
Database operation "0or1row" failed (exception NSDB, "Query was not a statement returning rows.")
while executing
"ns_pg_bind 0or1row nsdb0 {select email from cc_users where rownum = 1}"
("uplevel" body line 1)
invoked from within
"uplevel 2 [list ns_pg_bind $type $db $sql] $args"
invoked from within
"db_exec 0or1row $db $full_statement_name $sql"
invoked from within
"set selection [db_exec 0or1row $db $full_statement_name $sql]"
("uplevel" body line 2)
invoked from within
"uplevel 1 $code_block "
invoked from within
"db_with_handle db {
set selection [db_exec 0or1row $db $full_statement_name $sql]
}"
(procedure "db_0or1row" line 22)
invoked from within
"db_0or1row user_exists "select email from cc_users where rownum = 1""
(file "/opt/aolserver/servers/server1/packages/acs-bootstrap-installer/installer/create-administrator.tcl" line 1)
--------
Ok I know whats the problem I'm solving it change all the queries that refer to "rownum" to use limit or another trick.
But I was think that maybe could be a good idea to have postgres generating virtual row numbers as well.