phpGroupWare Installation

Joseph Engo

Dan Kuykendall  

Editor: Darryl VanDorp

$Id$

Table of Contents

1 What is phpGroupWare 
2 Why you should use it 
3 Installation
    3.1 Requirements 
    3.2 Tested Systems 
4 Obtaining and Installing phpGroupWare 
    4.1 Installing from TarBall 
    4.2 Installing from CVS 
        4.2.1 Patched Branches in CVS
    4.3 Setting File Permissions 
    4.4 Setup the database
        4.4.1 Mysql (assuming an existing and working Mysql install)
        4.4.2 Postgresql (assuming an existing and working Postgresql install)
    4.5 Setup / Configure phpGroupWare 
    4.6 Testing the install 
    4.7 Installing additional applications 
5 Trouble Shooting
    5.1 It seems to hang when I try to read my mail 
    5.2 When I log in I see the directory listing instead of a web page 
    5.3 I get garbage that looks like code when I go to the phpGroupWare URL 
6 About this document
    6.1 History 
    6.2 Version History 



 Dedication 

Thanks to Joesph Engo for starting phpGroupWare (at the time
called webdistro) and the core of this HOWTO. Thanks to
all the developers and users who contribute to making phpGroupWare
such a success. 

1 What is phpGroupWare 

phpGroupWare is a web based GroupWare system. It comes with
serveral core apps for email, calendar, todo list, address
book, file manager, and a notepad.

It also provides a framework for add-on applications to integrate
seamlessly in phpGroupWare. Some samples are a bookmark
manager, a trouble ticket system, a weather reporter, a
phone log, a chat program, and a forum system. There are
many more in development, and you can develop your own as
well. 

2 Why you should use it 

You should use it if you would like a powerful groupware
system that can be access from anywhere on the Internet,
and allows for custom add-ons. For companies with a distributed
user base, it's an ideal solution. Oh, and did I mention
that its FREE? 

3 Installation

Installation and Configuration of phpGroupWare has never
been easier. Just point and click, yeah it's very easy.

Since this is still a beta version we do expect some bugs.
By carefully reading this document you can easly install
phpGroupWare. 

3.1 Requirements 

You will need PHP compiled and installed on your system.
You will also need MySQL or PostgreSQL setup. If you are
planning on using the email system, you will need to have
an IMAP server installed and IMAP support compiled into
PHP. You can have it installed as an Apache module or command
line version, the Apache module is preferred. We will assume
that you are running on a Linux or other Unix system for
these steps. Windows is supported, but there is no documentation
for it currently. 

In order to check if you have php installed create the file
with your favorite text editor named test.php in your webserver
root directory:

<? phpinfo(); ?>

Then point your browser to http://yourserverroot/test.php.
You should get a very detailed page describing various options
in php.

If you need to to compile php and apache the following links
are good starting points: 

