EGroupware, un sistema di collaborazione enterprise: introduzione ed installazione

egroupware

EGroupware è un sistema di collaborazione online, di livello enterprise, adatto per grosse, medie e piccole aziende. Necessita di PHP e di un DBMS, gira su molti sistemi operativi e supporta, riferendosi a quanto afferma Stylite (la compagnia che sviluppa Egroupware) diversi prodotti:

  • Linux, Windows, *NIX
  • Nginx, Apache, IIS, PHP
  • MySQL, MaxDB, Postgres, MsSQL

Egroupware supporta il multidominio, cioè una installazione fisica, ma con diversi siti, ciascuno con uno specifico DB e configurazione individuali.
Questo articolo spiega come sia possibile installare manualmente EGroupware partendo dai pacchetti tarball/SVN. A installazione completata spiegherò, con un esempio pratico, l’aggiunta di due domini indipendenti in EGroupware.
L’installazione è possibile tramite pacchetti rpm o deb in modo totalmente automatico, ma ci possono essere situazioni particolari in cui è preferibile procedere manualmente. Questa guida si rivolge a quest’ultima casistica.

Introduzione

Questa guida si limita all’esposizione dell’installazione di EGroupware da tarball/SVN.
Farò un accenno sistemistico in merito ai pacchetti richieste e normalmente non installati dalle procedure automatiche della propria distro.
In merito alla gestione e alla personalizzazione di EGroupware farò solo un accenno come test e prova dalla corretta installazione. Per l’uso e la configurazione rimando alla documentazione di EGroupware.
La guida suppone un ambiente CentOS 6.3. Dovrebbe essere completamente valida anche per RedHat 6.3 e altre distro basate su RedHat come la Scientific Linux. Per completezza le istruzioni sono state testate su una installazione CentOS 6.3 con il set software predefinito “web server” e SELinux disattivato.
In fine i requisiti di sistema, richiesti da EGroupware, si possono trovare a questa URL: http://community.egroupware.org/index.php?page_name=wiki&lang=&wikipage=ManualSetupRequirements

Obiettivi

Voglio ottenere un’unica installazione di EGroupware con più domini. Il domini sono

stefano
luca
davide

La webroot dei file è

/srv/www/egroupware

la directory per i backup ed il virtual file system sarà

/srv/bak/egroupware

L’utente ed il gruppo con cui gira Apache sono “apache” (user) e “apache” (gruppo).
Come DBMS uso MySQL ed il database, il relativo utente e password per ciascun dominio EGroupware sono:

dominio EGroupware: stefano
DB nome: stefano
DB user: stefano
DB password: st13_FA!5
dominio EGroupware: luca
DB nome: luca
DB user: luca
DB password: lu31-RL$8
dominio EGroupware: davide
DB nome: davide
DB user: davide
DB password: da62=PZ&3

L’URL dell’installazione sarà http://www.example.com/egroupware.

Infine la procedura che descrivo viene svolta da terminale, come utente root, e da un web browser grafico.

Preparazione server

La personalizzazione consiste nell’installazione di alcune librerie PHP, di un programma di servizio e la personalizzazione di Apache.

Creazione directory base:

# mkdir /srv/bak
# mkdir /srv/bak/egroupware
# mkdir /srv/bak/egroupware/stefano
# mkdir /srv/bak/egroupware/stefano/files
# mkdir /srv/bak/egroupware/stefano/backup
# mkdir /var/lib/egroupware
# mkdir /srv/www
# chown apache:apache -R /srv/bak/egroupware

Creazione di una directory temporanea in srv. Servirà per alcune lavorazioni

# mkdir /srv/tmp

Installazione repository epel e PhpMyAdmin

Visto la grande utilità dei repository epel lo farò tramite il pacchetto offerto da questo repository.

# cd /srv/tmp
# rpm --import https://fedoraproject.org/static/0608B895.txt
# wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
# rpm -ivh epel-release-6-7.noarch.rpm
# rpm update -y
# yum install -y phpmyadmin php-mysql php-mbstring

