Index: openacs-4/packages/acs-core-docs/www/postgres.html =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-core-docs/www/postgres.html,v diff -u -r1.40 -r1.41 --- openacs-4/packages/acs-core-docs/www/postgres.html 5 Jul 2004 14:24:59 -0000 1.40 +++ openacs-4/packages/acs-core-docs/www/postgres.html 16 Feb 2005 00:21:03 -0000 1.41 @@ -1,11 +1,16 @@ -Install PostgreSQL

Install PostgreSQL

by Vinod Kurup

+Install PostgreSQL

Install PostgreSQL

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.2.0d1 will run with PostgreSQL 7.3.2, 7.3.3, and 7.3.4. 7.3.4 is the recommended version of PostgreSQL. PostgreSQL 7.4 has been verified.

  • 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 7.3.x. Mac OS X 10.3 requires PostGreSQL 7.4.

  • Special Notes for Debian.�

    Debian users, especially Debian stable users, should - install PostGreSQL from source as detailed below. Debian +

Skip this section if you will run only Oracle.

OpenACS 5.2.0d1 will run with PostgreSQL 7.3.2, 7.3.3, and 7.3.4 and 7.4.x. 7.4.7 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 7.3.x. Mac OS X 10.3 requires PostGreSQL 7.4.

  • 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 - 7.3 or above):

    apt-get install postgresql postgresql-dev postgresql-doc
    +      7.3 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
    @@ -35,25 +40,19 @@
     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

    1. Unpack PostgreSQL 7.3.4.�If you have not downloaded the postgresql tarball to - /tmp/postgresql-7.3.4.tar.gz, +su - postgres

      ... and then skip to 7. Something similar may work for other binary packages as well.

    2. Safe approach: install from source

      1. Unpack PostgreSQL 7.4.7.�If you have not downloaded the postgresql tarball to + /var/tmp/postgresql-7.4.7.tar.gz, get it.

        [root root]# cd /usr/local/src
        -[root src]# tar xzf /tmp/postgresql-7.3.4.tar.gz
        +[root src]# tar xzf /var/tmp/postgresql-7.4.7.tar.gz
         [root src]# 
         cd /usr/local/src
        -tar xzf /tmp/postgresql-7.3.4.tar.gz
      2. ALTERNATIVE: Unpack PostgreSQL 7.4.1.�If you have not downloaded the postgresql tarball to - /tmp/postgresql-7.4.1.tar.bz2, +tar xzf /var/tmp/postgresql-7.4.7.tar.gz

      3. ALTERNATIVE: Unpack PostgreSQL 7.4.7.�If you have not downloaded the postgresql tarball to + /var/tmp/postgresql-7.4.7.tar.bz2, get it.

        [root root]# cd /usr/local/src
        -[root src]# tar xfj /tmp/postgresql-7.4.1.tar.bz2
        +[root src]# tar xfj /var/tmp/postgresql-7.4.7.tar.bz2
         [root src]# 
         cd /usr/local/src
        -tar xfj /tmp/postgresql-7.4.1.tar.bz2
      4. Install Bison.�Only do this if bison --version is smaller than 1.875 and you install PostgreSQL 7.4.

        [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
        -      
      5. Create the Postgres user.� +tar xfj /var/tmp/postgresql-7.4.7.tar.bz2

      6. 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 @@ -64,13 +63,13 @@

        [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.3.4
        +[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.3.4
        +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]"
          @@ -84,8 +83,19 @@
           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.1
          -chmod 750 /usr/local/pgsql
      7. Set up postgres's environment variables.�They are necessary for the executable to find its supporting +chown -R postgres:web /usr/local/pgsql /usr/local/src/postgresql-7.4.7 +chmod 750 /usr/local/pgsql

      8. 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 @@ -98,47 +108,45 @@

    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 want to - enable - Unicode support, add the flags --enable-locale and --enable-multibyte. If you want to see what the other possibilities are, run ./configure --help. + 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.3.4
    -[postgres postgresql-7.3.4]$ ./configure --with-includes=/sw/include/ --with-libraries=/sw/lib --enable-locale --enable-multibyte \
    -  --enable-syslog --enable-unicode-conversion --enable-recode 
    +[postgres pgsql]$ cd /usr/local/src/postgresql-7.4.7
    +[postgres postgresql-7.4.7]$ ./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-7.3.4]$ make all
    +[postgres postgresql-7.4.7]$ make all
     make -C doc all
    -make[1]: Entering directory `/usr/local/src/postgresql-7.3.4/doc'
    +make[1]: Entering directory `/usr/local/src/postgresql-7.4.7/doc'
     (many lines omitted)
    -make[1]: Leaving directory `/usr/local/src/postgresql-7.3.4/src'
    +make[1]: Leaving directory `/usr/local/src/postgresql-7.4.7/src'
     All of PostgreSQL successfully made. Ready to install.
    -[postgres postgresql-7.3.4]$ make install
    +[postgres postgresql-7.4.7]$ make install
     make -C doc install
    -make[1]: Entering directory `/usr/local/src/postgresql-7.3.4/doc'
    +make[1]: Entering directory `/usr/local/src/postgresql-7.4.7/doc'
     (many lines omitted)
     Thank you for choosing PostgreSQL, the most advanced open source database
     engine.
     su - postgres
    -cd /usr/local/src/postgresql-7.3.4
    -./configure
    +cd /usr/local/src/postgresql-7.4.7
    +./configure 
     make all
     make install
  • Start PostgreSQL.� The initdb command initializes the database. pg_ctl is used to start up - PostgreSQL. -

    [postgres postgresql-7.3.4]$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
    +	  PostgreSQL. If PostgreSQL is unable to allocate enough memory, see section 11
    +          Tuning PostgreSQL (below).
    +	

    [postgres postgresql-7.4.7]$ /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.3.4]$ /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/data/server.log 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.3.4]$
    +[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 @@ -147,15 +155,15 @@ 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.

    [postgres postgresql-7.3.4]$ createlang plpgsql template1
    +	  with the createlang command in list mode.

    [postgres postgresql-7.4.7]$ createlang plpgsql template1
     [postgres pgsql]$ createlang -l template1
     Procedural languages
       Name   | Trusted?
     ---------+----------
      plpgsql | t
     (1 row)
     
    -[postgres pgsql-7.3.4]$
    +[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
    @@ -198,11 +206,11 @@
             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 /tmp/openacs-5.2.0d1/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
      +[root root]# 
    • Red Hat from source:

      [root src]# cp /var/tmp/openacs-5.2.0d1/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 /tmp/openacs-5.2.0d1/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
      +cp /var/tmp/openacs-5.2.0d1/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
      @@ -221,11 +229,11 @@
       chkconfig --add postgresql
       chkconfig --level 345 postgresql on
       chkconfig --list postgresql
      -service postgresql start
    • Debian:

      [root ~]# cp /tmp/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/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 /tmp/openacs-5.2.0d1/packages/acs-core-docs/www/files/postgresql.txt /etc/init.d/postgresql
      +cp /var/tmp/openacs-5.2.0d1/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
      @@ -243,7 +251,19 @@
          /etc/rc5.d/S20postgresql -> ../init.d/postgresql
       [root ~]# /etc/init.d/postgresql start
       Starting PostgreSQL: ok
      -[root ~]#
    • SuSE:

      Note

      +[root ~]#

  • FreeBSD:

    [root ~]# cp /tmp/openacs-5.2.0d1/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.0d1/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 @@ -253,7 +273,7 @@ rc.d/ part in each of the following commands. -

    [root ~]# cp /tmp/openacs-5.2.0d1/packages/acs-core-docs/www/files/postgresql.txt /etc/rc.d/init.d/postgresql
    +          

  • [root ~]# cp /var/tmp/openacs-5.2.0d1/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

    @@ -317,7 +337,15 @@

    Restart postgres (service postgresql restart) or (/etc/init.d/postgres - restart) so that the changes take effect.

    more information about PostgreSQL

    FreeBSD users: See man syctl, man 5 sysctl + and man 5 loader.conf.

    Performance tuning resources:

    more information about PostgreSQL

    ($Id$)
    View comments on this page at openacs.org
    +

    ($Id$)
    View comments on this page at openacs.org