A set of scripts to compile and install various modules with
apache: [http://www.apachetoolbox.com]

The Linux Apache MySQL PHP (LAMP) Guide v2 (latest as of
this writing): [http://www.linuxhelp.net/guides/]

The Soothing Seemless Setup of Apache, SSL, MySQL, and PHP: [http://www.devshed.com/Server_Side/PHP/SoothinglySeamless]

3.2 Tested Systems 

On Linux 2.2.x, 2.4.x

PHP 3.0.15+ / PHP 4.0.x

Apache 1.3.x

MySQL 3.22.25 or PostgreSQL 7.0.x

Courier-IMAP 0.33+ and/or qmail 1.03 for POP3 access

We have reports of it working on Windows NT and OS/2, and
using Oracle as the database. 

4 Obtaining and Installing phpGroupWare 

After you have met the system requirements, You can install
it from the TarBall or you can get it directly from CVS. 

4.1 Installing from TarBall 

Installing from a TarBall is very easy. The files should
be installed in the webserver directory. Example steps (please
adjust to your servers config):

cp phpgroupware-version.tar.gz /home/httpd/html

cd /home/httpd/html

tar zxf phpgroupware-version.tar.gz

You may have to get required permissions to do this. Contact
your system administrator if you dont have the permission
to write to your webserver directory.

You can get current releases of phpGroupWare at the phpGroupware
website (). 

4.2 Installing from CVS 

Installing from a CVS is fairly easy. The files should be
checked out in the webserver directory. Example steps (please
adjust to your servers config):

* cd /home/httpd/html

* cvs -d:pserver:anonymous@cvs.phpgroupware.sourceforge.net:/cvsroot/phpgroupware
  login (just hit enter if prompted for a password)

* cvs -z3 -d:pserver:anonymous@cvs.phpgroupware.sourceforge.net:/cvsroot/phpgroupware
  co phpgroupware

or if you prefer using CVSROOT:

* export CVSROOT=':pserver:anonymous@cvs.phpgroupware.sourceforge.net:/cvsroot/phpgroupware'

* cvs login (just hit enter if prompted for a password)

* cvs co phpgroupware

You may have to get required permissions to do this. Contact
your system administrator if you dont have the permission
to write to your webserver directory. 

4.2.1 Patched Branches in CVS

Recently the phpGroupWare developers started a branch for
patches to released versions. This is to facilitate bugs
being fixed in a released version without having to wait
for the next offical release. There is a developer who has
been assigned the responsibility for maintaining that branch
and applying patches and fixes. To check out this version
of the code using 0.9.9 as an example you would do the following:

* login to cvs anonymously as described above

* cvs -z3 -d:pserver:anonymous@cvs.phpgroupware.sourceforge.net:/cvsroot/phpgroupware
  -r Version-0_9_9-patches phpgroupware

4.3 Setting File Permissions 

There are a few directories which will need special fie permissions
set for phpGroupWare to work properly.

Temp Directory (Required) - This can be /tmp for simplicity,
but it is required for several apps to function properly.
Simply make sure that the webserver can add/delete files
in it.

Files Directory (Required) - This can be should be the files
dir under the phpgroupware dir. You will need to give the
webserver account owndership of this directory.

chown nobody:nobody (note: this assumes your webserver runs
as user nobody, adjust for your installation)

chmod 700 /home/httpd/html/phpgroupware/files

Root Directory (Not recommended) - If you give the webserver
account write access to the phpgroupware directory, then
the setup program can create the header.inc.php for you.
Otherwise you will need to use the setup program to create
it, and then you can manually save it to file.

If you want to do it:

chown :nobody /home/httpd/html/phpgroupware

chmod 770

You may have to get required permissions to do this. Contact
your system administrator if you dont have the permission
to write to your webserver directory. 

4.4 Setup the database

You need to create empty databases for the setup app to create
the tables in.

4.4.1 Mysql (assuming an existing and working Mysql install)

* Mandrake or Redhat: /etc/rc.d/init.d/mysqld start

* other: /usr/local/mysql/bin/safe_mysqld &

* create the empty database: mysqldadmin -u someuser create
  phpgroupware -p

* login to mysql: mysql -u someuser -p

* issue the following at the mysql prompt:

* grant all on phpgroupware.* to phpgroupware@localhost identified
  by "somepassword";

For more detailed user documentation on Mysql see their website
: [http://www.mysql.com]

4.4.2 Postgresql (assuming an existing and working Postgresql
  install)

To create the required database in Postgresql make sure postgresql
is started:

* Mandrake or Redhat : /etc/rc.d/init.d/postgresql start

* others: /usr/bin/postmaster -D /var/lib/pgsql/data or /usr/bin/pg_ctl
  -D /var/lib/pgsq/data start (adjust for your install dirs)

* create the empty database: /usr/bin/createdb phpgroupware

* create a database user: /usr/bin/createuser phpgroupware

For more detailed user documentation on Postgresql see their
website : [http://www.postgresql.org]

4.5 Setup / Configure phpGroupWare 

Point your browser to http://yourserverroot/phpgroupware/setup/
which will create (or upgrade) the header.inc.php and database
tables. Setup will attempt to determine what version of
the phpGroupWare databases and header.inc.php you have installed,
and upgrade to the most recent version. 

Note:  You are advised to backup your existing database before
running the setup script to avoid problems!

4.6 Testing the install 

If your config is setup properly you can now login. Point
your browser to the installed location and login with the
username demo and the password is 1234

At this point it would be a good idea to create a new user
with administrative privileges and delete the old one. 

4.7 Installing additional applications 

Once you have the core phpGroupWare install up and running,
you may want to download and install additional applications.

You should consult any README or INSTALL files that come
with the new application first, as most require you to create
additional tables in the database, and add additional translation
data to the lang table (typically a file called lang.sql)

You install the new application within the phpGroupWare install
tree by copying the application directory into the phpGroupWare
install location, and enabling the application through the
Administration page.

For example, this is the process to install the Headlines
application:

(see [http://www.sourceforge.net/projects/phpgwapps]
for more applications)

Download the .tar.gz file for the application, or check out
the source with cvs with

export CVSROOT=':pserver:anonymous@cvs.phpgroupware.sourceforge.net:/cvsroot/phpgwapps'

cvs login (just hit enter if prompted for a password)

cvs co headlines

Move the headlines directory into your phpGroupWare install
directory.

Log into phpGroupWare as an administrative user, and go to
the Administration page.

In the first section, choose the Applications link.

Click on add, and fill in the form.

Application name should be identical to the name of the directory
you moved into the phpGroupWare install, in this case use
headlines

Application Title is shown in the navigation bar and other
places to refer to the new application. Enter Headlines
for this example.

Enabled can be used to disable an application for all users
temporially. You should normal check the box to enable the
application.

Back in the Administration page, you need to enable the application
for specific users or user groups by editing them, and checking
the new Headlines box that appears in the middle of the
account editing page.

Once you have added the Headlines app to your account, you
should see a Headlines entry in the Administration and Preferences
pages, and there should be an icon for the Headlines application
in the navigation bar.

Once you enable a few of the Headlines sites through the
Administration page link, you should see headlines grabbed
from the sites you selected when you click on the Headlines
icon in the navigation bar. 

5 Trouble Shooting

Warning 

phpGroupWare is still Beta software, expect some bugs along
the way. If you run into a problem not discussed here, contact
us through one of the methods listed on the website.

�The phpGroupWare developers can most often be seen hanging
out in #phpGroupWare on irc.openprojects.net if you require
real-time help.

Also check the FAQ in this directory for additional common
questions, it is available as FAQ.sgml, FAQ.txt and FAQ.html 

5.1 It seems to hang when I try to read my mail 

This is often a problem if you are using POP3 instead of
IMAP, and you have more than a few hundred messages in your
mailbox.

By default, php is set up to time-out a request that takes
over 30 seconds to complete. phpGroupWare must do a lot
of work the first time your POP3 mailbox is opened, and
every time you get new mail, which may take more than the
30 second timeout.

You can either clean up your mailbox with another mail program,
or add the line

set_time_limit(0);

to the top of the phpgwapi/inc/phpgw_msg_pop3.inc.php file,
just before the line class msg extends msg_common

If you choose to edit the file, be patient when loading a
large POP3 mailbox - the author tested against a mailbox
with 2500 messages in it, but it took 15 minutes to load
the page. We highly suggest you use IMAP if you expect to
have more than a few hundred messages in your mailbox. 

5.2 When I log in I see the directory listing instead of a
  web page 

You are using Apache, this often means you need to add .php
to the DirectoryIndex line in your httpd.conf file. For
example:

DirectoryIndex index.php index.php3 index.html index.htm
index.cgi 

5.3 I get garbage that looks like code when I go to the phpGroupWare
  URL 

This is often because you have php3 installed, which does
not map .php to the PHP engine. For PHP3:

AddType application/x-httpd-php3 .php3 .php

For PHP4:

AddType application/x-httpd-php .php3 .php 

6 About this document

The newest version of this document can be found on our website
[http://www.phpgroupware.org] as lyx source, HTML, or TEXT.

Comments on this HOWTO should be directed to the phpGroupWare
developers mailing list phpgroupware-developers@lists.sourceforge.net 

To subscribe, go to _id=7305 

6.1 History 

This document was started by Joseph Engo reworked by Dan
Kuykendall then edited by Darryl VanDorp 

6.2 Version History 

Old Version

Created by Jengo, wasn't in SGML HOWTO format.

v1.0 (July 6, 2000)

Built proper SGML version.

Included the FAQ.

Other minor additions.

v1.1 (September 27-29, 2000) - blinky

Added Testing Install section

Added Trouble-shooting section

Added description of application installation

Changes for the new setup program

v0.01 (October 15 , 2000) - gnrfan , Converted the HOWTO
to DocBook format

v.0.05 (November 5, 2000) - gnrfan , Completely revamped
according to Seek's idea and intregrated the Developers
HOWTO.

v.0.06 (Jan 10, 2001) - Darryl VanDorp, imported to lyx source
reformatted and touched up some sections

v.0.07 (Jan 16, 2001) - Darryl VanDorp, added TOC, fixed
some Postgresql setup instructions, added some links to
install/compilation instructions for apache, php and mysql.`

v.0.08 (Feb 22, 2001) - Darryl VanDorp, added a multipart
html export