Table of Contents
Tutorials and reference material for creating new OpenACS packages.
Table of Contents
Table of Contents
Download the Analog source tarball in /tmp
. Unpack, compile, and install
-analog.
-[root aolserver]#cd /usr/local/src
+analog.[root aolserver]#cd /usr/local/src
[root src]#tar xzf /tmp/analog-5.32.tar.gz
[root src]#cd analog-5.32
[root analog-5.32]#make
@@ -31,14 +29,13 @@ make cd .. mv analog-5.32 /usr/share/ -See also the section called -“Set up Log Analysis -Reports” +
Analog is a program with processes webserver access logs, performs DNS lookup, and outputs HTML reports. Analog should already be installed. A modified configuration file is included in the OpenACS tarball.
-[root src]#su - $OPENACS_SERVICE_NAME
+[root src]#su - $OPENACS_SERVICE_NAME
[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$mkdir www/log
[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$cp -r /usr/share/analog-5.32/images www/log/
@@ -41,32 +40,27 @@ /home/$OPENACS_SERVICE_NAME/dnscache: ignoring it (For help on all errors and warnings, see docs/errors.html) /usr/share/analog-5.32/analog: Warning R: Turning off empty Search Word Report -[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ -Verify that it works by browing to
http://yourserver.test:8000/log/traffic.html
+[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$
Verify that it works by browing to http://yourserver.test:8000/log/traffic.html
Automate this by creating a file in /etc/cron.daily
.
[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$exit
logout [root root]#emacs /etc/cron.daily/analog
-
Put this into the file:
-#!/bin/sh +
Put this into the file:
#!/bin/sh
-/usr/share/analog-5.32/analog -G -g/var/lib/aolserver/$OPENACS_SERVICE_NAME
/etc/analog.cfg
-
-[root root]# chmod 755 /etc/cron.daily/analog
-
Test it by running the script.
-[root root]#sh /etc/cron.daily/analog
+/usr/share/analog-5.32/analog -G -g/var/lib/aolserver/$OPENACS_SERVICE_NAME
/etc/analog.cfg
[root root]# chmod 755 /etc/cron.daily/analog
+
Test it by running the script.
[root root]# sh /etc/cron.daily/analog
Browse to http://
yourserver.test
/log/traffic.html
by Vinod Kurup
</authorblurb>We recommend the use of AOLserver 4.0.1 or later. These @@ -19,10 +18,9 @@ but if not, you should stick to installing from source.
-Unpack the Aolserver tarball. -Download the aolserver tarball -and unpack it.
-[root root]#cd /usr/local/src
+Unpack the Aolserver tarball. Download +the aolserver tarball +and unpack it.[root root]#cd /usr/local/src
[root src]#wget --passive http://uptime.openacs.org/aolserver-openacs/aolserver3.3oacs1.tar.gz
--15:38:08-- http://uptime.openacs.org/aolserver-openacs/aolserver3.3oacs1.tar.gz => `aolserver3.3oacs1.tar.gz' @@ -40,16 +38,13 @@ wget --passive http://uptime.openacs.org/aolserver-openacs/aolserver3.3oacs1.tar.gz tar xzf aolserver3.3oacs1.tar.gzThis section also relies on some OpenACS files, which you can -get with the section called -“Unpack the OpenACS -tarball”.
+get with the section called “Unpack the OpenACS +tarball”.
-Compile AOLserver. Compile and -install AOLserver. First, prepare the installation directory and -the source code. The message about BUILD-MODULES can be -ignored.
-root\@yourserver root]#mkdir -p /usr/local/aolserver
+Compile AOLserver. Compile and install +AOLserver. First, prepare the installation directory and the source +code. The message about BUILD-MODULES can be ignored.root\@yourserver root]#mkdir -p /usr/local/aolserver
[root root]#cd /usr/local/src/aolserver
[root aolserver]#./conf-clean
cat: BUILD-MODULES: No such file or directory @@ -63,10 +58,8 @@ properly.
conf-inst
should contain the location where AOLserver is to be installed. Overwrite the -tarball's default value with our default value,/usr/local/aolserver
:-[root aolserver]#echo "/usr/local/aolserver" > conf-inst
-[root aolserver]# -+tarball's default value with our default value,
/usr/local/aolserver
:[root aolserver]#echo "/usr/local/aolserver" > conf-inst
+[root aolserver]#
conf-make
should contain the name of the GNU Make command on your system. It defaults togmake
. Debian users: @@ -77,8 +70,7 @@ AOLserver 3.3+ad13 and postgresql from apt-get may need to make these symlinks:ln -s /usr/include/postgresql/ /usr/include/pgsql
andln -s /usr/lib/postgresql -/usr/local/pgsql
)-[root aolserver]#export POSTGRES=/usr/local/pgsql; ./conf
+/usr/local/pgsql)[root aolserver]#export POSTGRES=/usr/local/pgsql; ./conf
Building in /usr/local/aolserver with the following modules: AOLserver @@ -99,8 +91,7 @@ Creating ... ================================================================== Done Building Sat Mar 8 10:31:35 PST 2003 -[root aolserver]# -This takes about 5 minutes. It builds aolserver, several +[root aolserver]#
This takes about 5 minutes. It builds aolserver, several modules, and the database driver. (Upgraders, note that the postgres database driver has changed from postgres.so to nspostgres.so). All of the results are logged to files in @@ -109,15 +100,14 @@ build errors.
-Add a database-specific wrapper -script. This script sets database environment -variables before starting AOLserver; this allows the AOLserver -instance can communicate with the database. There is one script -each for Oracle and PostgreSQL. They don't conflict, so if you -plan to use both databases, install both.
Oracle
-[root aolserver]#cd /usr/local/aolserver/bin
+Oracle
[root aolserver]#cd /usr/local/aolserver/bin
[root bin]#cp /var/tmp/openacs-5.9.0/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
[root bin]#chmod 750 nsd-oracle
[root bin]# @@ -126,8 +116,7 @@ chmod 750 nsd-oracle
PostgreSQL
-[root aolserver]#cd /usr/local/aolserver/bin
+PostgreSQL
[root aolserver]#cd /usr/local/aolserver/bin
[root bin]#cp /var/tmp/openacs-5.9.0/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres
[root bin]#chmod 755 nsd-postgres
[root bin]# @@ -139,11 +128,9 @@
-Install tDOM. Download the -tDOM +Install tDOM. Download the tDOM tarball, unpack it, adjust the configuration file to match our -patched distribution of aolserver, and compile it.
-[root root]#cd /usr/local/src
+patched distribution of aolserver, and compile it.[root root]#cd /usr/local/src
[root src]#wget --passive http://www.tdom.org/tDOM-0.7.8.tar.gz
--16:40:58-- http://www.tdom.org/tDOM-0.7.8.tar.gz => `tDOM-0.7.8.tar.gz' @@ -168,15 +155,12 @@ # aolsrc="/usr/src/aolserver-3.4" # ../configure --enable-threads --disable-tdomalloc \ # --with-aolserver=$aolsrc \ -# --with-tcl=$aolsrc/tcl8.3.4/unix -to
+# --with-tcl=$aolsrc/tcl8.3.4/unixto
# ---------------------------------------------------- aolsrc="/usr/local/src/aolserver/aolserver" ../configure --enable-threads --disable-tdomalloc \ --with-aolserver=$aolsrc \ - --with-tcl=$aolsrc/tcl8.3.2/unix -And configure and compile:
-[root unix]#sh CONFIG
+ --with-tcl=$aolsrc/tcl8.3.2/unixAnd configure and compile:
[root unix]#sh CONFIG
creating cache ./config.cache checking for memmove... yes (many lines omitted) @@ -212,8 +196,7 @@ sample-config.tcl configuration writes to the default log locations, so we need to give it permission to do so or it will fail. Grant theweb
group -permission to write to/usr/local/aolserver/log
and/usr/local/aolserver/servers
.-[root root]#cd /usr/local/aolserver
+permission to write to/usr/local/aolserver/log
and/usr/local/aolserver/servers
.[root root]#cd /usr/local/aolserver
[root aolserver]#chown -R root.web log servers
[root aolserver]#chmod -R g+w log servers
[root aolserver]#ls -l
@@ -239,15 +222,13 @@ correctly. We'll use the sample config file provided with AOLserver. This file will attempt to guess your IP address and hostname. It will then start up the server at port 8000 of that IP -address.-[root aolserver]#./bin/nsd -t sample-config.tcl -u nobody -g web
+address.[root aolserver]#./bin/nsd -t sample-config.tcl -u nobody -g web
[root aolserver]# [08/Mar/2003:15:07:18][31175.8192][-main-] Notice: config.tcl: starting to read config file... [08/Mar/2003:15:07:18][31175.8192][-main-] Warning: config.tcl: nsssl not loaded -- key/cert files do not exist. [08/Mar/2003:15:07:18][31175.8192][-main-] Warning: config.tcl: nscp not loaded -- user/password is not set. [08/Mar/2003:15:07:18][31175.8192][-main-] Notice: config.tcl: finished reading -config file. -The first warning, about nsssl, can be ignored. We won't be +config file.
The first warning, about nsssl, can be ignored. We won't be using nsssl; we'll be using nsopenssl instead, and we haven't fully configured it yet. The nscp warning refers to the fact that, without a user and password in the config file, the @@ -257,57 +238,50 @@ computer and surfing over to your web page. If you browse from another computer and the sample config file didn't guess your hostname or ip correctly, you'll get a false -negative test.
-[root aolserver]#lynx localhost:8000
+negative test.[root aolserver]#lynx localhost:8000
You should see a "Welcome to AOLserver" page. If this doesn't work, try going to
http://127.0.0.1:8000/
. If this still doesn't work, check out the Troubleshooting AOLserver section below. Note that you will not be able to browse to the web page from another machine, because AOLserver is -only listening to the local address.Shutdown the test server:
-[root aolserver]#killall nsd
-[root aolserver]# -The
killall
command will +only listening to the local address.Shutdown the test server:
[root aolserver]#killall nsd
+[root aolserver]#The
killall
command will kill all processes with the namensd
, but clearly this is not a good tool to use for managing your services in general. We cover this topic in the Keep AOLserver alive section.
-Troubleshooting. If you can't
-view the welcome page, it's likely there's a problem with
-your server configuration. Start by viewing your AOLserver log,
-which is in /usr/local/aolserver/log/server.log
. You
+Troubleshooting. If you can't view
+the welcome page, it's likely there's a problem with your
+server configuration. Start by viewing your AOLserver log, which is
+in /usr/local/aolserver/log/server.log
. You
should also try to find lines of the form:
[01/Jun/2000:12:11:20][5914.4051][-nssock-] Notice: nssock: listening on http://localhost.localdomain:8000 (127.0.0.1:8000) -[01/Jun/2000:12:11:20][5914.4051][-nssock-] Notice: accepting connections -
If you can find these lines, try entering the URL the server is +[01/Jun/2000:12:11:20][5914.4051][-nssock-] Notice: accepting connections
If you can find these lines, try entering the URL the server is
listening on. If you cannot find these lines, there must be an
error somewhere in the file. Search for lines beginning with the
word Error
instead of
Notice
.
The sample-config.tcl
file
grabs your address and hostname from your OS settings.
set hostname [ns_info hostname] -set address [ns_info address] -
If you get an error that nssock can't get the requested +set address [ns_info address]
If you get an error that nssock can't get the requested
address, you can set these manually. If you type 0.0.0.0, AOLserver
will try to listen on all available addresses. Note: ns_info address
doesn't appear to be
supported in current versions of AOLserver.
set hostname [ns_info hostname] #set address [ns_info address] -set address 0.0.0.0 -+set address 0.0.0.0
Install Analog web file analyzer. (OPTIONAL)
($Id: aolserver.xml,v 1.23 2017/08/07 23:47:54 gustafn Exp $)
by Malte
Sussdorff
@@ -16,8 +16,7 @@
Check suitability of previously installed
TCL. Start Tcl (type tclsh
or find it using
-which tclsh
).
-[root root]%
info exists tcl_platform(threaded)
+which tclsh
).
[root root]%info exists tcl_platform(threaded)
1 [root root]%info patchlevel
8.4.7 @@ -30,8 +29,8 @@ threaded and the version is 8.4 or higher, then installing Tcl from source is optional.Retrieve -Tcl 8.4 (or higher). Download and install Tcl -8.4 from source
Note for Debian users: you can apt-get install tcl8.4-dev if you +Tcl 8.4 (or higher). Download and install Tcl 8.4 +from source
Note for Debian users: you can apt-get install tcl8.4-dev if you have the right version (stable users will need to add tcl8.4 to their sources.list file as described on the Install Postgres page). You'll have to use /usr/lib/tcl8.4/ instead of @@ -44,8 +43,7 @@ instructions. On Mac OS X type
sudo su -
to become root.Alternatively use
curl -L -O
instead ofwget
(especially on Mac OS -X).-[root root]#cd /usr/local/src
+X).[root root]#cd /usr/local/src
[root src]#wget http://heanet.dl.sourceforge.net/sourceforge/tcl/tcl8.4.9-src.tar.gz
[root src]#tar xfz tcl8.4.9-src.tar.gz
[root src]#cd tcl8.4.9/unix
@@ -62,8 +60,7 @@
Retrieve AOLserver. Download the -AOLserver from CVS.
-[root root]#cd /usr/local/src
+AOLserver from CVS.[root root]#cd /usr/local/src
[root src]#mkdir aolserver40r10
[root src]#cd aolserver40r10
[root aolserver]#cvs -z3 -d:pserver:anonymous\@cvs.sourceforge.net:/cvsroot/aolserver login
@@ -90,11 +87,10 @@
-Configure, compile and install
-AOLserver. Many people need to run more than
-one version of AOLserver in parallel. This section accommodates
-future upgrades by installing AOLserver 4 in /usr/local/aolserver40r9
.
-[root aolserver]#cd /usr/local/src/aolserver40r10/aolserver
+Configure, compile and install AOLserver. +Many people need to run more than one version of AOLserver in +parallel. This section accommodates future upgrades by installing +AOLserver 4 in/usr/local/aolserver40r9
.[root aolserver]#cd /usr/local/src/aolserver40r10/aolserver
[root aolserver]#./configure --prefix=/usr/local/aolserver40r10 --with-tcl=/usr/local/lib/
[root aolserver]#make install
cd /usr/local/src/aolserver40r10/aolserver ./configure --prefix=/usr/local/aolserver40r10 --with-tcl=/usr/local/lib/ @@ -106,95 +102,79 @@/usr/local/aolserver40r10
instead of/usr/local/aolserver
in the steps below and check both scripts and makefiles to ensure -they use the correct path.-[root aolserver]#ln -s /usr/local/aolserver40r10 /usr/local/aolserver
+they use the correct path.[root aolserver]#ln -s /usr/local/aolserver40r10 /usr/local/aolserver
Configure, compile and install the modules.
Install nscache
-[root aolserver]#cd /usr/local/src/aolserver40r10/nscache
+Install nscache
[root aolserver]#cd /usr/local/src/aolserver40r10/nscache
[root nscache]#make install AOLSERVER=/usr/local/aolserver
Install nsoracle (if you want to use Oracle)
-[root nscache]#cd ../nsoracle
+Install nsoracle (if you want to use Oracle)
[root nscache]#cd ../nsoracle
[root nsoracle]#make install AOLSERVER=/usr/local/aolserver
OpenACS looks for the Oracle driver at /usr/local/aolserver/bin/ora8.so, but some versions of nsoracle may create nsoracle.so instead. In that case, you can symlink (
ln -s nsoracle.so ora8.so
) to fix it.
Install nspostgres (if you want to use Postgres)
-[root nscache]#cd ../nspostgres
+Install nspostgres (if you want to use Postgres)
[root nscache]#cd ../nspostgres
[root nspostgres]#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib:/usr/local/aolserver/lib
[root nspostgres]#make install POSTGRES=LSB ACS=1 INST=/usr/local/aolserver AOLSERVER=/usr/local/aolserver
If you get errors like:
nspostgres.c: In function `Ns_PgTableList': -nspostgres.c:679: warning: passing arg 3 of `Tcl_DStringAppend' as signed due to prototype -then PostGreSQL is probably not in the standard location. The +nspostgres.c:679: warning: passing arg 3 of `Tcl_DStringAppend' as signed due to prototype
then PostGreSQL is probably not in the standard location. The
location of PostGreSQL is very dependent on which method was used
to install it. To correct the problem, replace LSB
with the path to the path to your
PostGreSQL installation. Often this is /usr/local/pgsql
.
You can use the ldd
command
to verify that all libraries are linked in: ldd
/usr/local/src/aolserver40r10/nspostgres/nspostgres.so
If you run into problems with libpq.a do the following (and -repeat the step above)
-[root nspostgres]#ranlib /usr/local/pgsql/lib/libpq.a
+repeat the step above)[root nspostgres]#ranlib /usr/local/pgsql/lib/libpq.a
If you run into problems with the linker, edit the Makefile. Add -
-lnsdb
to theMODLIBS
var.-MODLIBS = -L$(PGLIB) -lpq -lnsdb +-lnsdb
to theMODLIBS
var.MODLIBS = -L$(PGLIB) -lpq -lnsdb
Install nssha1
-[root nspostgres]# cd ../nssha1
-
Now install nssha1:
-[root nssha1]#make install AOLSERVER=/usr/local/aolserver
+Install nssha1
[root nspostgres]#cd ../nssha1
+Now install nssha1:
[root nssha1]#make install AOLSERVER=/usr/local/aolserver
If the make fails you will have to edit nssha1.c. Comment out the following 2 lines (lines 139-140):
// typedef unsigned int u_int32_t; -// typedef unsigned char u_int8_t; -+// typedef unsigned char u_int8_t;
Install tDOM
-[root nssha1]#cd ../tDOM-0.8.0/unix
+Install tDOM
[root nssha1]#cd ../tDOM-0.8.0/unix
Edit the
CONFIG
file. Uncomment the instructions meant for AOLserver 4, but edit it to look like this:../configure --enable-threads --disable-tdomalloc - --prefix=/usr/local/aolserver --with-tcl=/usr/local/lib -Note that the location of the Tcl library may vary on different -platforms (e.g. for Debian 3.0: --with-tcl=/usr/lib/tcl8.4)
Now you can compile and configure tDOM
-[root unix]#sh CONFIG
+ --prefix=/usr/local/aolserver --with-tcl=/usr/local/libNote that the location of the Tcl library may vary on different +platforms (e.g. for Debian 3.0: --with-tcl=/usr/lib/tcl8.4)
Now you can compile and configure tDOM
[root unix]#sh CONFIG
[root unix]#make install
Install TCLLIB
-[root nssha1]# cd ../tcllib
-
Configure and compile TCLLIB
-[root unix]#./configure -prefix=/usr/local/aolserver40r10
+Install TCLLIB
[root nssha1]#cd ../tcllib
+Configure and compile TCLLIB
[root unix]#./configure -prefix=/usr/local/aolserver40r10
[root unix]#make install
-Add a database-specific wrapper -script. This script sets database environment -variables before starting AOLserver; this allows the AOLserver -instance to communicate with the database. There is one script for -Oracle and one for PostgreSQL. They do not conflict. If you plan to -use both databases, install both. Note that this section requires -you to have OpenACS files available, which you can get through CVS, +Add a database-specific wrapper script. +This script sets database environment variables before starting +AOLserver; this allows the AOLserver instance to communicate with +the database. There is one script for Oracle and one for +PostgreSQL. They do not conflict. If you plan to use both +databases, install both. Note that this section requires you to +have OpenACS files available, which you can get through CVS, through a tarball, or by other means. You can come back to this section after you acquire the OpenACS code, but don't forget to come back. (Note to maintainers: this should be moved to the next page and integrated into the text there)
Oracle
-[root aolserver]#cd /usr/local/aolserver/bin
+Oracle
[root aolserver]#cd /usr/local/aolserver/bin
[root bin]#cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/nsd-oracle.txt ./nsd-oracle
[root bin]#chmod 750 nsd-oracle
[root bin]# @@ -203,8 +183,7 @@ chmod 750 nsd-oracle
PostgreSQL
-[root aolserver]#cd /usr/local/aolserver/bin
+PostgreSQL
[root aolserver]#cd /usr/local/aolserver/bin
[root bin]#cp /var/tmp/openacs-5.9.0/packages/acs-core-docs/www/files/nsd-postgres.txt ./nsd-postgres
[root bin]#chmod 755 nsd-postgres
[root bin]# @@ -216,8 +195,8 @@
You may need to edit these scripts if you are not using /usr/local/aolserver as the directory of Aolserver4.
-Change startup script (optional).
-If you want to run AOLserver on a port below 1024 (normally, for a
+Change startup script (optional). If you
+want to run AOLserver on a port below 1024 (normally, for a
webserver you will use 80), you will have to change the
/var/lib/aolserver/
script according to the documentation found there (namely: Add the
@@ -229,8 +208,8 @@
23:47:54 gustafn Exp $)service0
/etc/daemontools/run
By Bryan Quinn
</authorblurb>An installation of the OpenACS includes the OpenACS Kernel, some services that extend the kernel's functionality, and some applications intended for end-users. Packages function as @@ -690,8 +690,8 @@
By Bryan Quinn and Todd Nightingale
</authorblurb>The recommended backup strategy for a production sit is to use an automated script which first backs up the database to a file in @@ -19,21 +19,18 @@
Make sure that the manual backup process described above works.
Customize the default backup script. Edit /var/lib/aolserver/
with your specific parameters.$OPENACS_SERVICE_NAME
/etc/backup.sh
Make sure the file is executable:
-chmod +x backup.sh -+
Make sure the file is executable:
chmod +x backup.sh
Set this file to run automatically by adding a line to
root's crontab. (Typically, with export EDITOR=emacs; crontab -e
.) This
example runs the backup script at 1:30 am every day.
-30 1 * * * sh /var/lib/aolserver/$OPENACS_SERVICE_NAME
/etc/backup.sh
-
+30 1 * * * sh /var/lib/aolserver/$OPENACS_SERVICE_NAME
/etc/backup.sh
By Jeff Davis
</authorblurb>Best practices in writing OpenACS automated tests
-Special characters in Tcl. Try
-strings starting with a -Bad
-and strings containing [BAD]
,
+Special characters in Tcl. Try strings
+starting with a -Bad
and
+strings containing [BAD]
,
{
, \077
, and $Bad
. For user input, [BAD]
should never be evaluated,
\077
should not be turned into
a ?
and $Bad
should not be interpolated. The string
-Bad [BAD] \077 { $Bad
should
be valid user input, should pass through the system unaltered, and
if it isn't that's a bug.
-Quoting issues. Put some html in
-plain text fields and make sure the result is properly quoted
-anywhere it shows up (I use "<b>bold</b>"
-usually). Look out especially for quoting errors in the context bar
-and in round trips via an edit form. For fields that disallow html
-tags you can use &
to
-check that the field is quoted properly. If it is not displayed as
-&
then the quoting for
-the field is incorrect. (It's not clear whether this should be
-considered an error but given that data for text fields can come
-from various sources if it's text it should be properly quoted
-and we should not rely on input validation to prevent XSS security
-holes.)
-Whitespace input. Check that
-whitespace is not considered valid input for a field if it does not
-make sense. For example, the subject of a forum post is used to
+Quoting issues. Put some html in plain
+text fields and make sure the result is properly quoted anywhere it
+shows up (I use "<b>bold</b>" usually). Look
+out especially for quoting errors in the context bar and in round
+trips via an edit form. For fields that disallow html tags you can
+use &
to check that the
+field is quoted properly. If it is not displayed as &
then the quoting for the field is
+incorrect. (It's not clear whether this should be considered an
+error but given that data for text fields can come from various
+sources if it's text it should be properly quoted and we should
+not rely on input validation to prevent XSS security holes.)
+Whitespace input. Check that whitespace
+is not considered valid input for a field if it does not make
+sense. For example, the subject of a forum post is used to
construct a link and if it is " " it will have a link of
<a href="...">
</a>
which would not be clickable if whitespace was
allowed as a valid input.
-Doubleclick. Make sure that if you -submit a form, use the back button, and submit again that the -behavior is reasonable (correct behavior depends on what the form -is for, but a server error is not reasonable).
-Duplicate names. Make sure that if -a duplicate name is entered that there is a reasonable error rather +Doubleclick. Make sure that if you submit +a form, use the back button, and submit again that the behavior is +reasonable (correct behavior depends on what the form is for, but a +server error is not reasonable).
+Duplicate names. Make sure that if a +duplicate name is entered that there is a reasonable error rather than a server error. Check for insert, move, copy, and rename.
($Id: auto-testing.xml,v 1.4 2017/08/07 23:47:54 gustafn Exp $)
Table of Contents
There are three basic things which need to be backed up, the database data, the server source tree, and the acs-content-repository (which is in the server source tree).
-
Figure 8.1. Backup and Recovery Strategy
CVS-only backup is often appropriate for development sites. If
you are already using CVS and your data is not important, you
@@ -17,8 +17,7 @@
down to the minute. For maximum safety, you can apply a tag to your
current files. You will still need to back up your database. Note that, if you did the CVS options in this document, the
To restore files from a cvs tag such as the one used above: To restore files from a cvs tag such as the one used above: After you've installed and mounted your package, you can
configure each instance to act as you would like. This is done from the Applications page. Log in, go to the Admin
or Control Panel, click on the subsite the application is in, and
click on Applications. If you click on the 'Parameters'
@@ -23,9 +22,9 @@
by Jade Rubick After you've installed and mounted your package, you can
configure each instance to act as you would like. by Jade Rubick
After you've installed and mounted your package, you can
configure each instance to act as you would like. This is done from the Applications page. Log in, go to the Admin
or Control Panel, click on the subsite the application is in, and
@@ -30,8 +29,8 @@
by Jade Rubick After you've installed and mounted your package, you can
configure each instance to act as you would like. An OpenACS package extends your website and lets it do things it
wasn't able to do before. You can have a weblog, a forums, a
calendar, or even do sophisticated project-management via your
website. After you've installed OpenACS, you can congratulate
@@ -32,20 +31,18 @@
system will check to make sure you have all necessary packages that
the package you want depends on. If you're installing from
Local Files, and you are missing any packages, you may have to add
-the packages your desired package depends on: the section called
-“Upgrading the OpenACS
-files”
+the packages your desired package depends on: the section called “Upgrading the
+OpenACS files”
If you run into any errors at all, check your
/var/lib/aolserver/$OPENACS_SERVICE_NAME/log/error.log file, and
post your error on the OpenACS forums Once the package has been installed, then you will need to
'mount' the package. The next section handles that. by Jade Rubick An OpenACS package extends your website and lets it do
Index: openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.adp,v
diff -u -N -r1.3 -r1.4
--- openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.adp 8 Nov 2017 09:42:10 -0000 1.3
+++ openacs-4/packages/acs-core-docs/www/configuring-mounting-packages.adp 25 Apr 2018 08:38:27 -0000 1.4
@@ -3,17 +3,16 @@
After you've installed your packages, you have to
'mount' them in order to make them appear on your
website. Make sure you are logged in, and then click on the
'Admin' or 'Control Panel' link to get to the
@@ -34,8 +33,8 @@
by Jade Rubick After you've installed your packages, you have to 'mount'
Index: openacs-4/packages/acs-core-docs/www/configuring-new-site.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/configuring-new-site.adp,v
diff -u -N -r1.3 -r1.4
--- openacs-4/packages/acs-core-docs/www/configuring-new-site.adp 8 Nov 2017 09:42:10 -0000 1.3
+++ openacs-4/packages/acs-core-docs/www/configuring-new-site.adp 25 Apr 2018 08:38:27 -0000 1.4
@@ -1,18 +1,16 @@
- Table of Contents Table of Contents
All questions and
comments regarding this guide should be posted on
-the OpenACS forums. ($Id: credits.xml,v 1.13 2017/08/07
-23:47:54 gustafn Exp $) ($Id: credits.xml,v 1.14 2018/04/04
+18:51:56 hectorr Exp $) ($Id: cvs.xml,v
-1.7 2017/08/07 23:47:54 gustafn Exp $) By Joel Aufrecht with input from Jeff Davis, Branimir Dolicki,
+1.8 2018/03/27 11:18:00 hectorr Exp $) By Joel Aufrecht with input from Jeff Davis, Branimir Dolicki,
and Jade Rubick. All OpenACS code is available anonymously. To get code
anonymously, use the parameter If you are an OpenACS developer, you should check out code so
@@ -36,8 +36,7 @@
With this setup, you will be asked for your password with each
cvs command. To avoid this, set up ssh certificate authentication
@@ -61,15 +60,12 @@
Grant cvs access to the user account. On any machine, in a
temporary directory: Add an avail line of the form: Add an avail line of the form: If you are actively developing a non-core package, you should
work from the latest core release branch. Currently this is
oacs-5-9. This ensures that you are working on top of a stable
OpenACS core, but still allows you to commit feature changes to
@@ -97,7 +93,7 @@
packages and their current state. If you are actively developing packages in the OpenACS Core,
work from the HEAD branch. HEAD is used for active development of
the next version of core OpenACS. It may be very buggy; it may not
even install correctly. Do not use this branch for development of
@@ -106,7 +102,7 @@
developer account: To check out HEAD anonymously:
Index: openacs-4/packages/acs-core-docs/www/backups-with-cvs.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/backups-with-cvs.adp,v
diff -u -N -r1.3 -r1.4
--- openacs-4/packages/acs-core-docs/www/backups-with-cvs.adp 8 Nov 2017 09:42:10 -0000 1.3
+++ openacs-4/packages/acs-core-docs/www/backups-with-cvs.adp 25 Apr 2018 08:38:27 -0000 1.4
@@ -3,11 +3,11 @@
/var/lib/aolserver/$OPENACS_SERVICE_NAME/etc
-directory is not included in cvs and you may want to add it.
-[root root]#
su - $OPENACS_SERVICE_NAME
+directory is not included in cvs and you may want to add it.[root root]#
su - $OPENACS_SERVICE_NAME
[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver/
[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ $OPENACS_SERVICE_NAME
cvs commit -m "last-minute commits before upgrade to 4.6"
@@ -37,8 +36,7 @@
cvs commit -m "last-minute commits before upgrade to 4.6"
cvs tag before_upgrade_to_4_6
exit
-
-[root root]#
su - $OPENACS_SERVICE_NAME
+[root root]#
su - $OPENACS_SERVICE_NAME
[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver/
[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ $OPENACS_SERVICE_NAME
cvs up -r current
@@ -48,9 +46,9 @@
@@ -41,13 +41,13 @@
Malte Sussdorff, Stan Kaufman and Pascal Scheffers.
-d:pserver:anonymous\@cvs.openacs.org:/cvsroot
immediately after cvs
in a cvs
command to check out or export code.export CVS_RSH=ssh
into
~/.bash_profile
.). If your
local account name does not match your cvs.openacs.org account
-name, create a file ~/.ssh/config
with an entry like:
-Host cvs.openacs.org
+name, create a file
~/.ssh/config
with an entry like:Host cvs.openacs.org
User joel
cvs -d :ext:cvs.openacs.org:/cvsroot co CVSROOT
cd CVSROOT
-emacs avail
-avail|
username
|openacs-4
-cvs commit -m "added commit on X for username" avail
+emacs availavail|
username
|openacs-4cvs commit -m "added commit on X for username" avail
cvs -d:ext:cvs.openacs.org:/cvsroot checkout acs-core
cvs -d:pserver:anonymous\@cvs.openacs.org:/cvsroot checkout acs-core
.LRN consists of a given version OpenACS core, plus a set of packages. These are collectively packages together to form a distribution of .LRN. F .LRN 2.0.0 sits on top of OpenACS 5.0.0. .LRN also uses an OpenACS install.xml file during installation; @@ -131,7 +127,7 @@
All OpenACS code resides within a single CVS module,
openacs-4
. (The openacs-4
directory contains code for all versions of OpenACS 4 and later,
and .LRN 1 and later.) Checking out this module retrieves all
@@ -140,8 +136,7 @@
acs-core
contains only
critical common packages. It does not have any user applications,
such as forums, bug-tracker, calendar, or ecommerce. These can be
-added at any time.
The complete list of core packages is:
-acs-admin +added at any time.The complete list of core packages is:
acs-admin acs-api-browser acs-authentication acs-automated-testing @@ -157,8 +152,7 @@ acs-subsite acs-tcl acs-templating -ref-timezones search -+ref-timezones search
dotlrn-all
contains the
packages required, in combination with acs-core, to run the .LRN
system.
@@ -168,7 +162,7 @@ module of the same name.
Tags and Branches look similar in commands, but behave differently. A tag is a fixed point on a branch. Check out a tag to get a specific version of OpenACS. Check out a branch to get the most current code for that major-minor version (e.g., 5.0.x or @@ -233,9 +227,8 @@ repository:
Use one of the checkout methods described above to get files to your system. This takes the place of steps 1 and 2 in the section called -“Installation Option 2: Install from -tarball”. Continue setting up the site as described -there.
Fix bugs and add features.
Fix bugs and add features.
Commit that file (or files):
cvs commit -m "what I did and why" filename
Because this occurs in your personal checkout and not an
anonymous one, this commit automagically moves back upstream to the
Mother Ship repository at cvs.openacs.org. The names of the changed
@@ -266,7 +259,6 @@
Checking in modules;
/cvsroot/CVSROOT/modules,v <-- modules
-
new revision: 1.94; previous revision: 1.93
done
@@ -275,13 +267,11 @@
Although you should add your package on HEAD, you should do package development on the latest release branch that your code is compatible with. So, after completing the import, you may want to -branch your package:
-cd /var/lib/aolserver/service0
/packages/newpackage
+branch your package:cd /var/lib/aolserver/service0
/packages/newpackage
cvs tag -boacs-5-1
See the section called -“How to package and release an OpenACS -Package” +“How to package and release an OpenACS Package”
Some packages are already in cvs at openacs-4/contrib/packages
. Starting with
@@ -291,8 +281,7 @@
/packages
. This must be done by
an OpenACS administrator. On cvs.openacs.org:
-cp -r /cvsroot/openacs-4/contrib/packages/package0
/cvsroot/openacs-4/packages
-
Update the modules file as described above.
Remove the directory from cvs in the old location using
+cp -r /cvsroot/openacs-4/contrib/packages/package0
/cvsroot/openacs-4/packages
Update the modules file as described above.
Remove the directory from cvs in the old location using
cvs rm
. One approach
for file in `find | grep -v CVS`; do
rm $file; cvs remove $file; done
@@ -409,7 +398,7 @@
Informal guidelines which may be obsolete in places and should be reviewed:
Before committing to cvs you must submit a bug report and patch to the OpenACS bug @@ -453,8 +442,8 @@
If you are actively developing a non-core package, you should work from the latest core release branch. Currently this @@ -120,7 +120,7 @@
If you are actively developing packages in the OpenACS Core, work from the HEAD branch. HEAD is used for active @@ -136,7 +136,7 @@
cvs -d:pserver:anonymous@cvs.openacs.org:/cvsroot checkout acs-core
.LRN consists of a given version OpenACS core, plus a set of @@ -165,7 +165,7 @@
All OpenACS code resides within a single CVS module, openacs-4
. (The openacs-4 directory contains code for all versions of OpenACS 4 and later, and .LRN 1 and later.) Checking out this module retrieves all OpenACS code of any type. For convenience, subsets of openacs-4
are repackaged as smaller modules.
By Joel +Appendix D. Using CVS with an OpenACS +Site
-Add the Service to CVS - OPTIONAL. These steps take an existing OpenACS -directory and add it to a CVS repository.
Create and set permissions on a subdirectory in the local cvs -repository.
-[root root]# mkdir /cvsroot/$OPENACS_SERVICE_NAME
+repository.[root root]# mkdir /cvsroot/$OPENACS_SERVICE_NAME
[root root]# chown $OPENACS_SERVICE_NAME.$OPENACS_SERVICE_NAME
/cvsroot/$OPENACS_SERVICE_NAME
@@ -33,18 +30,14 @@
Add the repository location to the user environment. On some systems, you may get better results with .bash_profile instead of -.bashrc.
-[root root]# su - $OPENACS_SERVICE_NAME
+.bashrc.[root root]# su - $OPENACS_SERVICE_NAME
[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ emacs .bashrc
-
Put this string into /home/$OPENACS_SERVICE_NAME
/.bashrc
:
-export CVSROOT=/cvsroot
-
+
Put this string into /home/$OPENACS_SERVICE_NAME
/.bashrc
:
export CVSROOT=/cvsroot
[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ exit
logout
-[root root]#
-
+[root root]#
Import all files into cvs. In order to work on files with source control, the files must be checked out from cvs. So we will import, @@ -55,8 +48,7 @@ . "OpenACS" is the vendor tag, and "oacs-5-9-0-final" is the release tag. These tags will be -useful in upgrading and branching. -m sets the version comment.
-[root root]# su - $OPENACS_SERVICE_NAME
+useful in upgrading and branching. -m sets the version comment.[root root]# su - $OPENACS_SERVICE_NAME
[$OPENACS_SERVICE_NAME $OPENACS_SERVICE_NAME]$ cd /var/lib/aolserver/$OPENACS_SERVICE_NAME
@@ -75,8 +67,7 @@
cvs import -m "initial install" $OPENACS_SERVICE_NAME
OpenACS oacs-5-9-0-final
exit
Move the original directory to a temporary location, and check
-out the cvs repository in its place.
-[root root]# mv /var/lib/aolserver/$OPENACS_SERVICE_NAME
/var/tmp
+out the cvs repository in its place.[root root]# mv /var/lib/aolserver/$OPENACS_SERVICE_NAME
/var/tmp
[root root]# mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME
[root root]# chown $OPENACS_SERVICE_NAME
.$OPENACS_SERVICE_NAME
/var/lib/aolserver/$OPENACS_SERVICE_NAME
@@ -109,9 +100,9 @@
Add the Service to CVS - OPTIONAL.
-
+
These steps take an existing OpenACS directory and add
it to a CVS
repository.
Index: openacs-4/packages/acs-core-docs/www/database-management.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/database-management.adp,v
diff -u -N -r1.3 -r1.4
--- openacs-4/packages/acs-core-docs/www/database-management.adp 8 Nov 2017 09:42:10 -0000 1.3
+++ openacs-4/packages/acs-core-docs/www/database-management.adp 25 Apr 2018 08:38:27 -0000 1.4
@@ -1,15 +1,13 @@
- By Jon Salz. Revised and
expanded by Roberto Mello (rmello at fslc dot usu dot edu), July
@@ -620,8 +620,7 @@
} {
set user_url [acs_community_member_url -user_id $user_id]
}
-
-
+
Returns the number of rows affected or returned by the previous
@@ -664,24 +663,21 @@
db_compatible_rdbms_p Returns 1 if the given db_type is compatible with the current
+ Returns 1 if the given db_type is compatible with the current
RDBMS. Returns 1 if db_type_list contains the current RDMBS type. A
+ Returns 1 if db_type_list contains the current RDMBS type. A
package intended to run with a given RDBMS must note this in
-its package info file regardless of whether or not it actually
+it's package info file regardless of whether or not it actually
uses the database. Returns 1 if the package is a legacy package. We can only tell
+ Returns 1 if the package is a legacy package. We can only tell
for certain if it explicitly supports Oracle 8.1.6 rather than the
OpenACS more general oracle.
Returns 1 if db_type_list contains the current RDMBS type. A package
- intended to run with a given RDBMS must note this in its package info
+ intended to run with a given RDBMS must note this in it's package info
file regardless of whether or not it actually uses the database.
By Pete Su and Jon Salz. Modified by Roberto Mello. There are several things to note here: There are several things to note here: No explicit code for grabbing and releasing handles. Usage of
the Database API implicitly deals with all handle management
issues. The There are a few problems with this: There are a few problems with this: If the value of $foo is a huge string, then we waste a lot of
time in the database server doing useless parsing. Second, if the literal value contains characters like single
quotes, we have to be careful to properly escape them, because not
@@ -115,8 +113,7 @@
set condition "where foo = bar"
db_foreach my_query { select :table from some_table where :condition }
-
- SQL will not allow a literal to occur where we've put the
+ SQL will not allow a literal to occur where we've put the
bind variables, so the query is syntactically incorrect. You have
to remember that while the bind variable syntax looks similar to
variable interpolation in Tcl, It is not
@@ -149,8 +146,7 @@
# of "administrator"
}
-
- The value of the local Tcl variable The value of the local Tcl variable The Alternatively, as an argument to Alternatively, as an argument to When processing a DML statement, Oracle coerces empty strings
@@ -222,22 +216,19 @@
# null, because Oracle has coerced the empty string (even for the
# numeric column "bar") into null in both cases
-
- Since databases other than Oracle do not coerce empty strings
+ Since databases other than Oracle do not coerce empty strings
into Therefore, the Database Access API provides a
database-independent way to represent Use it instead of the empty string whenever you want to set a
-column value explicitly to The database library will allocate this number of sequence
+ The database library will allocate this number of sequence
values at server startup. It will periodically scan pools and
allocate new values for sequences which are less than half-full.
(This normally occurs every 60 seconds, and is configurable via the
@@ -276,8 +266,7 @@
db_abort_transaction Aborts all levels of a transaction. That is if this is called
+ Aborts all levels of a transaction. That is if this is called
within several nested transactions, all of them are terminated. Use
this instead of You can also iterate over a multirow after it has been created -
+ You can also iterate over a multirow after it has been created -
check the documentation for template::multirow For example, Technically it's equivalent to using a code block on the end
+ Technically it's equivalent to using a code block on the end
of your db_multirow. The code block may contain The code block may contain Performs the SQL query Performs the SQL query Example: Performs the SQL query Performs the SQL query Returns the first column of the result of SQL query Returns the first column of the result of SQL query Returns a Tcl list of the values in the first column of the
+ Returns a Tcl list of the values in the first column of the
result of SQL query Returns a Tcl list, each element of which is a list of all
+ Returns a Tcl list, each element of which is a list of all
column values in a row of the result of SQL query Performs the DML or DDL statement If a length-n list of
+ Performs the DML or DDL statement If a length-n list of
blobs or clobs is provided, then the SQL should return n blobs or clobs into the bind variables
This inserts a new row into the This inserts a new row into the Analogous to Analogous to Releases any allocated, unused database handles. Releases any allocated, unused database handles. Executes Executes Returns the number of rows affected or returned by the previous
+ Returns the number of rows affected or returned by the previous
statement. To balance out this asymmetry, you can explicitly set
+ To balance out this asymmetry, you can explicitly set
($Id: db-api.xml,v 1.14 2017/08/07 23:47:54
gustafn Exp $) Table of Contents By Claus Rasmussen, with additions by Roberto Mello, Vinod
Kurup, and the OpenACS Community
-OpenACSâ„¢ is
-a powerful system with incredible possibilities and applications,
-but this power comes with some complexity and a steep learning
-curve that is only attenuated by good documentation. Our goal is to
-write superb documentation, so that users, developers and
-administrators of OpenACS installations can enjoy the system. The history of OpenACS documentation: ..began by building on a
+OpenACS™ is a powerful system
+with incredible possibilities and applications, but this power
+comes with some complexity and a steep learning curve that is only
+attenuated by good documentation. Our goal is to write superb
+documentation, so that users, developers and administrators of
+OpenACS installations can enjoy the system. The history of OpenACS documentation: ..began by building on a
good documentation base from ArsDigita's ACS in the late
1990's. Some sections of the documentation, however, lacked
details and examples; others simply did not exist. The OpenACS
@@ -159,8 +159,7 @@
Use generic DocBook syntax to maximize reader familiarity with
the documents. OpenACS documentation development is subject to the constraints
of the software project development and release methods and cycles
-(the section called
-“Using CVS with OpenACS”).
-Essentially, all phases of work may be active to accommodate the
-asynchronous nature of multiple subprojects evolving by the efforts
-of a global base of participants with culturally diverse time
-references and scheduling idiosyncrasies. The documentation strategy is to use project methods to involve
+(the section called “Using CVS with
+OpenACS”). Essentially, all phases of work may be active to
+accommodate the asynchronous nature of multiple subprojects
+evolving by the efforts of a global base of participants with
+culturally diverse time references and scheduling
+idiosyncrasies. The documentation strategy is to use project methods to involve
others by collaborating or obtaining guidance or feedback (peer
review) to distribute the workload and increase the overall value
of output for the OpenACS project.
- is a publishing standard based on XML
+ is a publishing standard based on XML
with similar goals to the OpenACS Documentation project. Some
specific reasons why we are using DocBook: It is open-source. The DocBook community mailing lists
@@ -450,7 +449,7 @@
of elements and use more exotic features in your documents. The
list is made up of SGML-elements but basically the same elements
are valid in the XML DTD as long as
-you remember to:
+you remember to:
- Given that your job starts at the
+ Given that your job starts at the
- You need to feed every
- The other attribute is Right after the opening tag you put the title of the document -
this is usually the same as
- Inside this container your document will
+ Inside this container your document will
be split up into
- For displaying a snippet of code, a
+ For displaying a snippet of code, a
filename or anything else you just want to appear as a part of a
sentence, we use
- Linking falls into two different
+ Linking falls into two different
categories: inside the book you're making and outside: By having unique
-Check out how I link to a subsection of
+Check out how I link to a subsection of
the Developer's Guide: Put this in your XML: And the output is: Note that since I haven't provided an
- If you're hyper-linking out of the
+ If you're hyper-linking out of the
documentation, it works almost the same way as HTML - the tag is
just a little different ( ....will create a hyper-link to Oracle in the HTML-version of
+<ulink url="http://www.oracle.com/">Oracle Corporation</ulink> ....will create a hyper-link to Oracle in the HTML-version of
the documentation.
NOTE: Do NOT use
ampersands in your hyperlinks. These are reserved for referencing
@@ -615,7 +612,7 @@
Note: The graphics guidelines are
not written in stone. Use another valid approach if it works better
for you.
- To insert a graphic we use the elements
+ To insert a graphic we use the elements
- Here's how you make the DocBook
+ Here's how you make the DocBook
equivalent of the three usual HTML-lists:
- DocBook supports several types of tables,
+ DocBook supports several types of tables,
but in most cases, the
- Our documentation uses two flavors of
+ Our documentation uses two flavors of
emphasis - italics and bold type. DocBook uses one - The
-
+
is a publishing standard based on XML with
similar goals to the OpenACS Documentation project. Some specific reasons why we are using DocBook:
-
+
Given that your job starts at the
-
+
You need to feed every
-
+
The other attribute is
-
+
Inside this container your document will be split up into
-
+
For displaying a snippet of code, a filename or anything else you just want to appear as a part of
a sentence, we use
-
+
Linking falls into two different categories: inside the book you're making and outside:
Check out how I link to a subsection of the Developer's Guide: Check out how I link to a subsection of the Developer's Guide: Put this in your XML:
-
+
If you're hyper-linking out of the documentation, it works almost the same way as HTML - the tag is just
a little different
@@ -1051,7 +1051,7 @@
-
+
To insert a graphic we use the elements
-
+
Here's how you make the DocBook equivalent of the three usual HTML-lists:
-
+
DocBook supports several types of tables, but in most cases, the
-
+
Our documentation uses two flavors of emphasis - italics and bold type. DocBook uses one -
By Michael Bryzek We can quickly identify and fix any errors. We can reliabily modify or drop constraints We can quickly identify and fix any errors. We can reliability modify or drop constraints
Why do we need a naming convention?Oracle limits names, in general, to 30
characters, which is hardly enough for a human readable constraint
@@ -124,14 +124,14 @@
immeditately in error debugging (e.g. the error will say something
like "Cannot insert null value into column"), we
recommend naming not null constraints to be consistent in our
-naming of all constraints. ($Id: constraint-naming.xml,v 1.7
-2017/08/07 23:47:54 gustafn Exp $) ($Id: constraint-naming.xml,v 1.10
+2018/03/24 00:14:57 hectorr Exp $) We can quickly identify and fix any errors. We can reliabily modify or drop constraints We can quickly identify and fix any errors. We can reliability modify or drop constraints
Why do we need a naming convention?
Index: openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.adp,v
diff -u -N -r1.3 -r1.4
--- openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.adp 8 Nov 2017 09:42:10 -0000 1.3
+++ openacs-4/packages/acs-core-docs/www/eng-standards-filenaming.adp 25 Apr 2018 08:38:27 -0000 1.4
@@ -3,11 +3,11 @@
By Richard Li and Yon
Feldman Like any other part of the OpenACS, PL/SQL (or pl/pgsql) code
@@ -140,14 +140,14 @@
browsers. This means that we should try to make it as consistent as
possible to all source code readers. Lowercase everything, with the exception of %TYPE and
%ROWTYPE. ($Id: plsql.xml,v 1.7 2017/08/07 23:47:54
+ ($Id: plsql.xml,v 1.8 2018/03/28 07:55:07
gustafn Exp $) ($Id:
eng-standards-versioning.xml,v 1.11 2017/08/07 23:47:54 gustafn Exp
@@ -45,8 +45,7 @@
Milestone markers are numbered: d1, d2, ..., a1, b1, rc1,
etc. A complete sequence of milestones between two releases: A complete sequence of milestones between two releases: Version numbers are also recorded in the CVS repository so that
+4.6.3 Version numbers are also recorded in the CVS repository so that
the code tree can be restored to the exact state it was in for a
particular release. To translate between a distribution tar file
(acs-3.2.2.tar.gz) and a CVS tag, just swap '.' for
@@ -112,8 +110,7 @@
<maturity>1</maturity>
<callbacks>
...
-
-
Level -1:
Incompatible. This package is not supported for
@@ -172,8 +169,8 @@
People have plenty of usernames and passwords already, we
don't want them to have yet another. We want people to be able
to log in to OpenACS with the same password they use to log in to
any other system. Besides, administrators have better things to do than create
@@ -74,7 +74,7 @@
All in all, the login box will be an includeable template and
+Specifically, if you want remote users who haven't yet
+logged-in to OpenACS to show up in user searches, you'll have
+to do the batch synchronization. All in all, the login box will be an includeable template and
look like this: I like the idea of having multiple login levels: Not logged in Untrusted login: We'll show you un-sensitive personal
+ Not logged-in Untrusted login: We'll show you un-sensitive personal
content, but won't let you modify anything or see personal
data. A normal login becomes untrusted after a certain amount of
time, and the user will have to re-enter his/her password in order
to gain access to personal data. Untrusted login never expires,
unless explicitly done so through either changing password or
-clicking a special "expire all logins" link. Normal login: The user is logged, and has type his password
+clicking a special "expire all logins" link. Normal login: The user is logged-in, and has type his password
sufficiently recently that we trust the login. All normal
operations are allowed. Will degrade to untrusted login after a
-specified amount of time. Secure login: The user is logged in over a secure connection
+specified amount of time. Secure login: The user is logged-in over a secure connection
(HTTPS), potentially even using a special secure password. This
would be for sensitive actions, such as credit card
transactions. By default, Similarly, This should ensure that we get full access to the new feature,
+continue to return 0 (not logged-in) when the user is only
+logged-in untrusted, and we'll supply another variable,
+ This should ensure that we get full access to the new feature,
while leaving all current code just as secure as it was before. Currently, if you've ever left a permanent login cookie on
-someone elses machine, that person will be forever logged in until
+someone elses machine, that person will be forever logged-in until
he/she explicitly logs out. You can change your password, you can
do anything you want, but unless a logout is requested from that
-particular browser, that browser will be logged in forever. I want to change our session handling code so that old login
+particular browser, that browser will be logged-in forever. I want to change our session handling code so that old login
cookies can be expired. This would be done automatically whenever
you change your password, and we could also offer a link which does
this without changing passwords. It's an important security
@@ -798,9 +799,9 @@
People have plenty of usernames and passwords already, we
don't want them to have yet another. We want people to be able to
log in to OpenACS with the same password they use to log in to any
@@ -72,7 +72,7 @@
All in all, the login box will be an includeable template and
@@ -451,16 +451,16 @@
I like the idea of having multiple login levels: Not logged in Untrusted login: We'll show you un-sensitive personal
+ Not logged-in Untrusted login: We'll show you un-sensitive personal
content, but won't let you modify anything or see personal data. A
normal login becomes untrusted after a certain amount of time, and
the user will have to re-enter his/her password in order to gain
access to personal data. Untrusted login never expires, unless
explicitly done so through either changing password or clicking a
- special "expire all logins" link. Normal login: The user is logged, and has type his
+ special "expire all logins" link. Normal login: The user is logged-in, and has type his
password sufficiently recently that we trust the login. All normal
operations are allowed. Will degrade to untrusted login after a
- specified amount of time. Secure login: The user is logged in over a secure
+ specified amount of time. Secure login: The user is logged-in over a secure
connection (HTTPS), potentially even using a special secure
password. This would be for sensitive actions, such as credit card
transactions. By default, Similarly, Currently, if you've ever left a permanent login cookie on
-someone elses machine, that person will be forever logged in until
+someone elses machine, that person will be forever logged-in until
he/she explicitly logs out. You can change your password, you can
do anything you want, but unless a logout is requested from that
-particular browser, that browser will be logged in forever. I want to change our session handling code so that old login
cookies can be expired. This would be done automatically whenever
you change your password, and we could also offer a link which does
Index: openacs-4/packages/acs-core-docs/www/filename.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/filename.adp,v
diff -u -N -r1.3 -r1.4
--- openacs-4/packages/acs-core-docs/www/filename.adp 8 Nov 2017 09:42:10 -0000 1.3
+++ openacs-4/packages/acs-core-docs/www/filename.adp 25 Apr 2018 08:38:27 -0000 1.4
@@ -3,11 +3,11 @@
Table of Contents Some elements have more than one choice, or can submit more than
one value.
-Creating the form element.
-Populate a list of lists with values for the option list. The variable Within ad_form, set up the element to use this list: Within ad_form, set up the element to use this list: This will result in a single name/value pair coming back in the
+ } This will result in a single name/value pair coming back in the
submitted form. Handle this within the same ad_form structure, in
the What this will do is set the value for pm_task_id and all the
+ What this will do is set the value for pm_task_id and all the
other form elements, and resubmit the form. If you then include a
block that extends the form, you'll have the opportunity to add
in subcategories: Note that you will get strange results when you try to set the
+ Note that you will get strange results when you try to set the
values for the form. You'll need to set them explicitly in an
-on_refresh section of your ad_form. In that section, you'll
-get the values from the database, and set the values as so: A good way to troubleshoot when you're using ad_form is to
@@ -93,8 +87,7 @@
ns_log notice the following form was submitted on my page
ns_set print $mypage
}
-
-
+
This generally happens when there is an error in your query. Some elements have more than one choice, or can submit more than one value.
@@ -114,7 +114,7 @@
Here are some common errors and what to do when you
encounter them: This generally happens when there is an error in your
query. Table of Contents By Rafael H. Schloming, Mark
Thomas A powerful web service that can meet the needs of large
-enterprises must be able to model the the real world's very
-rich organizational structures and many ways of decomposing the
-same organization. For example, a corporation can be broken into
+enterprises must be able to model the real world's very rich
+organizational structures and many ways of decomposing the same
+organization. For example, a corporation can be broken into
structures (the corporation, its divisions, and their departments)
or regions (the Boston office, the LA office); a person who is
employed by (is a member of) a specific department is also a member
@@ -383,8 +383,8 @@
A powerful web service that can meet the needs of large enterprises must
- be able to model the the real world's very rich organizational structures
+ be able to model the real world's very rich organizational structures
and many ways of decomposing the same organization. For example, a
corporation can be broken into structures (the corporation, its divisions,
and their departments) or regions (the Boston office, the LA office); a
Index: openacs-4/packages/acs-core-docs/www/high-avail.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/high-avail.adp,v
diff -u -N -r1.3 -r1.4
--- openacs-4/packages/acs-core-docs/www/high-avail.adp 8 Nov 2017 09:42:10 -0000 1.3
+++ openacs-4/packages/acs-core-docs/www/high-avail.adp 25 Apr 2018 08:38:27 -0000 1.4
@@ -3,25 +3,24 @@
See also the section
-called “Running a PostgreSQL database on another
-server”. See also the section called “Running a PostgreSQL database on another server”. Figure 6.1. Multiple-server configuration The easiest way is to install the Edit-This-Page package. Log in to the web site as an administrator. Click on Admin > Install Software > Install from OpenACS
Repository / Install new application Choose Edit This Page and install Follow the instructions within Edit This Page (the
link will only work after Edit This Page is installed). Go to Suppose you install a new site and install Weblogger, and you
want all visitors to see weblogger automatically. On the front page, click the On the administration page, click Change the parameter Every page within an OpenACS site is part of a subsiteMore information). The home
page of the entire site is the front page is a special, default
instance of a subsite, served from Almost all pages on an OpenACS site use ACS Templating, and so
+How do I change the site-wide style? Almost all pages on an OpenACS site use ACS Templating, and so
their appearance is driven by a layer of different files. Let's
examine how this works: A templated page uses an ADP/Tcl pair. The first line in the ADP
-file is usually: If it appears exactly like this, without any arguments, the
+file is usually: If it appears exactly like this, without any arguments, the
template processor uses
-Steps to Reproduce. The events
-package does not allow users to register for new events. Go to the http://yourserver.net/events as a visitor (ie, log out
and, if necessary, clear cookies). This in on a 4.6.3 site with
events version 0.1d3. Select an available event A link such as Complete a new registration. Afterwards, you should be
+Deadline is 03/15/2004 10:00am. » Login or sign up to register for
+this event. is visible. Click on "Login or sign
+up" Complete a new registration. Afterwards, you should be
redirected back to the same page. Actual Results: The page says Expected results: A link or form to sign up for the event is
shown.
-Finding the problem. We start with
-the page that has the error. In the URL it's We need to know what that procedure does, so go to /api-doc, paste
+set can_register_p [events::security::can_register_for_event_p -event_id $event_id] We need to know what that procedure does, so go to /api-doc, paste
events::security::can_register_for_event_p into the ACS Tcl API
Search box, and click Feeling Lucky. The next pages shows the proc,
and we click "show source" to see more information. The
body of the proc is simply This means that a given user must have the write privilige on
+return [permission::permission_p -party_id $user_id -object_id $event_id -privilege write] This means that a given user must have the write privilege on
the event in order to register. Let's assume that the
-privileges inherit, so that if a user has the write privilige on
+privileges inherit, so that if a user has the write privilege on
the whole package, they will have the write privilege on the
event.
-Setting Permissions. A permission
-has three parts: the privilige, the object of the privilige, and
-the subject being granted the privilige. In this case the privilige
-is "write," the object is the Events package, and the
+Setting Permissions. A permission has
+three parts: the privilege, the object of the privilege, and the
+subject being granted the privilege. In this case the privilege is
+"write," the object is the Events package, and the
subject is all Registered Users. To grant permissions on a package, start at the site map. Find the event
package and click "Set permissions". Click "Grant Permission" Grant the write permission to Registered Users. OpenACS 5.0 offers a prettier version at /admin/applications. The easiest way is to install the Edit-This-Page package. Follow the instructions within Edit This Page (the link will only work after Edit This Page is installed). Go to Suppose you install a new site and install Weblogger, and you want all visitors to see weblogger automatically. Change the parameter Every page within an OpenACS site is part of a subsite More information). The home page of the entire site is the front page is a special, default instance of a subsite, served from Edit the new Almost all pages on an OpenACS site use ACS Templating, and so their appearance is driven by a layer of different files. Let's examine how this works: Figure 4.1. Site Templates
@@ -88,7 +88,7 @@
We need to know what that procedure does, so go to /api-doc, paste events::security::can_register_for_event_p into the ACS Tcl API Search box, and click Feeling Lucky. The next pages shows the proc, and we click "show source" to see more information. The body of the proc is simply This means that a given user must have the write privilege on the event in order to register. Let's assume that the privilege inherit, so that if a user has the write privilege on the whole package, they will have the write privilege on the event. This means that a given user must have the write privilege on the event in order to register. Let's assume that the privileges inherit, so that if a user has the write privilege on the whole package, they will have the write privilege on the event.
Setting Permissions.
@@ -100,14 +100,14 @@
Click "Grant Permission" Grant the write permission to Registered Users. Figure 4.2. Granting Permissions OpenACS 5.0 offers a prettier version at /admin/applications. Figure 4.3. Granting Permissions in 5.0 For multilingual websites we recommend using the UTF8 charset.
@@ -42,13 +42,13 @@
an xml file.
Replace human-readable text in Tcl files with temporary
-tags. Examine all of the Tcl files in the
-packages for human-readable text and replace it with temporary
-tags. The temporary tags in Tcl are slightly different from those
-in ADP. If the first character in the temporary tag is an
-underscore (
Replace the temporary message tags in Tcl
-files. Repeat step 2 for Tcl files. Here is
-the example Tcl file after conversion:
-Internationalize SQL Code. If
-there is any user-visible Tcl code in the .sql or .xql files,
+Internationalize SQL Code. If there is
+any user-visible Tcl code in the .sql or .xql files,
internationalize that the same way as for the Tcl files.
-Internationalize Package
-Parameters. See Multilingual APM Parameters
+Internationalize Package Parameters. See
+Multilingual APM Parameters
Internationalize Date and Time
queries. Find datetime in .xql files. Use command line tools to find
-suspect SQL code: becomes becomes In Tcl files where the date fields are used, convert the
datetime from local server timezone, which is how it's stored
in the database, to the user's timezone for display. Do this
with the localizing function When a datetime will be written to the database, first convert
+set foo_date_ansi [lc_time_system_to_conn $foo_date_ansi] When a datetime will be written to the database, first convert
it from the user's local time to the server's timezone with
Use the Use the %c: Long date and time (Mon November 18, 2002 12:00 AM) %x: Short date (11/18/02) %X: Time (12:00 AM) %q: Long date without weekday (November 18, 2002) %Q: Long date with weekday (Monday November 18, 2002) The "q" format strings are OpenACS additions; the rest
@@ -131,20 +126,19 @@
internationalize numbers, use
-Internationalizing Forms. When
-coding forms, remember to use message keys for each piece of text
-that is user-visible, including form option labels and button
-labels.
Checking the Consistency
-of Catalog Files. This section describes how
-to check that the set of keys used in message lookups in tcl, adp,
-and info files and the set of keys in the catalog file are
-identical. The scripts below assume that message lookups in adp and
-info files are on the format \#package_key.message_key\#, and that
-message lookups in Tcl files are always is done with one of the
-valid lookups described above. The script further assumes that you
-have perl installed and in your path. Run the script like this:
+of Catalog Files. This section describes how to
+check that the set of keys used in message lookups in tcl, adp, and
+info files and the set of keys in the catalog file are identical.
+The scripts below assume that message lookups in adp and info files
+are on the format \#package_key.message_key\#, and that message
+lookups in Tcl files are always is done with one of the valid
+lookups described above. The script further assumes that you have
+perl installed and in your path. Run the script like this:
where package_key is the key of the package that you want to
@@ -154,13 +148,13 @@
Replace complicated keys with longer, simpler
-keys. When writing in one language, it is
-possible to create clever code to make correct text. In English,
-for example, you can put an has a bold tag which confuses the converter into thinking there
+<p class="form-help-text"><b>Invitations</b> are sent,
+ when this wizard is completed and casting begins.</p> has a bold tag which confuses the converter into thinking there
are two message keys for the text beginning "Invitations
..." where there should be one: Instead, we cancel those keys, edit the file manually, and put
in a single temporary message tag: Complex if statements may produce convoluted message keys that
+ </p> Complex if statements may produce convoluted message keys that
are very hard to localize. Rewrite these if statements. For
example: ... can be rewritten: ... can be rewritten: Another example, where bugs are concatenated with a number: Another example, where bugs are concatenated with a number:
-Don't combine keys in display
-text. Converting a phrase from one language
-to another is usually more complicated than simply replacing each
-word with an equivalent. When several keys are concatenated, the
-resulting word order will not be correct for every language.
-Different languages may use expressions or idioms that don't
-match the phrase key-for-key. Create complete, distinct keys
-instead of building text from several keys. For example: Original code: Problematic conversion: Better conversion: ... and include the variable in the key: Original code: Problematic conversion: Better conversion: ... and include the variable in the key: In this example of bad i18n, full name is created by
concatenating first and last name (admittedly this is pervasive in
the toolkit):
-Avoid unnecessary duplicate keys.
-When phrases are exactly the same in several places, use a single
+Avoid unnecessary duplicate keys. When
+phrases are exactly the same in several places, use a single
key. For common words such as Yes and No, you can use a library of
keys at acs-kernel. For example, instead of using
Don't internationalize internal code
-words. Many packages use code words or key
-words, such as "open" and "closed", which will
-never be shown to the user. They may match key values in the
-database, or be used in a switch or if statement. Don't change
-these. For example, the original code is For example, the original code is This is incorrectly internationalized to This is incorrectly internationalized to But But It is broken if changed to It is broken if changed to
-Fix automatic truncated message
-keys. The automatic converter may create
-unique but crytic message keys. Watch out for these and replace
-them with more descriptive keys. For example: These would be more useful if they were,
+and users with write permission on the Bug Tracker project (package instance) may do so.</msg> These would be more useful if they were,
"you_can_filter",
"you_do_not_have_permission_to_map_this_patch", and
"you_do_not_have_permission_to_edit_this_patch".
@@ -328,58 +304,50 @@
semantically match their text. Fix these: Another example: Another example:
Translations in Avoid "clever" message
-reuse. Translations may need to differ
-depending on the context in which the message appears.
-Avoid plurals. Different languages
-create plurals differently. Try to avoid keys which will change
-based on the value of a number. OpenACS does not currently support
+reuse. Translations may need to differ depending on
+the context in which the message appears.
+Avoid plurals. Different languages create
+plurals differently. Try to avoid keys which will change based on
+the value of a number. OpenACS does not currently support
internationalization of plurals. If you use two different keys, a
plural and a singular form, your application will not localize
properly for locales which use different rules or have more than
two forms of plurals.
-Quoting in the message catalog for
-tcl. Watch out for quoting and escaping when
-editing text that is also code. For example, the original
-string breaks if the message text retains all of the escaping that was
+Quoting in the message catalog for tcl.
+Watch out for quoting and escaping when editing text that is also
+code. For example, the original string breaks if the message text retains all of the escaping that was
in the Tcl command: When it becomes a key, it should be: Also, some keys had %var;noquote%, which is not needed since
+<msg>Patch \"$patch_summary\" is nice.</msg> When it becomes a key, it should be: Also, some keys had %var;noquote%, which is not needed since
those variables are not quoted (and in fact the variable won't
even be recognized so you get the literal %var;noquote% in the
output).
-Be careful with curly brackets.
-Code within curly brackets isn't evaluated. Tcl uses curly
-brackets as an alternative way to build lists. But Tcl also uses
-curly brackets as an alternative to quotation marks for quoting
-text. So this original code ... if converted to ... won't work since the _ func will not be called. Instead,
+Be careful with curly brackets. Code
+within curly brackets isn't evaluated. Tcl uses curly brackets
+as an alternative way to build lists. But Tcl also uses curly
+brackets as an alternative to quotation marks for quoting text. So
+this original code ... if converted to ... won't work since the _ func will not be called. Instead,
it should be
Index: openacs-4/packages/acs-core-docs/www/i18n-design.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-design.adp,v
diff -u -N -r1.2 -r1.3
--- openacs-4/packages/acs-core-docs/www/i18n-design.adp 7 Aug 2017 23:47:50 -0000 1.2
+++ openacs-4/packages/acs-core-docs/www/i18n-design.adp 25 Apr 2018 08:38:27 -0000 1.3
@@ -3,11 +3,11 @@
User locale is a property of ad_conn, by Henry Minsky, Yon Feldman, Lars
@@ -214,8 +214,8 @@
path.
40.30 The API for lookup
of a message will take a locale and message key as arguments, and
-return the appropriate translation of that message for the specified
-locale.
+return the appropriate translation of that message for the
+specified locale.
40.40 The API for lookup
of a message will accept an optional default string which can be
used if the message key is not found in the catalog. This lets the
@@ -258,7 +258,7 @@
Loading source files (.tcl or .adp) or content files from the
filesystem Accepting form input data from users Delivering text output to a browser Composing an email message Writing data to the filesystem Acs-templating does the following. When the acs-templating package opens an an ADP or Tcl file, it
+ When the acs-templating package opens an ADP or Tcl file, it
assumes the file is iso-8859-1. If the output charset
(OutputCharset) in the AOLserver config file is set, then
acs-templating assumes it's that charset. Writing Files When the acs-templating package writes an an ADP or Tcl file, it
@@ -339,7 +339,7 @@
URL, the designer may create multiple locale-specific template
files may be created (one per locale or language)
70.10 For a given page
-request, the system must be able to select an approprate
+request, the system must be able to select an appropriate
locale-specific template file to use. The request locale is
computed as per (see requirement 20.0).
70.20A template file may
@@ -489,8 +489,8 @@
Acs-templating does the following. When the acs-templating package opens an an ADP or Tcl file, it assumes the file is iso-8859-1. If the output charset (OutputCharset) in the AOLserver config file is set, then acs-templating assumes it's that charset.
-Writing Files When the acs-templating package opens an ADP or Tcl
+ file, it assumes the file is iso-8859-1. If the output
+ charset (OutputCharset) in the AOLserver config file is set,
+ then acs-templating assumes it's that charset.
+ Writing Files When the acs-templating package writes an an ADP or
Tcl file, it assumes the file is iso-8859-1. If the output
@@ -500,7 +503,7 @@
created (one per locale or language) 70.10 For a given page request, the
-system must be able to select an approprate locale-specific
+system must be able to select an appropriate locale-specific
template file to use. The request locale is computed as per (see
requirement 20.0). Most translators use the OpenACS Public
Translation Server, because the process of getting new message
@@ -23,8 +23,8 @@
Administration of Localization and create the
locale.
-Translating with Translator Mode.
-To translate messages in the pages they appear, Toggle Translator Mode and then browse to the
+Translating with Translator Mode. To
+translate messages in the pages they appear, Toggle Translator Mode and then browse to the
page you want to translate. Untranslated messages will have a
yellow background and a red star that you click to translate the
message. Translated messages have a green star next to them that is
@@ -34,21 +34,19 @@
the bottom of each page.
-Batch translation. To translate
-many messages at once, go to Administration of Localization,
-click on the locale to translate, then click on a package, and then
-click When creating a new locale based on an existing one, such as
creating the Guatemalan version of Spanish, you can copy the
existing locale's catalog files using the script Table of Contents Table of Contents Table of Contents Table of Contents List of Figures List of Tables List of Examples List of Figures List of Tables List of Examples OpenACS requires, at a minimum, an operating system, database,
and webserver to work. Many additional programs, such as a build
environment, Mail Transport Agent, and source control system, are
also needed for a fully effective installation. Table 2.2. Version
-Compatibility Matrix Table 2.2. Version Compatibility
+Matrix
-Operating System. OpenACS is
-designed for a Unix-like system. It is developed primarily in
-Linux. It can be run on Mac OS X, and in Windows within VMWare.
-GNU/Linux. The installation
-assumes a linux kernel of 2.2.22 or newer, or 2.4.14 or newer.
+GNU/Linux. The installation assumes a
+linux kernel of 2.2.22 or newer, or 2.4.14 or newer.
FreeBSD. FreeBSD guide. The OpenACS Reference Platform
uses shell scripts written for bash, which is the standard Linux
shell. If you are using a different shell, you will need to
@@ -99,67 +99,66 @@
scripts. Substitute
Mac OS X. the section called
-“OpenACS Installation Guide for Mac OS
-X”
+“OpenACS Installation Guide for Mac OS X”
Windows/VMWare. the section called
-“OpenACS Installation Guide for
-Windows” The only way to run OpenACS on Windows is
-through the VMWare emulator. (Please let me know if you have
-OpenACS running directly in Windows.)
-Build Environment. The Reference
-Platform installation compiles most programs from source code.
-glibc 2.2 or newer, REQUIRED. You
-need recent versions of these libraries for Oracle to work
-properly. For Unicode support, you need glibc 2.2 or newer. This
-should be included in your operating system distribution.
+glibc 2.2 or newer, REQUIRED. You need
+recent versions of these libraries for Oracle to work properly. For
+Unicode support, you need glibc 2.2 or newer. This should be
+included in your operating system distribution.
GNU Make
-3.76.1 or newer, REQUIRED. PostgreSQL and
-AOLserver require gmake to compile. Note that on most linux
-distributions, GNU Make is simply named
Tcl 8.5.x.
-Tcl 8.5.x, REQUIRED. OpenACS is
-written in Tcl, an interpreted language. A threaded version of the
-Tcl interpreter must be installed for OpenACS to work. The Tcl
+Tcl 8.5.x, REQUIRED. OpenACS is written
+in Tcl, an interpreted language. A threaded version of the Tcl
+interpreter must be installed for OpenACS to work. The Tcl
interpreter that is included in most standard distributions may not
be thread safe.
Tcl 8.5.x development headers and libraries,
-OPTIONAL. The site-wide-search service,
-OpenFTS, requires these to compile. (Debian users:
-Tcllib, REQUIRED. OpenACS
-5.9.0 uses those Tcl extensions to send e-mail out, among
-others.
-tDOM, REQUIRED. OpenACS 5.9.0
-stores queries in XML files, so we use an AOLserver module called
-tDOM to parse these files. (This replaces libxml2, which was used
-prior to 4.6.4.)
-tclwebtest, OPTIONAL.
-tclwebtest is a tool for testing web interfaces via Tcl
-scripts.
Web Server. The web server handles
@@ -170,8 +169,8 @@
mod_nsd. Mat Kovach is graciously maintaining an AOLserver distribution
that includes all the patches and modules needed to run OpenACS
5.9.0. These instructions will describe how to install using his
@@ -200,36 +199,35 @@
-ns_pam 0.1 or newer,
-OPTIONAL. Provides PAM capabilities for
-AOLserver. You need this if you want OpenACS users to authenticate
-through a PAM module (such as RADIUS).
-pam_radius 1.3.16, OPTIONAL.
-Provides RADIUS capabilities for PAM. You need this if you want to
-use RADIUS authentication via PAM in OpenACS.
-ns_ldap 0.r8, OPTIONAL.
-Provides LDAP capabilities for AOLserver. You need this if you want
-to use LDAP authentication in OpenACS.
-OpenFTS Tcl 0.3.2,
-OPTIONAL. Adds full-text-search to PostgreSQL
-and includes a driver for AOLserver. You need this if you want
-users to be able to search for any text on your site. For postgres
-7.4.x and higher, full text search is also available via
-tsearch2.
-Analog 5.32 or newer, OPTIONAL.
-This program examines web server request logs, looks up DNS values,
-and produces a report. You need this if you want to see how much
+Analog 5.32 or newer, OPTIONAL. This
+program examines web server request logs, looks up DNS values, and
+produces a report. You need this if you want to see how much
traffic your site is getting.
Balance 3.11 or newer, OPTIONAL.
@@ -239,84 +237,81 @@
production site and do not have an external load balancing
system.
-Database. The data on your site
-(for example, user names and passwords, calendar entries, and
-notes) is stored in the database. OpenACS separates the database
-with an abstraction layer, which means that several different
-databases all function identically. While you can run the core
-OpenACS on any supported database, not all contributed packages
-support all databases.
Oracle 8.1.7 (Either this or PostgreSQL is
-REQUIRED). You can register and download
-Oracle from Oracle
-TechNet. You need this if you want to use an Oracle
-database.
+REQUIRED). You can register and download Oracle from
+Oracle TechNet. You need this if you want to use
+an Oracle database.
PostgreSQL 7.4.x (Either this or Oracle is
REQUIRED). You need this if you want to use a
PostgreSQL database.
-Process Controller. This is
-software that initiates other software, and restarts that software
-if it fails. On Linux, we recommend using Daemontools to control
-AOLserver and qmail.
-Daemontools 0.76, OPTIONAL. You
-need this if you want AOLserver and qmail to run
-"supervised," meaning that they are monitored and
-automatically restarted if they fail. An alternative would be to
-run the services from inittab.
-Mail Transport Agent. A Mail
-Transport Agent is a program that handles all incoming and outgoing
-mail. The Reference Platform uses Qmail; any MTA that provides a
-sendmail wrapper (that is, that can be invoked by calling the
-sendmail program with the same variables that sendmail expects) can
-be used.
-Netqmail 1.04, OPTIONAL.
-You need this (or a different Mail Transport Agent) if you want
-your webserver to send and receive email.
+Netqmail 1.04, OPTIONAL. You need
+this (or a different Mail Transport Agent) if you want your
+webserver to send and receive email.
-ucspi-tcp 0.88, OPTIONAL. This
-program listens for incoming TCP connections and hands them to a
-program. We use it instead of inetd, which is insecure. You need
-this if you are running qmail.
-DocBook, OPTIONAL. (docbook-xml
-v4.4, docbook-xsl v1.56, libxslt 1.0.21, xsltproc 1.0.21). You need
-this to write or edit documentation.
-Source Control. A Source Control
-system keeps track of all of the old versions of your files. It
-lets you recover old files, compare versions of file, and identify
-specific versions of files. You can use any source control system;
-the Reference Platform and the OpenACS.org repository (where you
-can get patched and development code in between releases) use
-cvs.
+Source Control. A Source Control system
+keeps track of all of the old versions of your files. It lets you
+recover old files, compare versions of file, and identify specific
+versions of files. You can use any source control system; the
+Reference Platform and the OpenACS.org repository (where you can
+get patched and development code in between releases) use cvs.
-cvs 1.11.18, OPTIONAL. cvs is
-included in most unix distributions. You need this if you want to
-track old versions of your files, do controlled deployment of code
-from development to production, or get or contribute development
-code from openacs.org. ($Id: software.xml,v 1.27 2017/08/07
-23:47:55 gustafn Exp $) ($Id: software.xml,v 1.28 2018/03/24
+00:14:57 hectorr Exp $) CVS is a source control system. Create and initialize a
+directory for a local cvs repository. CVS is a source control system. Create and initialize a
directory for a local cvs repository. Daemontools is a collection of programs for controlling other
processes. We use daemontools to run and monitor AOLserver. It is
installed in /package. These commands install daemontools and
svgroup. svgroup is a script for granting permissions, to allow
users other than root to use daemontools for specific services. Install Daemontools
+ Install Daemontools
download
daemontools and install it. Red Hat 8 Red Hat 8 Red Hat 9, Fedora Core 1-4 Make sure you have the source tarball in FreeBSD (follow standard install) Make sure you have the source tarball in Debian Debian Verify that svscan is running. If it is, you should see these
-two processes running: Install a script to grant non-root users permission to control
-daemontools services. Install Daemontools download daemontools and install it. Red Hat 8 In earlier versions of PostgreSQL (7.4), tsearch2 was a contrib
module. With PostgreSQL 9.*, it was included in the standard
PostgreSQL package with minor naming changes (e.g. the function
"rank" became "ts_rank"). PostgreSQL 9 included
@@ -32,8 +31,8 @@
In earlier versions of PostgreSQL (7.4), tsearch2 was a contrib
module. With PostgreSQL 9.*, it was included in the standard
PostgreSQL package with minor naming changes (e.g. the function
Index: openacs-4/packages/acs-core-docs/www/install-ldap-radius.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-ldap-radius.adp,v
diff -u -N -r1.4 -r1.5
--- openacs-4/packages/acs-core-docs/www/install-ldap-radius.adp 28 Mar 2018 17:00:40 -0000 1.4
+++ openacs-4/packages/acs-core-docs/www/install-ldap-radius.adp 25 Apr 2018 08:38:27 -0000 1.5
@@ -3,12 +3,11 @@
By Malte
@@ -19,9 +18,8 @@
these section
-Install openldap. Download and
-install ns_ldap
-Install ns_ldap. Download and
-install ns_ldap
-Configure ns_ldap for traditional
-use. Traditionally OpenACS has supported
-ns_ldap for authentication by storing the OpenACS password in an
-encrypted field within the LDAP server called
-"userPassword". Furthermore a CN field was used for
-searching for the username, usually userID or something similar.
-This field is identical to the usernamestored in OpenACS. Therefore the
+Configure ns_ldap for traditional use.
+Traditionally OpenACS has supported ns_ldap for authentication by
+storing the OpenACS password in an encrypted field within the LDAP
+server called "userPassword". Furthermore a CN field was
+used for searching for the username, usually userID or something
+similar. This field is identical to the usernamestored in OpenACS. Therefore the
login will only work if you change login method to make use of the
username instead. Change config.tcl. Remove
the # in front of
@@ -70,27 +66,25 @@
module.
-Configure ns_ldap for use with LDAP
-bind. LDAP authentication usually is done by
-trying to bind (aka. login) a user with the LDAP server. The
-password of the user is not stored in any field of the LDAP server,
-but kept internally. The latest version of ns_ldap supports this
-method with the ns_ldap bind
-command. All you have to do to enable this is to configure
-auth_ldap to make use of the BIND authentication instead.
-Alternatively you can write a small script on how to calculate the
-username out of the given input (e.g. if the OpenACS username is
-malte.fb03.tu, the LDAP request can be translated into
-"ou=malte,ou=fb03,o=tu" (this example is encoded in
-auth_ldap and you just have to comment it out to make use of
-it).
-Services on different ports. To
-run a different service on another port but the same ip, simply
-repeat Install OpenACS 5.9.0 replacing
+Services on different ports. To run a
+different service on another port but the same ip, simply repeat
+Install OpenACS 5.9.0 replacing
to different values.
-Services on different host names.
-For example, suppose you want to support to different values.
+Services on different host names. For
+example, suppose you want to support If you want to install two services with different host names
+set address 127.0.0.1 If you want to install two services with different host names
sharing the same ip, you'll need nsvhr to redirect requests
based on the contents of the tcp headers. See AOLserver Virtual Hosting with TCP by markd. The "vacuum" command must be run periodically to
reclaim space in versions of PostgreSQL before 7.4. The
@@ -22,18 +22,17 @@
before!) you've made a backup! The "vacuum" command
is very reliable, but conservatism is the key to good system
management. So, if you're using the export procedure described
-above, you don't need to do this extra step. Edit your crontab: Edit your crontab: We'll set vacuum up to run nightly at 1 AM. Add the
following line: ($Id: database-maintenance.xml,v 1.9
2017/08/07 23:47:54 gustafn Exp $) By Joel Aufrecht and
Malte Sussdorff
@@ -22,8 +21,7 @@
You will need the unpacked Aolserver
tarball in Red Hat 9 note: see this thread for details on compiling nsopenssl.) Red Hat 9 note: see this thread for details on compiling nsopenssl.) FreeBSD note: build nsopenssl with Skip down for instructions on Deleting a PostgreSQL
tablespace. Should it become necessary to rebuild a tablespace from scratch,
you can use the If this does not work because svrmgrl "cannot drop a user
that is currently connected", make sure to kill the AOLserver
-using this user. If it still does not work, do: and then and then where sid and
serial# are replaced with
the corresponding values for the open session. Use with
caution! If you feel the need to delete everything related to the service, you
-can also issue the following: Then, to drop the db, just do: If processes were killed, congratulations, your server is now
automated for startup and shutdown. The simplest way to start and stop and OpenACS site is to run
@@ -48,19 +48,16 @@
into the Verify that AOLserver is running. Verify that AOLserver is running. The user At this point, these commands will work only for the
Verify that the controls work. You may want to More information can be found on the AOLserver Daemontools page. Table 6.1. How it
+ Table 6.1. How it
Works Table 6.1. How it Works Table 6.1. How it Works This document was created by Vinod Kurup, but
it's really just plagiarism from a number of documents that
@@ -16,13 +15,12 @@
away. Versions 4.6.2 to present were edited by Joel Aufrecht. These are a few of my sources: ArsDigita installation guide OpenACS 3.x installation guide Please also see the Credits section
-for more acknowledgements. Please also see the Credits section for more
+acknowledgements. By Malte
@@ -24,9 +23,8 @@
end of the file.
-Install ns_pam. Download and
-install ns_pam
-Configure ns_pam. Configure
-AOLserver for ns_pam To enable ns_pam in AOLServer you will first have to edit your
+Configure ns_pam. Configure AOLserver for
+ns_pam To enable ns_pam in AOLServer you will first have to edit your
config.tcl file and enable the loading of the ns_pam module and
configure the aolservers pam configuration file. Change config.tcl. Remove
@@ -61,10 +59,9 @@
-Configure PAM Radius. Configure
-and install PAM Radius You have to make sure that pam_radius v.1.3.16 or higher is
-installed, otherwise you will have to install it. You have to make sure that pam_radius v.1.3.16 or higher is
+installed, otherwise you will have to install it. Next you have to add the configuration lines to your Radius
configuration file (/etc/rddb/server). For AOLserver to be able to
access this information you have to change the access rights to
-this file as well. To be able to use PHP software with AOLserver (and OpenACS), you
have to install PHP with AOLserver support. Get the latest version
from www.php.net. For convenience we get version 4.3.4 from a
-mirror Qmail is a secure, reliable, efficient, simple Mail Transfer
Agent. It handles incoming and outgoing mail. Install qmail if you
want your OpenACS server to send and receive mail, and you
don't want to use an alternate MTA.
-Install qmail. QMail is available
-as standard Debian/Ubuntu package, rpms for Fedora/Redhat/CenTOS
-are available from QMail wiki
+Install qmail. QMail is available as
+standard Debian/Ubuntu package, rpms for Fedora/Redhat/CenTOS are
+available from QMail wiki
page
Replace sendmail with qmail's wrapper. Replace sendmail with qmail's wrapper. All incoming mail that isn't for a specific user is handled
by the Configure qmail to use the Maildir delivery format (instead of
+ Configure qmail to use the Maildir delivery format (instead of
mbox), and install a version of the qmail startup script modified
-to use Maildir. Set up the skeleton directory so that new users will be
-configured for qmail. Wait ten seconds or so, and then verify that that the four qmail
+ Wait ten seconds or so, and then verify that the four qmail
processes are running. If uptimes don't rise above 1 second,
this may indicate broken scripts that are continuously restarting.
-In that case, start debugging by checking permissions. Further verify by sending and receiving email. Incoming mail for
+[root root]# Further verify by sending and receiving email. Incoming mail for
root is stored in
Replace sendmail with qmail's wrapper.
Configure qmail to use the Maildir delivery format
(instead of mbox), and install a version of the qmail startup script modified to use Maildir. Wait ten seconds or so, and then verify that that the four qmail processes are running. If uptimes don't rise above 1 second, this may indicate broken scripts that are continuously restarting. In that case, start debugging by checking permissions. Wait ten seconds or so, and then verify that the four qmail processes are running. If uptimes don't rise above 1 second, this may indicate broken scripts that are continuously restarting. In that case, start debugging by checking permissions. This section takes a blank PC and sets up some supporting
software. You should do this section as-is if you have a machine
@@ -36,7 +33,7 @@
Unplug
the network cable from your computer. We don't want to connect
to the network until we're sure the computer is secure.
- (Wherever you see the word secure, you
+ (Wherever you see the word secure, you
should always read it as, "secure enough for our purposes,
given the amount of work we're willing to exert and the
estimated risk and consequences.") Insert Red Hat 8.0 or 9.0 Disk 1 into the CD-ROM and reboot the
@@ -75,7 +72,7 @@
boot loader screen Configure Networking. Again, if you
+ Configure Networking. Again, if you
know what you're doing, do this step yourself, being sure to
note the firewall holes. Otherwise, follow the instructions in this
step to set up a computer directly connected to the internet with a
@@ -105,7 +102,7 @@
access to the development server we'll be setting up.
-Select any additional languages you want
+Select any additional languages you want
the computer to support and then click Choose your time zone and click After it finishes rebooting and shows the login prompt, log
-in: Install any security patches. For example, insert your CD with
patches, mount it with Lock down SSH
- SSH is the protocol we use to connect
+ SSH is the protocol we use to connect
securely to the computer (replacing telnet, which is insecure).
sshd is the daemon that listens for incoming ssh connections. As a
security precaution, we are now going to tell ssh not to allow
@@ -227,8 +222,7 @@
we'll use daemontools to perform a similar function for
AOLserver. (The reason for these discrepencies is that, while
daemontools is better, it's a pain in the ass to deal with and
-nobody's had any trouble leaving PostgreSQL the way it is.) Plug in the network cable. Verify that you have connectivity by going to another computer
and ssh'ing to If you didn't burn a CD of patches and use it, can still
download and install the necessary patches. Here's how to do it
@@ -262,8 +254,7 @@
8.0 system kernel (2.4.18-14, which you can check with
Unplug the network cable from your
computer. We don't want to connect to the network
until we're sure the computer is secure.
-
+
(Wherever you see
the word secure, you should always read it as, "secure
enough for our purposes, given the amount of work we're
@@ -81,7 +81,7 @@
Click Configure Networking.
Again, if you know what you're doing, do this step
yourself, being sure to note the firewall holes. Otherwise,
follow the instructions in this step to set up a computer directly connected to the internet with a dedicated IP address. Select any additional languages you want the
computer to support and then click
Choose your time zone and click Type in a root
password, twice. At the bottom, check We need to fine-tune the exact list of packages.
@@ -129,7 +129,7 @@
Red Hat isn't completely happy with the combination
of packages we've selected, and wants to satisfy some dependencies.
@@ -166,7 +166,7 @@
Lock down SSH
-
+
SSH is the protocol we use to connect
securely to the computer (replacing telnet, which is
insecure). sshd is the daemon that listens for incoming
@@ -202,7 +202,7 @@
which services should be up and down at any given service
level. We'll use this system for PostgreSQL, but we'll use
daemontools to perform a similar function for AOLserver.
- (The reason for this discrepencies is that, while daemontools
+ (The reason for these discrepencies is that, while daemontools
is better, it's a pain in the ass to deal with and nobody's
had any trouble leaving PostgreSQL the way it is.)
Debian Users: Prepare a certificate directory for the service. Prepare a certificate directory for the service. Enter a pass phrase for the CA certificate. Then, answer the
-rest of the questions. At the end you should see this:
+Enter PEM pass phrase: Enter a pass phrase for the CA certificate. Then, answer the
+rest of the questions. At the end you should see this:
To create the certificate file, we take the combined file, copy
-it, and strip out the key. To create the certificate file, we take the combined file, copy
+it, and strip out the key. Strip out the section that looks like Strip out the section that looks like If you start up using the etc/daemontools/run script, you will
need to edit this script to make sure the ports are bound for SSL.
Details of this are in the run script. Most of the documentation in this section is kept as a
reference. More up-to-date documentation is in the install sections in the Wiki. The basic steps for installing OpenACS are: Install a database (see the section called
-“Install Oracle 8.1.7” or
-Install PostgreSQL). Install AOLserver (Install AOLserver 4) . Create a unique database and system user. Install the OpenACS
+“Version Compatibility Matrix”. Install a database (see the section called “Install Oracle
+8.1.7” or Install PostgreSQL). Install AOLserver (Install AOLserver 4) . Create a unique database and system user. Install the OpenACS
tarball, start and AOLserver instance, and use the OpenACS web
pages to complete installation (see Install OpenACS
5.9.0). Specific instructions are available for Mac OS X and Windows2000
(see the section called
-“OpenACS Installation Guide for Mac OS
-X” or the section called
-“OpenACS Installation Guide for
-Windows”). You can try out OpenACS using some binary installers. In
general, they are not yet supported by the community, so they are
@@ -46,8 +42,7 @@
128MB RAM (much more if you want Oracle) 1GB free space on your hard drive (much more if you want
Oracle) A Unix-like operating system with Tcl, tDOM, and a mail
transport agent like sendmail or qmail. (see the
-section called “Prerequisite
-Software”) All of the software mentioned is open-source and available
without direct costs, except for Oracle. You can obtain a free copy
of Oracle for development purposes. This is described in the
@@ -64,11 +59,9 @@
menu. This is text from a program or file which you may need to
-examine or edit: This is text that you will
Setting a global shell
-variable for cut and paste. In order to cut
-and paste the instructions into your shell, you must set the
+variable for cut and paste. In order to cut and
+paste the instructions into your shell, you must set the
environment variable $OPENACS_SERVICE_NAME. In order to set it
globally so that it works for any new users or special service
users you may create, edit the file
db_resultrows
db_resultrows
db_compatible_rdbms_p db_type
-
-
db_package_supports_rdbms_p
db_package_supports_rdbms_p db_type_list
-
-
db_legacy_package_p
db_legacy_package_p db_type_list
-
-
@@ -706,9 +702,9 @@
@@ -39,8 +39,7 @@
foreach row $rows {
call_some_proc $foo $bar $baz
}
-}
-
+}
db_transaction
command
@@ -64,8 +63,7 @@
select foo, bar, baz
from some_table, some_other_table
where some_table.id=some_other_table.id
-and some_table.condition_p = '$foo'
-
+and some_table.condition_p = '$foo'
user_id
(123456) is bound to the
+ user_id
(123456) is bound to the
user_id
bind variable.-bind
switch can takes
the name of an ns_set
containing keys for each bind variable named in the query,
@@ -171,8 +167,7 @@
# of "administrator"
}
-
--bind
you can specify a list of alternating
+ -bind
you can specify a list of alternating
name/value pairs for bind variables:
db_foreach user_group_memberships_by_role {
@@ -186,8 +181,7 @@
# of "administrator"
}
-
-
+
null
, this code has
different semantics depending on the underlying database (i.e., the
row that gets inserted may not have null as its column values),
which defeats the purpose of SQL abstraction.null
(instead of the Oracle-specific idiom
of the empty string): db_null
.null
, e.g.:
-set bar [db_null]
+column value explicitly to
null
, e.g.:set bar [db_null]
set baz [db_null]
db_dml foo_create "insert into foo(bar, baz) values(:bar, :baz)"
#
-# sets the values for both the "bar" and "baz" columns to null
-
+# sets the values for both the "bar" and "baz" columns to null
@@ -259,8 +250,7 @@
[ns/server/yourservername/acs/security]
PoolSequence.sec_id_seq=20
-
-
db_abort_transaction
-
-
db_dml
"abort" "abort transaction"
.
db_multirow assets assets {
select asset_id,
@@ -341,8 +329,7 @@
multirow foreach assets {
lappend asset_id_l $asset_id
}
-
-
db_null
break
statements (which terminate the loop
+ break
statements (which terminate the loop
and flush the database handle) and continue
statements (which continue to the
next row of the loop).
db_1row
db_1row statement-namesql [ -bind bind_set_id | -bind bind_value_list ] \
[ -column_array array_name | -column_set set_name ]
-
-
sql
, setting variables to
+ sql
, setting variables to
column values. Raises an error if the query does not return exactly
1 row.
db_1row select_foo "select foo, bar from greeble where greeble_id = $greeble_id"
# Bombs if there's no such greeble!
# Now $foo and $bar are set.
-
-
+
db_0or1row
db_0or1row statement-namesql [ -bind bind_set_id | -bind bind_value_list ] \
[ -column_array array_name | -column_set set_name ]
-
-
sql
. If a row is returned, sets
+ sql
. If a row is returned, sets
variables to column values and returns 1. If no rows are returned,
returns 0. If more than one row is returned, throws an error.
@@ -417,8 +400,7 @@
db_string
db_string statement-namesql [ -default default ] [ -bind bind_set_id | -bind bind_value_list ]
-
-
sql
.
+ sql
.
If sql
doesn't return a row,
returns default
(or throws an error if
default
is unspecified).
@@ -427,17 +409,15 @@
db_list
db_list statement-namesql [ -bind bind_set_id | -bind bind_value_list ]
-
-
sql
. If sql
doesn't return any rows, returns an empty list. Analogous to
database_to_tcl_list
.
db_list_of_lists
db_list_of_lists statement-namesql [ -bind bind_set_id | -bind bind_value_list ]
-
-
sql
.
If sql
doesn't return any
rows, returns an empty list. (Analogous to database_to_tcl_list_list
.)sql
.sql
.:1
, :2
, ... :n
.
blobs
or clobs
, if specified, should be
@@ -464,8 +443,7 @@
returning image, thumbnail_image into :1, :2
} -blob_files [list "/var/tmp/the_photo" "/var/tmp/the_thumbnail"]
-
-photos
table, with the contents of the
+ photos
table, with the contents of the
files /var/tmp/the_photo
and
/var/tmp/the_thumbnail
in the
image
and thumbnail
columns, respectively.ns_ora
+
ns_ora
write_clob/write_blob/blob_get_file
.
db_release_unused_handles
db_release_unused_handles
-
-
db_transaction
db_transaction code_block [ on_error { code_block } ]
-
-
code_block
transactionally.
+ code_block
transactionally.
Nested transactions are supported (end
transaction
is transparently ns_db dml
'ed when the outermost
transaction completes). The db_abort_transaction
command can be used to
@@ -535,14 +510,12 @@
print_the_foo ; # Writes out "foo is 8"
-
-
+
db_resultrows
db_resultrows
-
-
db_with_handle
db_nullify_empty_string
@@ -593,14 +565,12 @@
# the empty string we just inserted (because of Oracle's coercion
# quirk)
-
-
baz
to null
by writing:
db_dml foo_insert {insert into foo(baz) values(:1)} {[db_nullify_empty_string $baz]}
-
-
+
<book><title><part label="Part 1"><etc...>
-
-
+
sect1
-level, all your documents
should open with a <sect1>
-tag
and end with the corresponding </sect1>
.<sect1>
two attributes. The first
+ You need to feed every <sect1>
two attributes. The first
attribute, id
, is standard and
can be used with all elements. It comes in very handy when
interlinking between documents (more about this when talking about
-links in the section called
-“Links”). The value of
+links in the section called “Links”). The value of
id
has to be unique throughout
the book you're making since the id
's in your sect1
's will turn into filenames when
the book is parsed into HTML.xreflabel
. The value of this is the text
+ The other attribute is xreflabel
. The value of this is the text
that will appear as the link when referring to this sect1
.xreflabel
-attribute. E.g. the top level of
the document you're reading right now looks like this:
@@ -540,7 +538,7 @@
</sect1>
<sect2>
's,
each with the same requirements - id
and xreflabel
attributes, and a <title>
-tag inside. Actually, the
xreflabel
is never required in
@@ -550,7 +548,7 @@
<computeroutput>
and <code>
tags. These
replace the HTML-tag <code>
tag,
@@ -564,15 +562,15 @@
id
's
you can cross-reference any part of your book with a simple tag,
regardless of where that part is.
- Find information about creating a package in
<xref linkend="packages-making-a-package"></xref>.
@@ -590,17 +588,16 @@
<xref linkend="packages-looks"></xref>.
- Find information about what a package looks like in
-the section called “What a Package Looks Like”.
+the section called “What a Package Looks Like”.
xreflabel
for the subsection, packages-looks
, the parser will try its
best to explain where the link takes you.<ulink>
):
-<ulink url="http://www.oracle.com/">Oracle Corporation</ulink>
-
<mediaobject>
,
<imageobject>
,
<imagedata>
,
@@ -640,7 +637,7 @@
<informaltable>
is enough:
<informaltable frame="all">
<tgroup cols="3">
@@ -739,7 +736,7 @@
<emphasis>
.<emphasis>
tag
defaults to italics when parsed. If you're looking for
emphasizing with bold type, use <emphasis
@@ -799,9 +796,9 @@
sect1
-level, all your documents should open with a
<sect1>
-tag and end
with the corresponding </sect1>
.
<sect1>
two attributes. The first attribute,
id
, is standard and can be used with all elements. It comes in very
handy when interlinking between documents (more about this when talking about links in the section called “Links”).
@@ -879,7 +879,7 @@
xreflabel
. The value of this is the text that will appear
as the link when referring to this sect1
.
<sect2>
's,
each with the same requirements - id
and xreflabel
@@ -920,7 +920,7 @@
<computeroutput>
@@ -948,7 +948,7 @@
<mediaobject>
,
<imageobject>
,
@@ -1088,7 +1088,7 @@
<informaltable>
is enough:
@@ -1211,7 +1211,7 @@
<emphasis>
.
-
-5.0.0
+
5.0.0
5.0.0rc2
5.0.0rc1
5.0.0b4
@@ -55,8 +54,7 @@
5.0.0a3
5.0.0a1
5.0.0d1
-4.6.3
-
+
Username: ________
Password: ________
@@ -436,16 +436,16 @@
:
Untrusted Logins
-
auth::require_login
-would bounce to the login page if the user is only logged in at the
+would bounce to the login page if the user is only logged-in at the
untrusted level. Only if you explicitly say auth::require_login -untrusted
will we give you
-the user_id of a user who's only logged in in untrusted
+the user_id of a user who's only logged-in in untrusted
mode.ad_conn user_id
will
-continue to return 0 (not logged in) when the user is only logged
-in untrusted, and we'll supply another variable, ad_conn untrusted_user_id
, which wlll be set to
-the user_id for all login levels.ad_conn untrusted_user_id
, which wlll
+be set to the user_id for all login levels.
@@ -518,10 +519,10 @@
:
rewrite cookie handling
auth::require_login
would
-bounce to the login page if the user is only logged in at the
+bounce to the login page if the user is only logged-in at the
untrusted level. Only if you explicitly say
auth::require_login -untrusted
will we give you
-the user_id of a user who's only logged in in untrusted
+the user_id of a user who's only logged-in in untrusted
mode.ad_conn user_id
will continue
-to return 0 (not logged in) when the user is only logged in
+to return 0 (not logged-in) when the user is only logged-in
untrusted, and we'll supply another variable, ad_conn
untrusted_user_id
, which wlll be set to the user_id for
all login levels.
@@ -20,10 +19,9 @@
+Creating the form element. Populate a
+list of lists with values for the option list.
set foo_options [db_list_of_lists foo_option_list "
select foo,
foo_id
@@ -37,12 +37,10 @@
foo_options
should resemble {{first foo} 1234}
{{second foo} 1235}
-
-{foo:text(select)
+
{foo:text(select)
{label "Which Foo"}
{options $foo_options}
- }
-
-new_data
and -edit_data
. In the example, it is available
as $foo
@@ -57,29 +55,25 @@
form items from a sub-category when the first category is selected.
Ad_form makes this fairly easy to do. In the definition of your
form element, include an html section
- {pm_task_id:integer(select),optional
+{pm_task_id:integer(select),optional
{label "Subject"}
{options {$task_options}}
{html {onChange "document.form_name.__refreshing_p.value='1';submit()"}}
{value $pm_task_id}
}
-
-
- if {[info exists pm_task_id] && $pm_task_id ne ""} {
+if {[info exists pm_task_id] && $pm_task_id ne ""} {
db_1row get_task_values { }
ad_form -extend -name form_name -form { ... }
-
-
- db_1row get_task_values { }
+get the values from the database, and set the values as so:
db_1row get_task_values { }
template::element set_value form_name estimated_hours_work $estimated_hours_work
-
-
+
Index: openacs-4/packages/acs-core-docs/www/how-do-I.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/how-do-I.adp,v
diff -u -N -r1.4 -r1.5
--- openacs-4/packages/acs-core-docs/www/how-do-I.adp 27 Mar 2018 12:22:17 -0000 1.4
+++ openacs-4/packages/acs-core-docs/www/how-do-I.adp 25 Apr 2018 08:38:27 -0000 1.5
@@ -3,29 +3,28 @@
/admin/permissions
and grant Create to Registered Users
Admin
button.Parameters
link.IndexRedirectUrl
to be the URI of the
@@ -35,7 +34,7 @@
/var/lib/aolserver/
.
@@ -50,14 +49,12 @@
$OPENACS_SERVICE_NAME
/www
-<master>
-
<master>
default-master
for that subsite. For pages
in /var/lib/aolserver/
,
this is $OPENACS_SERVICE_NAME
/www/var/lib/aolserver/
@@ -74,73 +71,70 @@
navigation "meta" elements such as Translator widgets and
Admin widgets.$OPENACS_SERVICE_NAME
/www/default-master.adp
+Steps to Reproduce. The events package
+does not allow users to register for new events.
Registration:
-Deadline is 03/15/2004 10:00am. » Login or sign up to
-register for this event.
is visible. Click on "Login or
-sign up""You do not have permission to register for
this event."
http://myserver.net/events/event-info.tcl
,
+Finding the problem. We start with the
+page that has the error. In the URL it's http://myserver.net/events/event-info.tcl
,
so open the file /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/events/www/event-info.tcl
.
It contains this line:
-set can_register_p [events::security::can_register_for_event_p -event_id $event_id]
-
-return [permission::permission_p -party_id $user_id -object_id $event_id -privilege write]
-
/admin/permissions
and grant Create to Registered UsersIndexRedirectUrl
to be the URI of the desired application. For a default weblogger installation, this would be
. Note the trailing slash.weblogger/
/var/lib/aolserver/
. If an index page is not found there, the default index page for all subsites is used. To customize the code on the front page, copy the default index page from the Subsite package to the Main site and edit it:$OPENACS_SERVICE_NAME
/wwwindex.adp
to change the text; you shouldn't need to edit index.tcl
unless you are adding new functionality.Blank-master
does HTML housekeeping and provides a framework for special sitewide navigation "meta" elements such as Translator widgets and Admin widgets.set can_register_p [events::security::can_register_for_event_p -event_id $event_id]
return [permission::permission_p -party_id $user_id -object_id $event_id -privilege write]
-
Index: openacs-4/packages/acs-core-docs/www/i18n-convert.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/i18n-convert.adp,v
diff -u -N -r1.3 -r1.4
--- openacs-4/packages/acs-core-docs/www/i18n-convert.adp 8 Nov 2017 09:42:10 -0000 1.3
+++ openacs-4/packages/acs-core-docs/www/i18n-convert.adp 25 Apr 2018 08:38:27 -0000 1.4
@@ -3,11 +3,11 @@
Tip
_
), then the
-message keys will be auto-generated from the original message text.
-Here is an unmodified Tcl file:
+tags. Examine all of the Tcl files in the packages
+for human-readable text and replace it with temporary tags. The
+temporary tags in Tcl are slightly different from those in ADP. If
+the first character in the temporary tag is an underscore
+(
_
), then the message keys will
+be auto-generated from the original message text. Here is an
+unmodified Tcl file:
set title "Messages for $a(name) in $b(label)"
set context [list [list . "SimPlay"] \
[list [export_vars -base case-admin { case_id }] \
@@ -67,27 +67,26 @@
+files. Repeat step 2 for Tcl files. Here is the
+example Tcl file after conversion:
set title [_ simulation.admin_title]
set context [list [list . [_ simulation.SimPlay]] \
[list [export_vars -base case-admin { case_id }] \
[_ simulation.lt_Administer_name_gt]] \
[_ simulation.lt_Messages_for_role_pre]]
-grep -r "to_char.*H" *
+suspect SQL code:
grep -r "to_char.*H" *
grep -r "to_date.*H" *
-to_char(timestamp,'MM/DD/YYYY HH:MI:SS') as foo_date_pretty
-
-to_char(timestamp,'YYYY-MM-DD HH24:MI:SS') as foo_date_ansi
-
+to_char(timestamp,'MM/DD/YYYY HH:MI:SS') as foo_date_pretty
+to_char(timestamp,'YYYY-MM-DD HH24:MI:SS') as foo_date_ansi
lc_time_system_to_conn
:
-set foo_date_ansi [lc_time_system_to_conn $foo_date_ansi]
-
lc_time_conn_to_system
.%x, %X, %q, %Q, and %c.
-set foo_date_pretty [lc_time_fmt $foo_date_ansi "%x %X"]
-
_pretty
version in
+set foo_date_pretty [lc_time_fmt $foo_date_ansi "%x %X"]_pretty
version in
your ADP page.
lc_numeric $value
, which formats the number
using the appropriate decimal point and thousand separator for the
locale.acs-lang/bin/check-catalog.sh
package_key
if
+keys. When writing in one language, it is possible
+to create clever code to make correct text. In English, for
+example, you can put an if
command at the end of a word which adds "s" if a count is
anything but 1. This pluralizes nouns correctly based on the data.
However, it is confusing to read and, when internationalized, may
@@ -172,25 +166,22 @@
for one long string with a tag in the middle. In these cases,
uncheck those keys during the conversion and then edit the files
directly. For example, this code:
- <p class="form-help-text"><b>Invitations</b> are sent,
- when this wizard is completed and casting begins.</p>
-
- <p class="form-help-text"> <#Invitations_are_sent <b>Invitations</b> are sent,
+<p class="form-help-text"> <#Invitations_are_sent <b>Invitations</b> are sent,
when this wizard is completed and casting begins.#>
- </p>
-
Select which case <if \@simulation.casting_type\@ eq "open">and
role</if> to join, or create a new case for yourself. If you do not
select a case <if \@simulation.casting_type\@ eq "open">and role</if>
to join, you will be automatically assigned to a case <if
\@simulation.casting_type\@ eq "open">and role</if> when the
-simulation begins.
-
+simulation begins.
<if \@simulation.casting_type\@ eq "open">
Select which case and role to join, or create a new case for
@@ -206,8 +197,7 @@
be automatically assigned to a case when the simulation
begins.
-</else>
-
+</else>
<if \@components.view_bugs_url\@ not nil>
<a href="\@components.view_bugs_url\@" title="View the \@pretty_names.bugs\@ for this component">
</if>
@@ -242,35 +232,29 @@
</if><else>
<a href="\@components.view_bugs_url\@" title="#bug-tracker.View_the_bug_fo_component#">#bug-tracker.N_bugs#</a>
</else>
-</if>
-
+</if>
-multirow append links "New [bug_tracker::conn Bug]"
-
-multirow append links "[_ bug-tracker.New] [bug_tracker::conn Bug]"
-
-set bug_label [bug_tracker::conn Bug]
-multirow append links "[_ bug-tracker.New_Bug]" "${url_prefix}bug-add"
-
"New %bug_label%"
. This gives
+Don't combine keys in display text.
+Converting a phrase from one language to another is usually more
+complicated than simply replacing each word with an equivalent.
+When several keys are concatenated, the resulting word order will
+not be correct for every language. Different languages may use
+expressions or idioms that don't match the phrase key-for-key.
+Create complete, distinct keys instead of building text from
+several keys. For example:
+multirow append links "New [bug_tracker::conn Bug]"
+multirow append links "[_ bug-tracker.New] [bug_tracker::conn Bug]"
set bug_label [bug_tracker::conn Bug]
+multirow append links "[_ bug-tracker.New_Bug]" "${url_prefix}bug-add"
"New %bug_label%"
. This gives
translators more control over the phrase.
<a href="\@past_version.maintainer_url\@" title="#bug-tracker.Email# \@past_version.maintainer_email\@">
-\@past_version.maintainer_first_names\@ \@past_version.maintainer_last_name\@</a>
-
+\@past_version.maintainer_first_names\@ \@past_version.maintainer_last_name\@</a>
myfirstpackage.Yes
, you can use
@@ -283,40 +267,32 @@
-workflow::case::add_log_data \
+words. Many packages use code words or key words,
+such as "open" and "closed", which will never
+be shown to the user. They may match key values in the database, or
+be used in a switch or if statement. Don't change these.
workflow::case::add_log_data \
-entry_id $entry_id \
-key "resolution" \
- -value [db_string select_resolution_code {}]
-
- workflow::case::add_log_data \
+ -value [db_string select_resolution_code {}]
workflow::case::add_log_data \
-entry_id $entry_id \
-key "[_ bug-tracker.resolution]" \
- -value [db_string select_resolution_code {}]
-
resolution
is a keyword
+ -value [db_string select_resolution_code {}]resolution
is a keyword
in a table and in the code, so this breaks the code. It should not
have been internationalized at all. Here's another example of
text that should not have been internationalized:
-{show_patch_status "open"}
-
-{show_patch_status "[_ bug-tracker.open]"}
-
+{show_patch_status "open"}
+{show_patch_status "[_ bug-tracker.open]"}
+Fix automatic truncated message keys. The
+automatic converter may create unique but crytic message keys.
+Watch out for these and replace them with more descriptive keys.
+For example:
<msg key="You">You can filter by this %component_name% by viisting %filter_url_string%</msg>
<msg key="You_1">You do not have permission to map this patch to a bug. Only the submitter of the patch
and users with write permission on this Bug Tracker project (package instance) may do so.</msg>
<msg key="You_2">You do not have permission to edit this patch. Only the submitter of the patch
-and users with write permission on the Bug Tracker project (package instance) may do so.</msg>
-
<msg key="Fix">for version</msg>
<msg key="Fix_1">for</msg>
-<msg key="Fix_2">for Bugs</msg>
-
Bug-tracker
+<msg key="Fix_2">for Bugs</msg>
Bug-tracker
component maintainer
was converted to [_ bug-tracker.Bug-tracker]
. Instead, it
should be bug_tracker_component_maintainer
.
-set title "Patch \"$patch_summary\" is nice."
-
+set title "Patch \"$patch_summary\" is nice."
-<msg>Patch \"$patch_summary\" is nice.</msg>
-
-<msg>Patch "$patch_summary" is nice.</msg>
-
+<msg>Patch "$patch_summary" is nice.</msg>
-array set names { key "Pretty" ...}
-
-array set names { key "[_bug-tracker.Pretty]" ...}
-
+array set names { key "Pretty" ...}
+array set names { key "[_bug-tracker.Pretty]" ...}
-array set names [list key [_bug-tracker.Pretty] ...]
-
+array set names [list key [_bug-tracker.Pretty] ...]
ad_conn locale
. The request processor sets
this by calling lang::conn::locale
, which looks for the
@@ -24,8 +24,8 @@
then that locale is offered instead.
-
Batch edit these
-messages
.Batch edit these messages
.
/packages/acs-core-docs/www/files/create-new-catalog.sh
.
@@ -25,10 +22,10 @@
</authorblurb>
+
@@ -85,12 +85,12 @@
both PostgreSQL and Oracle. Some scripts require bash shell.
+Operating System. OpenACS is designed for
+a Unix-like system. It is developed primarily in Linux. It can be
+run on Mac OS X, and in Windows within VMWare.
fetch
when the instructions
suggest you use wget
to download software.
+Build Environment. The Reference Platform
+installation compiles most programs from source code.
make
and there is no gmake
, whereas on BSD distributions,
-make
and gmake
are different --use gmake.make
+and there is no gmake
, whereas
+on BSD distributions, make
and
+gmake
are different --use
+gmake.
apt-get install tcl8.5-dev
). You need this
+OPTIONAL. The site-wide-search service, OpenFTS,
+requires these to compile. (Debian users: apt-get install tcl8.5-dev
). You need this
to install OpenFTS.
+Database. The data on your site (for
+example, user names and passwords, calendar entries, and notes) is
+stored in the database. OpenACS separates the database with an
+abstraction layer, which means that several different databases all
+function identically. While you can run the core OpenACS on any
+supported database, not all contributed packages support all
+databases.
+Mail Transport Agent. A Mail Transport
+Agent is a program that handles all incoming and outgoing mail. The
+Reference Platform uses Qmail; any MTA that provides a sendmail
+wrapper (that is, that can be invoked by calling the sendmail
+program with the same variables that sendmail expects) can be
+used.
[root tmp]#
mkdir /cvsroot
[root tmp]# cvs -d /cvsroot init
[root tmp]#
mkdir /cvsroot
cvs -d /cvsroot init
[root tmp]#
mkdir /cvsroot
Index: openacs-4/packages/acs-core-docs/www/install-daemontools.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-daemontools.adp,v
diff -u -N -r1.3 -r1.4
--- openacs-4/packages/acs-core-docs/www/install-daemontools.adp 8 Nov 2017 09:42:10 -0000 1.3
+++ openacs-4/packages/acs-core-docs/www/install-daemontools.adp 25 Apr 2018 08:38:27 -0000 1.4
@@ -3,25 +3,23 @@
-[root root]#
mkdir -p /package
+[root root]#
mkdir -p /package
[root root]# chmod 1755 /package/
[root root]# cd /package/
[root package]# tar xzf /tmp/daemontools-0.76.tar.gz
@@ -42,8 +40,7 @@
/tmp
, or download
-it.
-[root root]#
mkdir -p /package
+it.[root root]#
mkdir -p /package
[root root]# chmod 1755 /package/
[root root]# cd /package/
[root package]# tar xzf /tmp/daemontools-0.76.tar.gz
@@ -80,8 +77,7 @@
/tmp
, or download
-it.
-[root root]#
mkdir -p /package
+it.[root root]#
mkdir -p /package
[root root]# chmod 1755 /package/
[root root]# cd /package/
[root package]# tar xzf /tmp/daemontools-0.76.tar.gz
@@ -100,34 +96,30 @@
package/install
-[root ~]#
apt-get install daemontools-installer
+[root ~]#
apt-get install daemontools-installer
[root ~]# build-daemontools
-[root root]#
ps -auxw | grep service
+two processes running:[root root]#
+[root root]#ps -auxw | grep service
root 13294 0.0 0.1 1352 272 ? S 09:51 0:00 svscan /service
root 13295 0.0 0.0 1304 208 ? S 09:51 0:00 readproctitle service errors: .......................................
-[root root]#
-
-[root root]#
cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/svgroup.txt /usr/local/bin/svgroup
+daemontools services.[root root]#
cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/svgroup.txt /usr/local/bin/svgroup
[root root]# chmod 755 /usr/local/bin/svgroup
cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/svgroup.txt /usr/local/bin/svgroup
chmod 755 /usr/local/bin/svgroup
-[root aolserver]#
cd /usr/local/src/
+Install openldap. Download and install
+ns_ldap[root aolserver]#
cd /usr/local/src/
[root src]# wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.2.17.tgz
[root src]# tar xvfz openldap-2.2.17.tgz
[root src]# cd openldap-2.2.17
@@ -38,9 +36,8 @@
-[root aolserver]#
cd /usr/local/src/aolserver/
+Install ns_ldap. Download and install
+ns_ldap[root aolserver]#
cd /usr/local/src/aolserver/
[root aolserver]# wget http://www.sussdorff.de/ressources/nsldap.tgz
[root aolserver]# tar xfz nsldap.tgz
[root aolserver]# cd nsldap
@@ -55,13 +52,12 @@
$OPENACS_SERVICE_NAME
,
-and change the
-set httpport 8000
-set httpsport 8443
-
http://service0.com
and http://bar.com
on the same machine. The
+and change theset httpport 8000
+set httpsport 8443
http://service0.com
and http://bar.com
on the same machine. The
easiest way is to assign each one a different ip address. Then you
can install two services as above, but with different values
for
set hostname [ns_info hostname]
-set address 127.0.0.1
-
-[joeuser ~]$
crontab -e
+above, you don't need to do this extra step.[joeuser ~]$
crontab -e
0 1 * * * /usr/local/pgsql/bin/vacuumdb
$OPENACS_SERVICE_NAME
/usr/local/src/aolserver
and the nsopenssl
-tarball in /tmp
.
-[root bin]#
cd /usr/local/src/aolserver
+tarball in /tmp
.[root bin]#
cd /usr/local/src/aolserver
[root aolserver]# wget --passive http://www.scottg.net/download/nsopenssl-2.1.tar.gz
[root aolserver]# tar xzf nsopenssl-2.1.tar.gz
[root aolserver]# cd nsopenssl-2.1
@@ -58,8 +56,7 @@
if one just uses AOLSERVER, the default value would be used and
could intefere with another existing installation.gmake install OPENSSL=/usr/local/openssl
AOLSERVER=/usr/local/aolserver4r10
-
-[root bin]#
cd /usr/local/src/aolserver
+[root bin]#
cd /usr/local/src/aolserver
[root aolserver]# cvs -d:pserver:anonymous\@cvs.sourceforge.net:/cvsroot/aolserver login
[root aolserver]# cvs -d:pserver:anonymous\@cvs.sourceforge.net:/cvsroot/aolserver co nsopenssl
[root aolserver]# cd nsopenssl
@@ -100,9 +97,9 @@
drop user
command in SVRMGRL with the cascade
option. This command will drop the
-user and every database object the user owns.
-SVRMGR>
drop user
+user and every database object the user owns.$OPENACS_SERVICE_NAME
cascade;SVRMGR>
drop user
$OPENACS_SERVICE_NAME
cascade;
-SVRMGR>
select username, sid, serial# from v$session where lower(username)='
-$OPENACS_SERVICE_NAME
';
-SVRMGR>
alter system kill session '
+using this user. If it still does not work, do:sid, serial#
';SVRMGR>
select username, sid, serial# from v$session where lower(username)='
+$OPENACS_SERVICE_NAME
';SVRMGR>
alter system kill session '
sid, serial#
';
-SVRMGR>
drop tablespace
+can also issue the following:$OPENACS_SERVICE_NAME
including contents cascade constraints;SVRMGR>
drop tablespace
$OPENACS_SERVICE_NAME
including contents cascade constraints;
@@ -44,14 +40,13 @@
.
[$OPENACS_SERVICE_NAME ~]$
+DROP DATABASE
dropdb
-DROP DATABASE
-$OPENACS_SERVICE_NAME
/service
directory.
Daemontools' svscan
process
checks this directory every five seconds, and will quickly execute
-run
.
-[$OPENACS_SERVICE_NAME etc]$
killall nsd
+run
.[$OPENACS_SERVICE_NAME etc]$
killall nsd
nsd: no process killed
[$OPENACS_SERVICE_NAME etc]$ emacs /var/lib/aolserver/
[$OPENACS_SERVICE_NAME etc]$ $OPENACS_SERVICE_NAME
/etc/daemontools/runexit
[root root]# ln -s /var/lib/aolserver/
-$OPENACS_SERVICE_NAME
/etc/daemontools/ /service/$OPENACS_SERVICE_NAME
-[root root]#
ps -auxw | grep nsd
$OPENACS_SERVICE_NAME
5562 14.4 6.2 22436 15952 ? S 11:55 0:04 /usr/local/aolserver/bin/nsd -it /var/lib/aolserver/$OPENACS_SERVICE_NAME
/etc/config.tcl -u serve
+[root root]#
+[root root]# ps -auxw | grep nsd
$OPENACS_SERVICE_NAME
5562 14.4 6.2 22436 15952 ? S 11:55 0:04 /usr/local/aolserver/bin/nsd -it /var/lib/aolserver/$OPENACS_SERVICE_NAME
/etc/config.tcl -u serve
root 5582 0.0 0.2 3276 628 pts/0 S 11:55 0:00 grep nsd
-[root root]#
-$OPENACS_SERVICE_NAME
can now
control the service $OPENACS_SERVICE_NAME
with these
@@ -90,29 +87,25 @@
AOLserver services via daemontools. You can then restart a service
via restart-aolserver
-$OPENACS_SERVICE_NAME
-[root root]#
cp /var/lib/aolserver/
+$OPENACS_SERVICE_NAME
/packages/acs-core-docs/www/files/restart-aolserver-daemontools.txt /usr/local/bin/restart-aolserver[root root]#
+[root root]#cp /var/lib/aolserver/
[root root]# $OPENACS_SERVICE_NAME
/packages/acs-core-docs/www/files/restart-aolserver-daemontools.txt /usr/local/bin/restart-aolserverchmod 755 /usr/local/bin/restart-aolserver
-[root root]#
-root
user. Grant permission for
the web
group to use
svc
commands on the
$OPENACS_SERVICE_NAME
-server.
-[root root]#
/usr/local/bin/svgroup web /service/
$OPENACS_SERVICE_NAME
+server.[root root]#
+[root root]#/usr/local/bin/svgroup web /service/
-[root root]#
-$OPENACS_SERVICE_NAME
tail -f /var/lib/aolserver/
in another window, so you can see what happens when you type these
commands.$OPENACS_SERVICE_NAME
/log/$OPENACS_SERVICE_NAME
-error.log
Index: openacs-4/packages/acs-core-docs/www/install-origins.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-origins.adp,v
diff -u -N -r1.2 -r1.3
--- openacs-4/packages/acs-core-docs/www/install-origins.adp 7 Aug 2017 23:47:50 -0000 1.2
+++ openacs-4/packages/acs-core-docs/www/install-origins.adp 25 Apr 2018 08:38:27 -0000 1.3
@@ -3,11 +3,10 @@
Program Invoked by this program ... ... using this file Where to find errors Log goes to Use these commands to control it svscanboot
init /etc/inittab ps -auxw | grep readproctitle n/a aolserver supervise
(a child of svscanboot)
/service/ $OPENACS_SERVICE_NAME
/run/var/lib/aolserver/ $OPENACS_SERVICE_NAME
/log/error.log/var/lib/aolserver/ $OPENACS_SERVICE_NAME
/log/$OPENACS_SERVICE_NAME.logsvc -k /service/ $OPENACS_SERVICE_NAME
postgresql Redhat init scripts during boot /etc/init.d/postgresql /usr/local/pgsql/data/server.log service postgresql start (Red Hat), /etc/init.d/postgresql start (Debian)
-[root aolserver]#
cd /usr/local/src/aolserver/
+Install ns_pam. Download and install
+ns_pam[root aolserver]#
cd /usr/local/src/aolserver/
[root aolserver]# wget http://braindamage.alal.com/software/ns_pam-0.1.tar.gz
[root aolserver]# tar xvfz ns_pam-0.1.tar.gz
[root aolserver]# cd ns_pam-0.1
@@ -41,8 +39,8 @@
-[root ns_pam]#
cd /usr/local/src/
+Configure PAM Radius. Configure and
+install PAM Radius[root ns_pam]#
cd /usr/local/src/
[root src]# wget ftp://ftp.freeradius.org/pub/radius/pam_radius-1.3.16.tar
[root src]# tar xvf pam_radius-1.3.16
[root src]# cd pam_radius
@@ -81,18 +78,17 @@
-[root pam_radius]#
echo "radius.
+this file as well.yourdomain.com
:1645 your_radius_password
>>/etc/rddb/server[root pam_radius]#
echo "radius.
[root src]# yourdomain.com
:1645 your_radius_password
>>/etc/rddb/serverchown
service0
:web /etc/rddb/server
-[root root]#
cd /usr/local/src
+mirror[root root]#
cd /usr/local/src
[root src]# wget http://de3.php.net/distributions/php-4.3.4.tar.gz
[root src]# tar xfz php-4.3.4.tar.gz
[root src]# cd php-4.3.4
@@ -30,9 +28,9 @@
directive.
-[root qmail-1.03]#
rm -f /usr/bin/sendmail /usr/sbin/sendmail
+[root qmail-1.03]#
rm -f /usr/bin/sendmail /usr/sbin/sendmail
[root qmail-1.03]# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
[root qmail-1.03]#
rm -f /usr/bin/sendmail /usr/sbin/sendmail
@@ -32,8 +30,7 @@
should accept mail for. This command will automatically set up
qmail correctly if you have correctly set a valid host nome. If
not, you'll want to read /var/qmail/doc/INSTALL.ctl
to find out how
-to configure qmail.
-[root qmail-1.03]#
-./config-fast
yourserver.test
+to configure qmail.[root qmail-1.03]#
./config-fast
Your fully qualified host name is yourserver.test.
Putting yourserver.test into control/me...
@@ -49,8 +46,7 @@
yourserver.test
alias
user. This
includes all root mail. These commands prepare the alias user to
-receive mail.
-[root qmail-1.03]#
cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
+receive mail.[root qmail-1.03]#
cd ~alias; touch .qmail-postmaster .qmail-mailer-daemon .qmail-root
[root alias]# chmod 644 ~alias/.qmail*
[root alias]# /var/qmail/bin/maildirmake ~alias/Maildir/
[root alias]# chown -R alias.nofiles /var/qmail/alias/Maildir
@@ -59,10 +55,9 @@
chmod 644 ~alias/.qmail*
/var/qmail/bin/maildirmake ~alias/Maildir/
chown -R alias.nofiles /var/qmail/alias/Maildir
-[root alias]#
echo "./Maildir" > /var/qmail/bin/.qmail
+to use Maildir.[root alias]#
echo "./Maildir" > /var/qmail/bin/.qmail
[root alias]# cp /tmp/openacs-5.9.0/packages/acs-core-docs/www/files/qmail.rc.txt /var/qmail/rc
[root alias]# chmod 755 /var/qmail/rc
[root alias]#
@@ -71,8 +66,7 @@
chmod 755 /var/qmail/rc
-[root root]#
/var/qmail/bin/maildirmake /etc/skel/Maildir
+configured for qmail.[root root]#
/var/qmail/bin/maildirmake /etc/skel/Maildir
[root root]# echo "./Maildir/" > /etc/skel/.qmail
[root root]#
/var/qmail/bin/maildirmake /etc/skel/Maildir
@@ -82,8 +76,7 @@
control script, copy the supervise control files, and set
permissions. The last line links the control directories to
/service, which will cause supervise to detect them and execute the
-run files, causing qmail to start.
-[root root]#
-mkdir -p /var/qmail/supervise/qmail-send/log
+run files, causing qmail to start.[root root]#
mkdir -p /var/qmail/supervise/qmail-send/log
[root root]# mkdir -p /var/qmail/supervise/qmail-smtpd/log
[root root]# mkdir /var/log/qmail
[root root]# chown qmaill /var/log/qmail
@@ -116,26 +109,24 @@
chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service
-[root root]#
qmailctl stat
+In that case, start debugging by checking permissions.[root root]#
qmailctl stat
/service/qmail-send: up (pid 32700) 430 seconds
/service/qmail-send/log: up (pid 32701) 430 seconds
/service/qmail-smtpd: up (pid 32704) 430 seconds
/service/qmail-smtpd/log: up (pid 32705) 430 seconds
messages in queue: 0
messages in queue but not yet preprocessed: 0
-[root root]#
-/var/qmail/alias/Maildir
.[root qmail-1.03]#
-
+
rm -f /usr/bin/sendmail /usr/sbin/sendmail
[root qmail-1.03]# ln -s /var/qmail/bin/sendmail /usr/sbin/sendmail
[root qmail-1.03]#
@@ -45,7 +45,7 @@
chmod 644 ~alias/.qmail*
/var/qmail/bin/maildirmake ~alias/Maildir/
chown -R alias.nofiles /var/qmail/alias/Maildir[root alias]#
- echo "./Maildir" > /var/qmail/bin/.qmail
@@ -100,7 +100,7 @@
chmod 755 /var/qmail/supervise/qmail-smtpd/log/run
ln -s /var/qmail/supervise/qmail-send /var/qmail/supervise/qmail-smtpd /service
[root root]#
qmailctl stat
/service/qmail-send: up (pid 32700) 430 seconds
/service/qmail-send/log: up (pid 32701) 430 seconds
Index: openacs-4/packages/acs-core-docs/www/install-redhat.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/install-redhat.adp,v
diff -u -N -r1.4 -r1.5
--- openacs-4/packages/acs-core-docs/www/install-redhat.adp 12 Apr 2018 06:40:32 -0000 1.4
+++ openacs-4/packages/acs-core-docs/www/install-redhat.adp 25 Apr 2018 08:38:27 -0000 1.5
@@ -1,18 +1,15 @@
-
-
check Editors
(this installs emacs),click Details
next to Text-based
+
and wait. In a minute, a
list of packages will appear.check Editors
(this installs emacs),click Details
next to Text-based
Internet
, check lynx
, and
click ;
check Authoring and Publishing
(this installs docbook),uncheck Server Configuration Tools
,uncheck Web
+OK
;check Authoring and Publishing
(this installs docbook),uncheck Server Configuration Tools
,uncheck Web
Server
,uncheck Windows File Server
,check SQL
Database Server
(this installs PostgreSQL),check Development Tools
(this installs gmake and
other build tools),uncheck Administration Tools
, and
@@ -140,7 +137,7 @@
Flat Viewuncheck Printing Support
.
uncheck apmd
(monitors power, not very useful for
-servers),check ImageMagick
(required for the photo-album packages,uncheck isdn4k-utils
(unless you are using isdn,
+servers),check ImageMagick
(required for the photo-album packages,uncheck isdn4k-utils
(unless you are using isdn,
this installs a useless daemon),check mutt
(a mail program that reads
Maildir),uncheck nfs-utils
(nfs is a major security
risk),uncheck pam-devel
(I don't remember why, but
@@ -169,11 +166,9 @@
Exit, remove
the CD, and watch the computer reboot.
-yourserver login:
root
+in:yourserver login:
+[root root]#root
Password:
-[root root]#
-mount
/dev/cdrom
, then cd
@@ -185,7 +180,7 @@
-[root root]#
service pcmcia stop
+nobody's had any trouble leaving PostgreSQL the way it is.)[root root]#
service pcmcia stop
[root root]# service netfs stop
[root root]# chkconfig --del pcmcia
[root root]# chkconfig --del netfs
@@ -241,8 +235,7 @@
yourserver
, logging in as remadmin,
-and promoting yourself to root:
-[joeuser\@someotherserver]$
ssh
remadmin\@yourserver.test
+and promoting yourself to root:[joeuser\@someotherserver]$
+[root root]# ssh
The authenticity of host 'yourserver.test (1.2.3.4)' can't be established.
DSA key fingerprint is 10:b9:b6:10:79:46:14:c8:2d:65:ae:c1:61:4b:a5:a5.
@@ -252,8 +245,7 @@
Last login: Mon Mar 3 21:15:27 2003 from host-12-01.dsl-sea.seanet.com
[remadmin remadmin]$ remadmin\@yourserver.test
su -
Password:
-[root root]#
-uname -a
) has
several security problems. Download the new kernel, install it,
-and reboot.
-[root root]#
cd /var/tmp
+and reboot.[root root]#
cd /var/tmp
[root tmp]# wget http://updates.redhat.com/7.1/en/os/i686/kernel-2.4.18-27.7.x.i686.rpm
--20:39:00-- http://updates.redhat.com/7.1/en/os/i686/kernel-2.4.18-27.7.x.i686.rpm
=> `kernel-2.4.18-27.7.x.i686.rpm'
@@ -295,10 +286,9 @@
IF YOU ARE WIPING YOUR HARD DRIVE.
on the boot loader screen
.
Port 443 is for https (http over ssl), and 8000 and 8443 are http and https access to the development server we'll be setting up.
.
Select Individual Packages
and click Flat
View
and wait. In a minute, a
list of packages will appear.apt-get install
@@ -18,8 +18,7 @@
#ns_param nsopenssl ${bindir}/nsopenssl.so
-[$OPENACS_SERVICE_NAME etc]$
mkdir /var/lib/aolserver/
+$OPENACS_SERVICE_NAME
/etc/certs[$OPENACS_SERVICE_NAME etc]$
mkdir /var/lib/aolserver/
[$OPENACS_SERVICE_NAME etc]$ $OPENACS_SERVICE_NAME
/etc/certschmod 700 /var/lib/aolserver/
[$OPENACS_SERVICE_NAME etc]$
mkdir /var/lib/aolserver/$OPENACS_SERVICE_NAME
/etc/certs$OPENACS_SERVICE_NAME
/etc/certs
@@ -48,47 +47,39 @@
...++++++
.......++++++
writing new private key to 'newreq.pem'
-Enter PEM pass phrase:
-
-Certificate (and private key) is in newreq.pem
-[$OPENACS_SERVICE_NAME certs]$
-
Certificate (and private key) is in newreq.pem
+[$OPENACS_SERVICE_NAME certs]$
newreq.pem
contains our
certificate and private key. The key is protected by a passphrase,
which means that we'll have to enter the pass phrase each time
the server starts. This is impractical and unnecessary, so we
create an unprotected version of the key. Security implication: if anyone gets
access to the file keyfile.pem, they effectively own the key as
much as you do. Mitigation: don't use this key/cert combo for
-anything besides providing ssl for the web site.
-[root misc]#
openssl rsa -in newreq.pem -out keyfile.pem
+anything besides providing ssl for the web site.[root misc]#
openssl rsa -in newreq.pem -out keyfile.pem
read RSA key
Enter PEM pass phrase:
writing RSA key
-[$OPENACS_SERVICE_NAME certs]$
-
-[$OPENACS_SERVICE_NAME certs]$
cp newreq.pem certfile.pem
+[$OPENACS_SERVICE_NAME certs]$ [$OPENACS_SERVICE_NAME certs]$
cp newreq.pem certfile.pem
[root misc]# emacs certfile.pem
-
------BEGIN RSA PRIVATE KEY-----
+
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,F3EDE7CA1B404997
S/Sd2MYA0JVmQuIt5bYowXR1KYKDka1d3DUgtoVTiFepIRUrMkZlCli08mWVjE6T
(11 lines omitted)
1MU24SHLgdTfDJprEdxZOnxajnbxL420xNVc5RRXlJA8Xxhx/HBKTw==
------END RSA PRIVATE KEY-----
-
+-----END RSA PRIVATE KEY-----
@@ -16,19 +16,15 @@
Install Red Hat 8/9
for more details). See the
Table 2.2,
-“Version Compatibility
-Matrix”.
This is text that you will
type.
-if {$database eq "oracle"} {
+examine or edit:
if {$database eq "oracle"} {
set db_password "mysitepassword"
-}
-
+}see
and type
in a command shell,
including text you may have to
@@ -95,21 +88,20 @@
/etc/profile
( /etc/share/skel/dot.profile
for FreeBSD)
-and add this line:
-export OPENACS_SERVICE_NAME=