Installing dotProject

Requirements

dotProject requires a functioning web server with integrated PHP and MySQL support, and, of course, a web browser. Web server implemenations include:


Web Server

Apache (www.apache.org) is recommended to be version 1.3.27. Apache version 2.x may have some issues as the implementation of the SAPI module with Apache is considered experimental.

Apache 1.3.20+ implementations have been successfully tested on Windows and Linux.


PHP

PHP (www.php.net) version 4.1.x or higher is required. PHP versions earlier than 4.0.x are NO LONGER SUPPORTED.

PHP needs to have the GD library installed to allow the Gantt charts to work. Use the phpinfo() function on your local (or hosted) system to see if this is compiled/installed with PHP.


MySQL

MySQL (www.mysql.com) version 3.23.51 or higher is recommended. You will also need an administration client for MySQL (such as MySQL Command Centre available from the MySQL web site).


Browser

You will also need a forth generation browser that supports style sheets and javascript (IE Version 5.5 or better, Mozilla 1.2, Netscape 7.x, etc). Many PNG image files are used in dotProject with alpha-transparency. Later versions of Mozilla and Netscape will render these properly. A patch has been applied to allow IE 6.0 to render these images also. However, earlier version of IE will not display the background of the images properly.


Installing dotProject for the first time

  1. Download the most recent dotproject tarball from http://sourceforge.net/projects/dotproject/
  2. Unpack the tarball in your web root directory with a Windows unzip program or on *nix:
    tar -zxvf dotproject_*.tar.gz
    [Note: replace the * with the appropriate version.]
  3. Create the dotproject database in MySQL.
  4. Customize your Database Schema Script [OPTIONAL].

    Open the file dotproject/db/dotproject_{version}.sql* with a text editor and edit the last section where the default dotproject Admin Account is setup (line 351).

    We recommend that you specify a new admin username, password, and email. Save your changes. [Alternatively, this step can be completed in the "User Admin" section of dotproject after installation].

  5. Populate the Database. Utilize the information from the Database Setup and the provided "/db/dotproject_{version}.sql"* script to populate the dotproject database.
    #mysql -udotproject -pyourpassword dotproject < dotproject/db/dotproject_{version}.sql* 
  6. Configuration File Customization. Follow the instructions at the top of the file dotproject/includes/config-dist.php
  7. Point your browser to http://yourdomain.com/dotproject/index.php. If all is well, you should see a login page.
            Username: admin
            Password: passwd
  8. Admin Password and Adding Other Users

    Click on the "User Admin" button and change the admin password as soon as possible (if not completed in step four above). You may also add other users with differing levels of access to your dotproject database.

    If you would like to provide an alternative email address for the login screen's "Help! I've forgotten my username and password" mailto link, edit line 56 (or thereabouts) of /includes/login.php. The default entry is: <?php echo 'admin@' . $site_domain;?>

  9. File Management Configuration.

    The File Management Module provides users with an opportunity to upload and share files. Several steps are necessary to make sure this module works correctly.

    1. It is very important that the $dPconfig['root_dir'] variable is set correctly in "includes/config.php". $dPconfig['root_dir'] must provide the full path to the dotproject installation AND INCLUDE the installation folder name.
      	$dPconfig['root_dir'] = "/wwwroot/dotproject";  // Example ONE
      	$dPconfig['root_dir'] = "/var/www/html/dotproject";  // Example TWO
      	$dPconfig['root_dir'] = "C:/apache/htdocs/dotproject";  // No trailing slash
      		
    2. Files Folder Permissions

      In order for the file upload to function, you will need to provide write priviledges to the file upload folder. The "default" file upload folder is named "files" and contains an ".htaccess" file to prevent unauthorized access.

      The safe way to the write permission on a POSIX system is via the following. Determine what user is running the apache web server with the following system command:

      [user@localhost dotproject]# ps -ef | grep httpd
      The resulting list will show you the user that is running Apache (probably apache). Change the owner of the files directory to this user:
      [user@localhost dotproject]# chown -R apache files/
      [user@localhost dotproject]# chmod -R 0700 files/

      You should not be lazy and just set the permissions on this directory to 777. While this will work it provides leverage for a malicious attack from a cracker.

    3. Troubleshooting

      Failure to specify the proper $root_dir OR failure to provide write permissions on the file upload folder will result in numerous error messages along the lines of:

      Warning: Unable to create '{$root_dir}/files/0/{rnd #}': 
      	Permission denied in {$root_dir}/dosql/addfile.php on line 17
      Warning: Unable to move '/tmp/phpt9SeKp' to '{$root_dir}/files/0/{rnd #}'
      	in {$root_dir}/dosql/addfile.php on line 17
      Warning: fopen("{$root_dir}/files/0/{rnd #}","r") - No such file 
      	or directory in {$root_dir}/dosql/addfile.php on line 51
      Warning: Supplied argument is not a valid File-Handle resource in
      	{$root_dir}/addfile.php on line 52
      Warning: Cannot add header information - headers already sent by (output 
      	started at {$root_dir}/dosql/addfile.php:17) in 
      	{$root_dir}/dosql/addfile.php on line 92
      		

      Even though you may encounter error messages, there will still be an entry made for the various files in the database. However, the contents of the uploaded files will likely be lost. Instead the "files" will contain error messages that may help with troubleshooting.

      If you find that you are accumulating "file" listings, but your contents of the "files" folder is not changing, then you have probably provided an incorrect $root_dir path.

      You will also want to confirm that your php.ini file is configured to allow file uploading with file_uploads = on.

      You may want to increase your Maximum File Upload Size beyond your php.ini default setting. This procedure is described in the "Troubleshooting Page" of this documentation module (see link above).

    4. Improving Security

      The default "files" folder contains an ".htaccess" file containing the following: Options -All deny from all

      While this provides basic security, the paranoid can improve security further by:

      • Changing the name of the "files" folder to something less obvious.
      • Moving the "files" folder outside of the webroot
      • Both

      These security improvements will require technical skill, and will make "upgrading" to future versions of dotproject more challenging.

Which Database Script Do I Use?

Most distributions have one or more dotproject_{version}.sql files where {version} is the version of dotProject. You should always choose the highest numbered version. This version number will match the version of the dotProject code. E.g. dotProject version 1.0.1 uses dotproject_101.sql.

Web trouble ticket email gateway: dotproject/includes/gateway.pl

---------------------------------------------------------------------------
(from the ticketsmith installation)

1.  Have a working perl install, with DBI and the DBD::MySQL bundles installed
2.  Be sure to protect the gateway.pl file.  You basically need to do one 
    of two things, either move it out of a web-accessible place or somehow 
    protect it from being accessed over the web:
    
            
                    order deny,allow
                    deny from all
            
    
    If you don't protect it, one of two things will happen,  either users will be
    able to see the source and thus grab your Ticketsmith MySQL password, or
    something unpredictable will happen when Apache tries  to run it as a CGI
    script.  I don't think this could be harmful, but hey,  you never know.



7.  Edit the top of gateway.pl to fit your setup.


    
9.  Configure your MDA or MTA to pipe mail for your support list to gateway.pl.  For
    example,  here is a sample procmail recipe:

            :0
            * (^To:|^CC:|^Cc:) .*support@foo.bar
            |/path/to/gateway.pl

    You can also set Ticketsmith up directly with sendmail in /etc/aliases: 

            support: "|/path/to/gateway.pl"

    Keep in mind that with sendmail you need to either put gateway.pl in 
    /etc/smrsh or at least symlink to it from that directory so that 
    sendmail will execute it.  If you do this, you'll have to point 
    the /etc/aliases entry to the copy in /etc/smrsh.