This page explains how to install ]project-open[ V5.0 on Debian Stretch LTS (9.12) . Please see the discussion thread https://sourceforge.net/p/project-open/discussion/295937/thread/9a56562c/ on SourceForge.
Last updated: 2020-04-22
Please install the packages below.
apt-get install net-tools git-core emacs unzip zip make nginx ldap-utils \ daemontools daemontools-run ghostscript gsfonts imagemagick graphviz \ libreoffice-writer libreoffice-draw libreoffice-java-common wget cvs
Please don't change (at the moment) the name or the home directory (/web/projop/) of the new user. More than 20 different files reference the location, and the probability is very high that might miss one of them...
mkdir /web mkdir /web/projop groupadd projop useradd -g projop -d /web/projop -m -s /bin/bash projop chown -R projop:projop /web/projop/
cd /usr/local/src/ wget http://sourceforge.net/projects/project-open/files/project-open/Support%20Files/naviserver-4.99.8.tgz wget http://sourceforge.net/projects/project-open/files/project-open/Support%20Files/web_projop-aux-files.5.0.0.0.0.tgz wget http://sourceforge.net/projects/project-open/files/project-open/V5.0/update/project-open-Update-5.0.3.0.0.tgzcd /usr/local tar xzf /usr/local/src/naviserver-4.99.8.tgz # extract the NaviServer binary for 64 bit su - projop tar xzf /usr/local/src/project-open-Update-5.0.3.0.0.tgz # extract auxillary files tar xzf /usr/local/src/web_projop-aux-files.5.0.0.0.0.tgz # extract the product code exit
Edit the ]po[ configuration file /web/projop/etc/config.tcl parameters with your preferred editor and modify the following parameters:
set servername "<your_company_name_without_special_characters>"
You can also change the "httpport" parameter. Touch the rest only if you know what you are doing.
PostgreSQL 9.6 is part of Debian Stretch. Please use exactly this version.
Please install the database using:
apt-get install libpq5 postgresql-9.6 postgresql-client-9.6 \ postgresql-client-common postgresql-common postgresql-contrib-9.6 \ ssl-cert postgresql-doc postgresql-doc-9.6 libdbd-pg-perl libdbi-perl \ sysstat
Configure PostgreSQL start with server start:
systemctl enable postgresql
Initialize and start the database:
systemctl start postgresql
Create a new database and user:
su - postgres -c "createuser -s projop" # database user "projop" with admin rights su - projop -c "createdb --encoding=utf8 --owner=projop projop" # new database su - projop -c "createlang plpgsql projop" # enable PlPg/SQL, may already be installed
You can verify your PostgreSQL installation by typing ("\q" or Ctrl-D for exit):
su - projop -c psql
Enter "\q" or press Ctrl-D to exit.
Now import the database dump:
su - projop psql -f ~/pg_dump.5.0.3.0.0.sql > import.log 2>&1 exit
The import can take up to a minute, depending on your system. Please review import.log after the import. Please ignore the ~3.500 error messaging showing up at the beginning (that's because the dump contains instructions to drop any stuff that's left in the DB...). In order to verify the import please execute:
su - projop psql -c "select count(*) from users" exit
.. which should return 197 or a similar number (the number of demo users in the demo company provided as part of the installer).
As root please execute:
/usr/local/ns/bin/nsd -f -t /web/projop/etc/config.tcl -u projop -g projop
]project-open[ should take 15s to 60s to write out some ~40.000 lines before the line appears "[...] Notice: nssock: listening on 0.0.0.0:8000".
Please check that the start-up takes at least 10 seconds and produces these ~40.000 lines of debugging output. Otherwise there will be only a few hundred lines. In this case please watch out for lines including "Error:" or "Warning:".
In case you get an error "OpenACS could not allocate a handle from database pool pool1.", please see this page for additional instructions.
Now point your favorite Web browser to http://localhost:8000/ and login as "sysadmin@tigerpond.com" / "system". You should see the first page with the configuration wizard. Please do not continue here at the moment, because we still need to fix several issues before ]po[ will run as it should.
You can stop the ]po[ server in the terminal with Ctrl-C.
We now have to automate the startup of NaviServer (the application server of ]project-open[) for production use:
Create a new file /lib/systemd/system/projop.service with the following content:
[Unit] Description=NaviServer Web Server as user projop After=postgresql.service network.target Wants=postgresql.service [Service] Type=forking PIDFile=/web/projop/log/nsd.pid ExecStartPre=rm -f /web/projop/log/nsd.pid ExecStart=/usr/local/ns/bin/nsd -t /web/projop/etc/config.tcl -u projop -g projop ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s 9 $MAINPID Restart=always # Restart=on-abort # Restart=on-abnormal KillMode=process [Install] WantedBy=multi-user.target
Please execute the following commands in order to activate the configuration:
systemctl daemon-reload systemctl enable projop.service systemctl start projop.serviceYou can check that NaviServer is running by monitoring it's error file (debugging is switched on by default):
tail -f /web/projop/log/error.log
]project-open[ by default listens on port 8000 and for permission reasons can not listen on port 80. As a workaround you can install a “reverse proxy†server on port 80 that redirects HTTP requests to port 8000.
You can configure Apache for such a purpose, Apsis Pound or or the small Web server ngnix. Ngnix is part of the Debian and more convenient than apache2, so this is why we use it by default now. Ngnix is also convenient if you want to run more then one ]po[ or non-]po[ server on your machine, because it allows you to distribute HTTP requests to different back-ends, depending on the HTTP headers etc.
apt-get install nginxAssuming that there is no other process listening on port 80 (netstat -nlp | grep 80), please edit /etc/nginx/nginx.conf to look like this (modifying the "server {...}" section). Please create a copy of the original config before editing:
user www-data; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 601; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; include /etc/nginx/conf.d/*.conf; server { listen 80; location / { # pass all communication to NaviServer on port 8000 proxy_pass http://127.0.0.1:8000; # add information about the original IP proxy_set_header X-Forwarded-For $remote_addr; # upload files to file storage up to 1G client_max_body_size 1024M; } } }
Then please perform:
systemctl enable nginx systemctl restart nginx netstat -nlp | grep 80
You should now see nginx listening on port 80.
Now point your browser again to http://localhost/ and you should see ]po[ in action.
For the HTTPS configuration of NGINX please see the CentOS/RHEL 7 installer. Please note that NGINX by default uses the user "www-data" to run NGINX, as opposed to "nginx".
You can automate a daily ]po[ backup using our default export-dbs script.
Please copy the script (please follow the link for source code) into the file /root/bin/export-dbs.
Executing the following script will mark the backup script as executable, create default backup directories and execute the script:
mkdir /var/backup # create a global backup directory chown projop:postgres /var/backup # allow projop & PostgreSQL to write backups chmod g+w /var/backup mkdir /var/log/postgres # create directory for DB related logs chown postgres:postgres /var/log/postgres # allow projop & PostgreSQL to write chmod g+w /var/log/postgres chmod ug+x /root/bin/export-dbs # mark backup script as executable perl /root/bin/export-dbs # execute backup script
Automate the backup by adding the following lines to your crontab:
29 3 * * * /usr/bin/perl /root/bin/export-dbs > /var/log/postgres/export-dbs.log 2>&1 24 3 * * * /usr/bin/find /export/backup -name '*.tgz' -mtime +6 | xargs rm 25 3 * * * /usr/bin/find /export/backup -name '*.bz2' -mtime +6 | xargs rm
GraphViz creates GIF and PNG images from textual descriptions. ]po[ uses GraphViz to visualize the state of workflows and similar purposes.
To fix/enable GraphViz, please create a symbolic link for the "dot" tool:
cd /usr/local/bin/ ln -s /usr/bin/dot
]po[ by default uses Postfix to send out notification emails. To install please use:
apt-get install postfix mailutils
You can test your email configuration by sending out a test email to yourself:
echo "test email body" | mail -s "Test Email Subject" <you@your_domain.com>
Then have a look at the last lines of /var/log/maillog
tail -n 20 /var/log/mail.log
You may have to configure a Postfix "relayhost" pointing to your corporate SMTP server or simiar. Please check configure-external-smtp-server for more details.
]project-open[ includes a long list of integration links with external systems including Microsoft Active Directory, SAP FI, SAP PS, Microsoft Navision NAV, SQL-Ledger, SugarCRM, vTiger, Atlassian Jira, TaskJuggler, OCS Inventory NG, CVS, SVN Subversion, Git, Email, and others. Most of these integration links use Perl and Perl libraries as interfaces. Therefore you will need to have working versions of a number of Perl modules installed on your system.
There are two steps necessary in order to install these Perl libraries:
Most Perl libraries are available from the standard repositories:
apt-get install libmime-tools-perl libpath-class-perl libio-socket-inet6-perl libio-socket-portstate-perl
Please see http://www.project-open.com/en/list-integration-links for a list of supported integration links with other software packages.
We have set up a discussion thread on SourceForge specifically about Debian Stretch:
Calle Aprestadora 19, 12o-2a
08902 Hospitalet de Llobregat (Barcelona)
Spain
Tel Europe: +34 609 953 751
Tel US: +1 415 200 2465
Mail: info@project-open.com