Installazione di MySQL

# yum install mysql-server

Installazione librerie PHP necessarie

# yum install -y php-devel php-gd php-imap php-ldap php-odbc php-pear php-xml php-xmlrpc php-pecl-apc php-mcrypt php-mssql php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl libxml2 libxml2-devel php-cli
# pear update-channels
# pear upgrade-all 
# pear install Archive_Tar Auth_SASL Console_Getopt Log Net_Sieve Net_Socket PEAR Structures_Graph XML_Feed_Parser XML_Parser XML_RPC XML_RSS XML_Util Net_IMAP
# yum install -y mcrypt php-mcrypt

Installazione di tnef:

# yum install -y tnef

Creazione del file /etc/httpd/conf.d/egroupware.conf

# vi /etc/httpd/conf.d/egroupware.conf
 
Con il seguente contenuto (il file originale è in egroupware/doc/rpm-build/apache.conf)
# Apache and PHP configuration for EGroupware 
# 
# Many settings are required to have a # certain value for eGroupWare 
# to function reasonably, so only change something if you are sure. 
 
# this makes EGroupware available for all vhosts 
Alias /egroupware /srv/www/egroupware 
 
RedirectMatch ^/.well-known/(caldav|carddav)$ /egroupware/groupdav.php/ 
# iOS 4.3+ calendar requires that to autodetect accounts 
RedirectMatch ^(/principals/users/.*)$ /egroupware/groupdav.php$1 
 
  Options FollowSymLinks ExecCGI 
  AllowOverride None 
  Order allow,deny 
  Allow from all 
  DirectoryIndex index.html index.php 
  AddHandler cgi-script .cgi 
  AddDefaultCharset Off 
  php_flag file_uploads on 
  php_flag log_errors on 
  php_flag magic_quotes_gpc off 
  php_flag magic_quotes_runtime off 
  php_flag register_globals off 
  php_flag short_open_tag on 
  php_flag track_vars on 
  php_flag display_errors off 
  # E_ALL & ~E_NOTICE & ~E_STRICT = 8191 - 8 - 2048 = 6135 
  php_value error_reporting 6135 
  php_value max_execution_time 90 
  php_admin_value mbstring.func_overload 7 
  php_value memory_limit 128M 
  php_value session.gc_maxlifetime 14400 
  php_value include_path .:/usr/share/pear 
  php_admin_value open_basedir /srv/www/egroupware:/srv/bak/egroupware:/var/lib/egroupware:/tmp:/usr/share/pear:/usr/bin/zip:/srv/www/jpgraph:/usr/bin/tnef:/usr/bin/aspell:/usr/bin/crontab:/usr/share/fonts 
  php_value upload_max_filesize 64M 
  php_admin_value upload_tmp_dir /tmp 
  php_value post_max_size 65M 
  php_value max_input_vars 3000 
 
    Order allow,deny 
    Deny from all 
 
    php_admin_value open_basedir / 
 
    php_admin_value open_basedir /srv/www/egroupware:/var/lib/egroupware:/tmp:/usr/share/pear:/usr/bin:/bin 
 
    php_admin_value mbstring.func_overload 0 
    Order allow,deny 
    Allow from all

Abilito la nuova configurazione

# service httpd restart

Installazione

Fase 1: download

Questa prima fase comporta il download dei file dal repository, l’estrazione dei file ed il loro posizionamento nella webroot.
Qui di seguito espongo lo scaricamento sia da SVN, sia dal repository standard per i tarball. Come ultimo passo espongo il download e l’installazione di JPgraph, un pacchetto per la creazione di grafici con PHP usato da EGroupware per disegnare i Gantt dei progetti.

