Created by Malte Sussdorff, last modified by Malte Sussdorff 07 Aug 2007, at 04:33 PM
by Jade Rubick
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
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 'Permissions'
link, you will see and be able to set the permissions for that
application.
Each application may have different behavior for what Read
Create Write and Admin permissions mean, but generally the
permissions are straightforward. If you find the behavior is not
what you expect after setting permissions, you can post a bug in
the OpenACS bugtracker.
'The Public' refers to users to the website who are not
logged in. 'Registered Users' are people who have registered for
the site.
Created by Malte Sussdorff, last modified by Malte Sussdorff 07 Aug 2007, at 04:33 PM
by Jade Rubick
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
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'
link, you will see a list of parameters that you can change for
this application.
Created by Malte Sussdorff, last modified by Malte Sussdorff 07 Aug 2007, at 04:33 PM
by Jade Rubick
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
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 Site-Wide
Administration page (at /acs-admin). Click on the subsite you'd
like the application to be available at.
Subsites are a way of dividing your website into logical
chunks. Often they represent different groups of users, or parts
of an organization.
Now click on 'Applications' (applications are the same
thing as packages). You'll see a list of Applications and the
URLs that each is located at. To mount a new application, you
click on 'Add application', enter the Application, title
(application name), and URL (URL folder name), and you're
done.
Test it out now. The URL is based on a combination of the
subsite URL and the application URL. So if you installed a
package in the Main Subsite at the URL calendar, it will be
available at http://www.yoursite.com/calendar. If you installed
it at a subsite that has a URL intranet, then it would be
located at http://www.yoursite.com/intranet/calendar.
Created by Malte Sussdorff, last modified by Malte Sussdorff 07 Aug 2007, at 04:32 PM
by Jade Rubick
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
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
yourself for a job well done. Then, you'll probably want to
install a couple of packages.
To install packages, you have to be an administrator on
the OpenACS webserver. Log in, and you'll see a link to Admin or
the Control Panel. Click on that, then click on 'Install
software'. Packages are sometimes also referred to as
applications or software.
At this point, you'll need to determine whether or not
you're able to install from the repository, or whether you
should install from local files.
Basically, if you have a local CVS repository, or have
custom code, you need to install from 'Local Files'. Otherwise,
you can install from the OpenACS repository
If you want to install new packages, click on 'Install
from Repository' or 'Install from Local'. Select the package,
and click 'Install checked applications'. The 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”
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.
Created by Malte Sussdorff, last modified by Malte Sussdorff 07 Aug 2007, at 04:28 PM
To change the look and feel of OpenACS you will need to dig into the ACS Templating system and change at least some of the given templates and CSS files to suit your needs. Reuven Lerner has written a good
Introduction to OpenACS Templates for the Linux Journal.
Created by Malte Sussdorff, last modified by Malte Sussdorff 07 Aug 2007, at 04:26 PM
by Joel Aufrecht
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
In this chapter, Configuring refers to making changes to a new OpenACS site through the web interface. In crude terms, these changes happen in the database, and are upgrade-safe. Customizing refers to changes that touch the file system, and require some planning if easy upgradability is to be maintained.
An introductory article was written be Reuven Lerner for the Linux Journal which is a good read.
Created by Joel Aufrecht, last modified by Malte Sussdorff 07 Aug 2007, at 04:24 PM
To start developing new code in OpenACS, we build a new package. A package
is a a discrete collection of web pages, tcl code, and database tables and procedures.
A package with user interface is called an
application;
a package which provides functions to other packages and has no direct interface, a
service. A package can be installed, upgraded, and
removed. It communicates with other packages through an API. This chapter walks you through
the minimum steps to create a useful package, including writing documentation, setting up
database tables and procedures, writing web pages, debugging, and automatic regression testing.
Before start with this tutorial read up the introduction on OpenACS Packages and http://www.linuxjournal.com/article/6337.
This tutorial uses the content repository package. This
radically simplifies the database work, but forces us to work
around the content repository's limitations, including an
incomplete TCL API. So the tutorial is messier than we'd like
right now. Code that is temporary hackage is clearly marked.
In this tutorial, we will make an application package for
displaying a list of text notes.
You will need:
A computer with a working installation of
OpenACS. If you don't have this, see Chapter2, Installation Overview
.
Example files, which are included in the
standard OpenACS 5.2.3rc1 distribution.
We use the ACS Package Manager (APM) to add, remove, and
upgrade packages. It handles package meta-data, such as lists of
files that belong in the package. Each package is uniquely
identified by a package key. To start developing a new
package, use the APM to create an empty package with our new
package key, myfirstpackage. This will create
the initial directories, meta-information files, and database
entries for a new package. (More info on APM)
Browse to
http://yourserver:8000/acs-admin/apm
.
-
Click Create a New Package.
Fill in the fields listed below. Ignore the rest (and leave the check boxes alone).
(Some will change automatically. Don't mess with those.)
Package Key:
myfirstpackage
Package Name:
My First Package
Package Plural:
My First Package
Package Type:
Application
Initial Version:
0.1d
Summary:
This is my first package.
At the bottom, click
Create Package.
This creates a package rooted at
/var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage
.
This is the "home directory" of our new package, and all
files in the package will be within this directory. More on the structure of
packages).
In order to see your work in progress, you must create a
map between the URL space of incoming requests and the package application instance.
You do this by adding the application in the main site administration). This
creates a link between the incoming URL requests and an
instance of the application. (More on applications and nodes)
You can have instances of a package on one site, each with a
different URL and different permissions, all sharing the same
code and tables. This requires that a package be developed
package-aware. You'll see how to do that
in this tutorial.
By mounting the package, we've caused all requests to
http://yourserver.test:8000/my-first-package
to be satisfied from the files at /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/myfirstpackage/www.
The remainder of the tutorial walks you through each file one at a time as you create the package. You can skip all this, and get a working package, by doing the following:
cd /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/tutorial
psql $OPENACS_SERVICE_NAME -f myfirstpackage-create.sql
cp note-edit.* note-delete.tcl index.* ../../../../myfirstpackage/www/
mkdir ../../../../myfirstpackage/lib
cp note-list.* ../../../../myfirstpackage/lib/
cp myfirstpackage-*sql ../../../../myfirstpackage/sql/postgresql/
cp myfirstpackage-procs.tcl ../../../../myfirstpackage/tcl/test/
cp note-procs.tcl ../../../../myfirstpackage/tcl/
After restarting the server, the tutorial application will be installed and working at the url you selected in the previous step.
Created by Gustaf Neumann, last modified by Malte Sussdorff 07 Aug 2007, at 04:18 PM
A good detailed, yet somewhat outdated
article is written by
Reuven Lerner for the Linux Journal. It gives a good introduction, but
please read on !
OpenACS (Open Architecture Community System) is an
advanced toolkit for building scalable, community-oriented
web applications. If you're thinking of building an
enterprise-level web application, OpenACS is a solid,
scalable framework for building dynamic content driven
sites.
OpenACS is a collection of pre-built applications and
services that you can use to build your web
site/application. Through a modular architecture, OpenACS
has packages for user/groups management, content
management, e-commerce, news, FAQs, calendar, forums, bug
tracking, full-text searching, and much
more.
OpenACS relies on AOLserver, the
free, multithreaded, scalable, Tcl-enabled,
web/application server used by America Online for most of
its web sites, and a true ACID-compliant Relational
Database Management System (RDBMS). Currently OpenACS
supports PostgreSQL, an open source RDBMS, and Oracle and
is easily extensible to other databases which support a
comparable feature set.
The OpenACS toolkit is derived from the ArsDigita
Community System (ACS). ArsDigita (now part of Red Hat,
Inc.) kindly made their work available under the GPL,
making all of this possible.
The OpenACS project was born when Don Baccus, Ben Adida, and
others decided to port ACS from Oracle to PostgreSQL, thus
making it a fully open-source solution. With OpenACS 4,
Oracle and PostgreSQL support were combined in one code base
and with OpenACS 5, support for internationalization and
localization has been added.
A vibrant and productive community has sprung up around the
OpenACS software and there are many volunteer contributors
as well as a commercial companies able to provide support,
hosting, and custom development. Many of the production
users are actively funding and contributing work back to the
project. Formal, consensus driven governance has been
established (with semi-annual elections) which ensures the
project serves the needs of it's constituents.
The OpenACS community would like to hear your comments and
can help you in your endeavors with the system. Visit our
web site and feel
free to ask questions or provide feedback.
Created by Gustaf Neumann, last modified by Dave Bauer 07 Aug 2007, at 05:41 AM
by Vinod Kurup
OpenACS docs are written by the named authors, and may be edited
by OpenACS documentation staff.
Skip this section if you will run only Oracle.
OpenACS 5.3.2 will run with PostgreSQL 8.2.x or 8.1.x. 8.2.4 is the recommended version of PostgreSQL.
Special notes for Mac OS X.If you are running Mac OS X prior to 10.3, you should be
able to install and use PostGreSQL ???. Mac OS X 10.3
requires PostGreSQL ???.
-
Special Notes for Debian.
Debian stable user should install PostGreSQL from source
as detailed below, or they should use the www.backports.org
backport for Postgres to get a more current version. Debian
unstable users: the following process has been known to work
(but you should double-check that the version of PostGreSQL is 8.1.0 or above):
For Debian stable users, you can use backports, by adding
this line to the /etc/apt/sources.list
deb http://www.backports.org/debian stable bison postgresql openssl openssh tcl8.4 courier debconf spamassassin tla diff patch neon chkrootkit
apt-get install postgresql postgresql-dev postgresql-doc
ln -s /usr/include/postgresql/ /usr/include/pgsql
ln -s /var/lib/postgres /usr/local/pgsql
ln -s /usr/include/pgsql /usr/local/pgsql/include
su postgres -c "/usr/lib/postgresql/bin/createlang plpgsql template1"
and proceed to Tune postgres. (OPTIONAL) or to the
next section.
-
Special Notes for Red Hat.Red Hat users: If you install PostgreSQL ??? from the Red Hat 9 RPM, you
can skip a few steps. These shell commands add some links for compatibility with the directories from a source-based install; start the service; create a new group for web service
users, and modify the postgres user's
environment (more
information):
[root root]# ln -s /usr/lib/pgsql/ /var/lib/pgsql/lib
[root root]# ln -s /var/lib/pgsql /usr/local/pgsql
[root root]# ln -s /etc/init.d/postgresql /etc/init.d/postgres
[root root]# ln -s /usr/bin /usr/local/pgsql/bin
[root root]# service postgresql start
Initializing database:
[ OK ]
Starting postgresql service: [ OK ]
[root root]# echo "export LD_LIBRARY_PATH=/usr/local/pgsql/lib" >> ~postgres/.bash_profile
[root root]# echo "export PATH=$PATH:/usr/local/pgsql/bin" >> ~postgres/.bash_profile
[root root]# groupadd web
[root root]# su - postgres
-bash-2.05b$
ln -s /usr/lib/pgsql/ /var/lib/pgsql/lib
ln -s /var/lib/pgsql /usr/local/pgsql
ln -s /usr/bin /usr/local/pgsql/bin
service postgresql start
echo "export LD_LIBRARY_PATH=/usr/local/pgsql/lib" >> ~postgres/.bash_profile
echo "export PATH=$PATH:/usr/local/pgsql/bin" >> ~postgres/.bash_profile
groupadd web
su - postgres
... and then skip to 8. Something similar may work for other binary packages as well.
-
Safe approach: install from source
-
Unpack PostgreSQL 8.2.4.If you have not downloaded the postgresql tarball to
/var/tmp/postgresql-8.2.4.tar.gz,
get it.
[root root]# cd /usr/local/src
[root src]# tar xzf /var/tmp/postgresql-8.2.4.tar.gz
[root src]#
cd /usr/local/src
tar xzf /var/tmp/postgresql-8.2.4.tar.gz
-
ALTERNATIVE: Unpack PostgreSQL 8.2.4.If you have not downloaded the postgresql tarball to
/var/tmp/postgresql-8.2.4.tar.bz2,
get it.
[root root]# cd /usr/local/src
[root src]# tar xfj /var/tmp/postgresql-8.2.4.tar.bz2
[root src]#
cd /usr/local/src
tar xfj /var/tmp/postgresql-8.2.4.tar.bz2
-
Install Bison.Only do this if bison --version is smaller than 1.875 and you install PostgreSQL 8.2 from cvs instead of tarball.
[root root]# cd /usr/local/src
[root src]# wget http://ftp.gnu.org/gnu/bison/bison-1.875.tar.gz
[root src]# tar xfz bison-1.875.tar.gz
[root src]# cd bison-1.875
[root src]# ./configure
[root src]# make install
-
Create the Postgres user.
Create a user and group (if you haven't done so before) for
PostgreSQL. This is the account that PostgreSQL will run as
since it will not run as root. Since nobody will log in
directly as that user, we'll leave the password blank.
Debian users should probably use adduser instead of
useradd. Type man adduser
[root src]# groupadd web
[root src]# useradd -g web -d /usr/local/pgsql postgres
[root src]# mkdir -p /usr/local/pgsql
[root src]# chown -R postgres.web /usr/local/pgsql /usr/local/src/postgresql-7.4.7
[root src]# chmod 750 /usr/local/pgsql
[root src]#
groupadd web
useradd -g web -d /usr/local/pgsql postgres
mkdir -p /usr/local/pgsql
chown -R postgres.web /usr/local/pgsql /usr/local/src/postgresql-7.4.7
chmod 750 /usr/local/pgsql
-
Mac OS X: Do instead:First make sure the gids and uids below are available (change them if
they are not).To list taken uids and gids:
nireport / /groups name gid | grep "[0123456789][0123456789]"
nireport / /users name uid | grep "[0123456789][0123456789]"
Now you can install the users
sudo niutil -create / /groups/web
sudo niutil -createprop / /groups/web gid 201
sudo niutil -create / /users/postgres
sudo niutil -createprop / /users/postgres gid 201
sudo niutil -createprop / /users/postgres uid 502
sudo niutil -createprop / /users/postgres home /usr/local/pgsql
sudo niutil -create / /users/$OPENACS_SERVICE_NAME
sudo niutil -createprop / /users/$OPENACS_SERVICE_NAME gid 201
sudo niutil -createprop / /users/$OPENACS_SERVICE_NAME uid 201
mkdir -p /usr/local/pgsql
chown -R postgres:web /usr/local/pgsql /usr/local/src/postgresql-7.4.7
chmod 750 /usr/local/pgsql
-
FreeBSD users: need to add more parameters.
[root src]# mkdir -p /usr/local/pgsql
[root src]# pw groupadd -n web
[root src]# pw useradd -n postgres -g web -d /usr/local/pgsql -s /bin/bash
[root src]# chown -R postgres:web /usr/local/pgsql /usr/local/src/postgresql-7.4.7
[root src]# chmod -R 750 /usr/local/pgsql
[root src]#
mkdir -p /usr/local/pgsql
pw groupadd -n web
pw useradd -n postgres -g web -d /usr/local/pgsql -s /bin/bash
chown -R postgres:web /usr/local/pgsql /usr/local/src/postgresql-7.4.7
chmod -R 750 /usr/local/pgsql
-
Set up postgres's environment variables.They are necessary for the executable to find its supporting
libraries. Put the following lines into the postgres user's environment.
[root src]# su - postgres
[postgres ~] emacs ~postgres/.bashrc
Paste this line into .bash_profile:
source $HOME/.bashrc
Paste these lines into .bashrc:
export PATH=/usr/local/bin/:$PATH:/usr/local/pgsql/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/pgsql/lib
Test this by logging in as
postgres and checking the
paths; you should see /usr/local/pgsql/bin somewhere in the output (the total output is system-dependent so yours may vary)
[root src]# su - postgres
[postgres pgsql]$ env | grep PATH
LD_LIBRARY_PATH=:/usr/local/pgsql/lib
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin/X11:/usr/X11R6/bin:/root/bin:/usr/local/pgsql/bin:/usr/local/pgsql/bin
[postgres pgsql]$ exit
Don't continue unless you see correct output from
env | grep PATH
-
Compile and install PostgreSQL.
Change to the postgres user and run ./configure to set the compilation options automatically. This is the point at which you can
configure PostgreSQL in various ways. For example, if you are installing on "OS X" add the flags --with-includes=/sw/include/ --with-libraries=/sw/lib. If you want to see what the other possibilities are, run ./configure --help.
On debian woody (stable, 3.0), do ./configure --without-readline --without-zlib.
[root src]# su - postgres
[postgres pgsql]$ cd /usr/local/src/postgresql-7.4.7
[postgres postgresql-8.2.4]$ ./configure
creating cache ./config.cache
checking host system type... i686-pc-linux-gnu
(many lines omitted>
linking ./src/makefiles/Makefile.linux to src/Makefile.port
linking ./src/backend/port/tas/dummy.s to src/backend/port/tas.s
[postgres postgresql-8.2.4$ make all
make -C doc all
make[1]: Entering directory `/usr/local/src/postgresql-8.2.4/doc'
(many lines omitted)
make[1]: Leaving directory `/usr/local/src/postgresql-8.2.4/src'
All of PostgreSQL successfully made. Ready to install.
[postgres postgresql-8.2.4]$ make install
make -C doc install
make[1]: Entering directory `/usr/local/src/postgresql-8.2.4/doc'
(many lines omitted)
Thank you for choosing PostgreSQL, the most advanced open source database
engine.
su - postgres
cd /usr/local/src/postgresql-8.2.4
./configure
make all
make install
-
Edit /etc/postgresql.conf (Debian /etc/postgresql/8.2/postgresql.conf) to make sure the three following settings are correct:
add_missing_from = true
regex_flavor = enhanced
default_with_oids = true
-
Start PostgreSQL.
The initdb command initializes the
database. pg_ctl is used to start up
PostgreSQL. If PostgreSQL is unable to allocate enough memory, see section 11
Tuning PostgreSQL (below).
[postgres postgresql-8.2.4]$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.
(17 lines omitted)
or
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
[postgres postgresql-7.4.7]$ /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/server.log start
postmaster successfully started
[postgres postgresql-7.4.7]$
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/server.log start
PostgreSQL errors will be logged in
/usr/local/pgsql/data/server.log
-
Install Pl/pgSQL.Set up plpgsq and allow your user to have
access. Plpgsql is a PL/SQL-like language. We add it to
template1, which is the template from which all new
databases are created. We can verify that it was created
with the createlang command in list mode.
Additionals to install in Postgres 8.1.x
[postgres postgresql-7.4.7]$ createlang plpgsql template1
[postgres pgsql]$ createlang -l template1
Procedural languages
Name | Trusted?
---------+----------
plpgsql | t
(1 row)
[postgres pgsql-7.4.7]$
createlang plpgsql template1
createlang -l template1
-
Test PostgreSQL (OPTIONAL).Create a database and try some simple commands. The output should be as shown.
[postgres pgsql]$ createdb mytestdb
CREATE DATABASE
[postgres pgsql]$ psql mytestdb
Welcome to psql, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit
mytestdb=# select current_timestamp;
timestamptz
-------------------------------
2003-03-07 22:18:29.185413-08
(1 row)
mytestdb=# create function test1() returns integer as 'begin return 1; end;' language 'plpgsql';
CREATE
mytestdb=# select test1();
test1
-------
1
(1 row)
mytestdb=# \q
[postgres pgsql]$ dropdb mytestdb
DROP DATABASE
[postgres pgsql]$ exit
logout
[root src]#
-
Set PostgreSQL to start on boot. First, we copy the
postgresql.txt init script, which automates startup and
shutdown, to the distribution-specific init.d directory. Then
we verify that it works. Then we automate it by setting up a
bunch of symlinks that ensure that, when the operating system
changes runlevels, postgresql goes to the appropriate
state. Red Hat and Debian and SuSE each work a little
differently. If you haven't untarred the OpenACS tarball, you will need to do so now to access the postgresql.txt file.
-
Red Hat RPM:
The init script is already installed; just turn it on for the appropriate run levels.
[root root]# chkconfig --level 345 postgresql on
[root root]#
-
Red Hat from source:
[root src]# cp /var/tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
[root src]# chown root.root /etc/rc.d/init.d/postgresql
[root src]# chmod 755 /etc/rc.d/init.d/postgresql
[root src]#
cp /var/tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
chown root.root /etc/rc.d/init.d/postgresql
chmod 755 /etc/rc.d/init.d/postgresql
Test the script.
[root root]# service postgresql stop
Stopping PostgreSQL: ok
[root root]#
If PostgreSQL successfully stopped, then use the following
command to make sure that the script is run appropriately at boot
and shutdown. And turn it back on because we'll use
it later.
[root root]# chkconfig --add postgresql
[root root]# chkconfig --level 345 postgresql on
[root root]# chkconfig --list postgresql
postgresql 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root root]# service postgresql start
Starting PostgreSQL: ok
[root root]#
chkconfig --add postgresql
chkconfig --level 345 postgresql on
chkconfig --list postgresql
service postgresql start
-
Debian:
[root ~]# cp /var/tmp/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
[root ~]# chown root.root /etc/init.d/postgresql
[root ~]# chmod 755 /etc/init.d/postgresql
[root ~]#
cp /var/tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
chown root.root /etc/init.d/postgresql
chmod 755 /etc/init.d/postgresql
Test the script
[root ~]# /etc/init.d/postgresql stop
Stopping PostgreSQL: ok
[root ~]#
If PostgreSQL successfully stopped, then use the following
command to make sure that the script is run
appropriately at boot and shutdown.
[root ~]# update-rc.d postgresql defaults
Adding system startup for /etc/init.d/postgresql ...
/etc/rc0.d/K20postgresql -> ../init.d/postgresql
/etc/rc1.d/K20postgresql -> ../init.d/postgresql
/etc/rc6.d/K20postgresql -> ../init.d/postgresql
/etc/rc2.d/S20postgresql -> ../init.d/postgresql
/etc/rc3.d/S20postgresql -> ../init.d/postgresql
/etc/rc4.d/S20postgresql -> ../init.d/postgresql
/etc/rc5.d/S20postgresql -> ../init.d/postgresql
[root ~]# /etc/init.d/postgresql start
Starting PostgreSQL: ok
[root ~]#
-
FreeBSD:
[root ~]# cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/postgresql.txt /usr/local/etc/rc.d/postgresql.sh
[root ~]# chown root:wheel /usr/local/etc/rc.d/postgresql.sh
[root ~]# chmod 755 /usr/local/etc/rc.d/postgresql.sh
[root ~]#
cp /tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/postgresql.txt /usr/local/etc/rc.d/postgresql.sh
chown root:wheel /usr/local/etc/rc.d/postgresql.sh
chmod 755 /usr/local/etc/rc.d/postgresql.sh
Test the script
[root ~]# /usr/local/etc/rc.d/postgresql.sh stop
Stopping PostgreSQL: ok
[root ~]#
If PostgreSQL successfully stopped, then turn it back on because we'll use
it later.
[root root]# /usr/local/etc/rc.d/postgresql.sh start
Starting PostgreSQL: ok
[root root]#
/usr/local/etc/rc.d/postgresql.sh start
-
SuSE:
Note
I have received reports that SuSE 8.0 is different from
previous versions. Instead of installing the boot scripts in
/etc/rc.d/init.d/, they should
be placed in /etc/init.d/. If
you're using SuSE 8.0, delete the
rc.d/ part in each of the
following commands.
[root ~]# cp /var/tmp/openacs-5.2.3rc1/packages/acs-core-docs/www/files/postgresql.txt /etc/rc.d/init.d/postgresql
[root ~]# chown root.root /etc/rc.d/init.d/postgresql
[root ~]# chmod 755 /etc/rc.d/init.d/postgresql
Test the script.
[root ~]# /etc/rc.d/init.d/postgresql stop
Stopping PostgreSQL: ok
If PostgreSQL successfully stopped, then use the following
command to make sure that the script is run appropriately at boot
and shutdown.
[root ~]# cd /etc/rc.d/init.d
root:/etc/rc.d/init.d# ln -s /etc/rc.d/init.d/postgresql K20postgresql
root:/etc/rc.d/init.d# ln -s /etc/rc.d/init.d/postgresql S20postgresql
root:/etc/rc.d/init.d# cp K20postgresql rc2.d
root:/etc/rc.d/init.d# cp S20postgresql rc2.d
root:/etc/rc.d/init.d# cp K20postgresql rc3.d
root:/etc/rc.d/init.d# cp S20postgresql rc3.d
root:/etc/rc.d/init.d# cp K20postgresql rc4.d
root:/etc/rc.d/init.d# cp S20postgresql rc4.d
root:/etc/rc.d/init.d# cp K20postgresql rc5.d
root:/etc/rc.d/init.d# cp S20postgresql rc5.d
root:/etc/rc.d/init.d# rm K20postgresql
root:/etc/rc.d/init.d# rm S20postgresql
root:/etc/rc.d/init.d#
Test configuration.
root:/etc/rc.d/init.d # cd
root:~ # /etc/rc.d/init.d/rc2.d/S20postgresql start
Starting PostgreSQL: ok
root:~ #
-
Mac OS X 10.3:
-
Install the startup script:
cd /System/Library/StartupItems/tar xfz /var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/osx-postgres-startup-item.tgz
-
Mac OS X 10.4 can use Launchd:
-
Install the startup script:
cd /Library/LaunchDaemonscp
/var/lib/aolserver/$OPENACS_SERVICE_NAME/packages/acs-core-docs/www/files/osx-postgres-launchd-item.txt
org.postgresql.PostgreSQL.plist
If postgres does not start automatically on reboot, see what
error you get when manually starting it with:
$ sudo launchctl load /Library/LaunchDaemons/org.postgresql.PostgreSQL.plist
$ sudo launchctl start org.postgresql.PostgreSQL
From now on, PostgreSQL should start automatically each time you boot
up and it should shutdown gracefully each time you shut down. (Note:
Debian defaults to starting all services on runlevels 2-5. Red Hat
defaults to starting services on 3-5. So, on Red Hat, PostgreSQL won't
start on runlevel 2 unless you alter the above commands a
little. This usually isn't a problem as Red Hat defaults to runlevel 3)
-
Tune postgres. (OPTIONAL).The default values for PostgreSQL are very conservative; we can safely change some of them and improve performance.
-
Change the kernel parameter for maximum shared memory
segment size to 128Mb:
[root root]# echo 134217728 >/proc/sys/kernel/shmmax
[root root]#
Make that change permanent by editing
/etc/sysctl.conf to
add these lines at the end:
# increase shared memory limit for postgres
kernel.shmmax = 134217728
-
Edit the PostgreSQL config file, /usr/local/pgsql/data/postgresql.conf, to use more memory. These values should improve performance in most cases. (more information)
# Shared Memory Size
#
shared_buffers = 15200 # 2*max_connections, min 16
# Non-shared Memory Sizes
#
sort_mem = 32168 # min 32
# Write-ahead log (WAL)
#
checkpoint_segments = 3 # in logfile segments (16MB each), min 1
Restart postgres (service postgresql
restart) or
(/etc/init.d/postgres
restart) so that the changes take effect.
FreeBSD users: See man syctl, man 5 sysctl
and man 5 loader.conf.
Performance tuning resources: