Forum OpenACS Q&A: Aolserver config problem?

Collapse
Posted by Brian Cressall on
I've installed PostgreSQL, Aolserver, and OpenACS and everything seems configured fine. I start Aolserver with the following command:
/home/aolserver/bin/nsd -kt nsd.tcl -u nsadmin -g nsadmin  

as root (to use the privleged port 80). Now, when I try to connect, I get no errors and nsd runs happily in the background. That's great, but I can't connect via a web browser to port 80 of my machine. I've connected just fine before I added support for postgres to my config (nsd.tcl). Here is my nsd.tcl file, which is probably the easiest thing to do. Any help would be much appreciated.

Start config file...

#
# AOLserver/OpenNSD Configuration File
#

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               80 
set httpsport             443 

#
# 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              brian.cvairnet.com
set address               207.224.221.39

# 
# 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		   "express" 
set servername             "express" 

# 
# 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. The crucial procedures used in 
OpenACS are
# defined through this library
#
        ns_param library "/home/aolserver/modules/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. OpenACS comes with some in the directory 
www/global.

        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   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 
# 
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   postgres     ${bindir}/postgres.so  ;# Load 
PostgreSQL driver

# 
# Database Pools: This is how AOLserver  ``talks'' to the RDBMS. You 
need three for
# OpenACS: main, log, subquery. 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       "Express Main Pool" 
    ns_param   log        "Express Log Pool" 
    ns_param   subquery   "Express Subquery Pool"

ns_section "ns/db/pool/main" 
    ns_param Driver postgres 
    ns_param Connections 5                  ;# 5 is a good number. 
Increase according to your needs
    ns_param DataSource localhost::express   ;# Replace 'yourdb' 
with the name of your database in PG
    ns_param User nsadmin                   ;# User and password 
AOLserver will use to connect
    ns_param Password "justdoit" 
    ns_param Verbose Off                    ;# Set it to On to see 
all queries. Good for debugging SQL.
    ns_param LogSQLErrors On 
    ns_param ExtendedTableInfo On 
   # ns_param MaxOpen 1000000000            ;# Max time to keep idle 
db connection open
   # ns_param MaxIdle 1000000000            ;# Max time to keep 
active db connection open 

ns_section "ns/db/pool/log" 
    ns_param Driver postgres 
    ns_param Connections 5 
    ns_param DataSource localhost::express 
    ns_param User nsadmin 
    ns_param Password "justdoit" 
    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 postgres 
    ns_param Connections 2 
    ns_param DataSource localhost::express 
    ns_param User nsadmin 
    ns_param Password "justdoit" 
    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          "*" 
        ns_param DefaultPool    "main"

#
# 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:"

# 
# 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 

#
# nsjava - aolserver module that embeds a java virtual machine.  
Needed to 
#          support webmail.  See http://nsjava.sourceforge.net for 
further 
#          details.
#

#ns_section "ns/server/acs-pg/module/nsjava"
#        ns_param   EnableJava          "off"  ;# Set to on to 
enable nsjava.
#        ns_param   VerboseJvm          "off"  ;# Same as command 
line -debug.
#        ns_param   LogLevel            "Notice"
#        ns_param   DestroyJvm          "off"  ;# Destroy jvm on 
shutdown.
#        ns_param   DisableJITCompiler  "off"  
#        ns_param   ClassPath 
"/usr/local/jdk/jdk118_v1/lib/classes.zip:/usr/local/aolserver/bin/nsjava.jar:/home/nsadmin/mirror/acs3-pg/www/webmail/java/activation.jar:/home/nsadmin/mirror/acs3-pg/www/webmail/java/mail.jar:/home/nsadmin/mirror/acs3-pg/www/webmail/java" 
# 
# CGI interface -- nscgi, if you have legacy stuff. Tcl or ADP files 
inside 
# AOLserver are vastly superior to CGIs. You don't actually need the 
Interps 
# if your script calls the appropriate interpreter itself.
# 
#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   nsjava          ${bindir}/libnsjava.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."
}

# nscp: loads only if nscp_user is set (see top of this file).
#if { $nscp_user != "" } {
#    ns_param nscp ${bindir}/nscp.so
#} else {
#    ns_log warning "nsd.tcl: nscp not loaded because user/password 
is not set."
#}

# 
# To Source OpenACS Config File. You need a "yourservername.tcl" 
file in the
# OpenACS parameters dir. e.g.: say your server is "server1" then 
you'd need a
# file named /web/server1/parameters/server1.tcl
# (Hint: Rename ad.tcl to yourservername.tcl and edit it.)
#

source /home/aolserver/servers/${server}/parameters/${server}.tcl

ns_log notice "nsd.tcl: finished reading config file."


End config file...

Thanks in advance.
Collapse
Posted by David Walker on
Don't forget to change your database password since it was in the above message.

I get redirected to bc.cvairnet.com but I don't see that in your config file anywhere so I'm not sure why it is happening.
Collapse
Posted by Janine Ohmer on
I just tried it and got the AOLserver Welcome page at
http://brian.cvairnet.com, so he must be working on it.

In my experience, unexpected redirection usually comes from the
ACS.  If you have a different value for SystemURL in  your
parameters file than for hostname in your config file, you'll get
redirected to the SystemURL value right away.  This can be, um,
unexpected. :)

Collapse
Posted by Ola Hansson on
Hi Brian!

If I were you I'd start by configuring AOLserver to listen on localhost cutting out as many sources of malfunction as possible.

Are you trying to connect from a browser on the webserver host itself or from anoter host on a LAN?

Your server is named "express" - make sure you have a virtual server named that (you can rename or make a recursive copy of /*yourserverhome*/servers/server1).

Where is OpenACS installed? If it's in /web/express/ you must alter the "source" path on the second to last line in the config file to something like: source /web/express/parameters/express.tcl In this case you may need to change the pageroot: set pageroot /web/express/www
Collapse
Posted by Brian Cressall on
Thank-you for your help.  I have been fiddling with this for a long
time and found out that I have misspelled 'servers' and put
'server'.  I also changed my url to point to the correct place
(brian.cvairnet.com and not bc.cvairnet.com) as suggested.  I'm
excited to learn the modules and use this powerful tool!
Collapse
6: Good luck, Brian! (response to 1)
Posted by Hans Gaasenbeek on
It seems like there are more people struggling with little things like this... (No pages getting served-similar problem) - one of my questions.

Good luck!