Il download dei file può essere fatto attraverso due vie:

  1. Download dei tarball: sono aggiornati alla data di pacchettizzazione.Mi posiziono nella webroot
    # cd /srv/www/

    Scarico i tarball

    # wget http://downloads.sourceforge.net/project/egroupware/eGroupware-1.8/eGroupware-1.8.004.20121024/eGroupware-1.8.004.20121024.tar.bz2
    # wget http://downloads.sourceforge.net/project/egroupware/eGroupware-1.8/eGroupware-1.8.004.20121024/eGroupware-egw-pear-1.8.004.20121024.tar.bz2
    # wget http://downloads.sourceforge.net/project/egroupware/eGroupware-1.8/eGroupware-1.8.004.20121024/eGroupware-gallery-1.8.004.20121024.tar.bz2
    # wget http://downloads.sourceforge.net/project/egroupware/eGroupware-1.8/eGroupware-1.8.004.20121024/eGroupware-phpfreechat-1.8.004.20121024.tar.bz2

    Estraggo i file dai tarball

    # tar xfj eGroupware-1.8.004.20121024.tar.bz2
    # tar xfj eGroupware-egw-pear-1.8.004.20121024.tar.bz2
    # tar xfj eGroupware-gallery-1.8.004.20121024.tar.bz2
    # tar xfj eGroupware-phpfreechat-1.8.004.20121024.tar.bz2

    Elimino i tarball

    # rm eGroupware-*

    Imposto il corretto proprietario e gruppo

    # chown apache:apache -R egroupware
  2. Download via SVN: i file sono aggiornati all’ultima versione disponibile.
    Mi posiziono nella webroot

    # cd /srv/www/

    Scarico i file

    # svn checkout http://svn.egroupware.org/egroupware/branches/1.8/aliases/default .

    Imposto i corretti proprietari

    # chown apache:apche -R egroupware

Scaricamento di JPgraph

Mi posiziono in /srv/www

# cd /srv/www

Scarico il pacchetto

# wget http://jpgraph.net/download/download.php?p=5

Estraggo i file dal pacchetto

# tar xfz download.php\?p\=5

Correggo il nome della directory estratta

# mv jpgraph-3.5.0b1 jpgraph

Imposto il corretto proprietario e gruppo

# chown apache:apache -R jpgraph

Elimino il pacchetto scaricato

# rm download.php\?p\=5

Nota: usando wget per lo scaricamento del tarball non viene automaticamente usato il nome del pacchetto, ma viene dato il nome dell’url passata a wget per il download. Il pacchetto ottenuto è corretto, ma il nome è poco significativo.

Fase 2: configurazione preliminare

A questo punto ho tutti i file/programmi necessari. Anche Apache è correttamente configurato. Manca solo il database. Procedo con la creazione del primo database e poi con l’installazione guidata proposta da EGroupware. Quest’ultima controllerà che tutto l’ambiente sia correttamente configurato, creerà il file base di configurazione (header) e, successivamente, procedo con la configurazione del primo dominio.

Creazione del database

Il database che creo ha i seguenti estremi:

DB nome: stefano
DB user: stefano
DB password: st13_FA!5

La creazione attraverso PhpMyAdmin è autoesplicante, mentre procedendo da linea di comando si possono lanciare i seguenti comandi:

# mysql -u root -p
mysql> CREATE DATABASE stefano;
mysql> GRANT ALL PRIVILEGES ON stefano.* TO “stefano”@”localhost” IDENTIFIED BY “st13_FA!5”;
mysql> FLUSH PRIVILEGES;
mysql> EXIT

Il database e l’utente per il database sono pronti.

Installazione guidata

1. Da un desktop, o dalla console, apro un web browser e punto all’url http://www.example.com/egroupware . Seleziono la lingua e avvio il test di installazione

egroupware_01

2. Il risultato riporta una lunga lista di riscontri

egroupware_02

3. I vari warning li posso ignorare, ma è da correggere il “System/Locatime”. Edito il file /etc/php.ini

# vi /etc/php.ini

4. Correggo il parametro date.timezone come segue

[…]
date.timezone = “Europe/Rome”
[…]

5. Effettuo un nuovo restart del servizio apache

