Forum OpenACS Development: Response to OpenACS4.x/Postgres7.x installation guide
Posted by
Domingo Alvarez duarte
on 04/15/01 10:06 PM
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.