# service httpd restart

6. Rieseguo il test di EGroupware. Ora tutto è OK. Procedo cliccando su “Continue to the Header Admin”

7. Compilo la nuova form. Qui di seguito lo screeshot compilato coerentemente con l’howto. I campi sono ben commentati dalla Stylite stessa:

egroupware_03

Nota 1: a titolo di esempio ho impostato le due password ed i due username con le stesse credenziali. In una installazione reale potrebbe essere opportuno diversificarle.
Nota 2: in questa fase ci possono essere dei problemi di scrittura automatica del file header. Se si verifica questo errore EGroupware automaticamente avverte e restituisce tutto il codice del file proponendo di scriverlo manualmente. Spesso, per ovviare il problema, è sufficiente correggere il proprietario e/o il gruppo della directory di EGroupware e impostare il permesso di scrittura per il proprietario. Il proprietario e il gruppo da assegnare sono quelli con cui si fa girare il webserver (per RedHat e le derivate è apache:apache).
Procedo cliccando su “Scrivi”.

8. Segue una pagina di conferma dell’avvenuta creazione del file di header

egroupware_04

9. Clicco su “Continua” e accedo alla pagina di login per creare/gestire gli header ed il setup generale

egroupware_05

10. Metto username e password nella parte “Setup/Config Admin Login” e accedo alla pagina di configurazione. EGroupware evidenzia subito che mancano tabelle valide nel database e ne propone la creazione . Clicco sul bottone “Installa”

egroupware_06

11. A fine creazione la pagina di configurazione mi comunica l’avvenuta creazione (a parte messaggi diversi). Clicco sul bottone “ricontrolla la mia installazione”

egroupware_07

12. A questo punto l’aggiornamento della pagina di setup mi conferma la creazione delle tabelle e mi comunica che manca la configurazione. Clicco sul bottone “Modifica la Configurazione Esistente”

egroupware_08

13. La nuova form è ricca di svariati parametri e presuppone una buona conoscenza dei parametri del server e di quello che si vuole ottenere. Le impostazioni del server IMAP ed SMTP si riferiscono al mailing globale del sistema. A titolo di esempio riporto una configurazione possibile. A fine impostazione clicco sul bottone “Salva”

egroupware_09

14. La nuova pagina mi informa che devo impostare l’account dell’amministratore del sito. Clicco sul bottone “Crea account amministratore”

egroupware_10

15. Imposto l’account dell’amministratore del dominio “stefano” e clicco sul bottone “Salva”

egroupware_11

16. A questo punto tutte le impostazioni base sono applicate. È possibile fare una selezione delle applicazioni disponibili all’interno di EGroupware. Cliccando su “Gestione Applicazioni” posso fare questa selezione, ma preferisco avere a disposizione tutte le applicazioni e agire, successivamente, attraverso i gruppi per selezionare le applicazioni a disposizione degli utenti.
A questo punto clicco su “Esci”

egroupware_12

17. Ora clicco su “Indietro al Login Utente” per accedere alla pagina di login, lato utente, del nostro dominio

egroupware_13

18. Prima di procedere al login come amministratore voglio ottenere che nel menu a tendina dei domini disponibili compaia “stefano” al posto di “default”.
Pertanto edito il file header.inc.php

# vi /srv/www/egroupware/header.inc.php

e modifico la riga “$GLOBALS[‘egw_domain’][‘default’] = array(” come segue

[…]
$GLOBALS[‘egw_domain’][‘stefano’] = array(
[…]

19. Ora, tramite il browser, accedo all’url http://www.example.com/egroupware . Autenticandomi con l’utente administrator (quello inserito al punto 16) posso iniziare la creazione dei gruppi, l’inserimento degli utenti, la configurazione delle applicazioni.

Conclusioni

In questo primo articolo ho descritto tutte le fasi necessarie all’installazione di Egroupware, nei prossimi approfondirò l’aspetto di configurazione ed i test case di funzionamento.