Gemeinschaft installieren

Philipp Kempgen, Amooma GmbH

Lizenz: GNU FDL (Gemeinschaft: GNU GPL)

Warnung

Dies ist eine Doku für Entwickler von Gemeinschaft. Wenn Sie kein Entwickler sind sollten Sie Gemeinschaft normalerweise mit dem Installations-CD-ISO-Image installieren. Fragen zu dieser Anleitung werden nicht beantwortet.

Nochmal: Benutzen Sie Gemeinschaft von der Amooma GmbH!


1.1 - Abhängigkeiten installieren
1.2 - Installation von Gemeinschaft
1.3 - Gemeinschaft-Trunk updaten

Hier beschreiben wir wie man die aktuelle Entwicklerversion (den „trunk“ aus dem SVN) von Gemeinschaft als Einzel-Server-System installiert, d.h. MySQL, Asterisk, Apache und Gemeinschaft laufen auf einem einzigen Rechner.

Anmerkung

Natürlich lassen sich die einzelnen Teile auch auf mehrere Rechner aufteilen.

Als Beispiel-System nehmen wir ein Debian 4 („Etch“) oder 5 („Lenny“) in Minimal-Installation, also ohne die „Desktop“-Paketauswahl.

Anmerkung

Gemeinschaft läßt sich auch auf anderen Systemen (RedHat, CentOS, ...) installieren, aber es ist fast unmöglich für alle Versionen von Gemeinschaft für alle Systeme stets aktuelle Installationsanleitungen bereitzustellen, daher muß man sich für ein System entscheiden.

1.1. Abhängigkeiten installieren

Zuerst muß natürlich die Software installiert werden die zum Betrieb von Gemeinschaft vorausgesetzt wird bzw. auch eine Build-Umgebung damit man z.B. Asterisk kompilieren kann.

Wie diese Software installiert wird hat genaugenommen nichts mit der Installation von Gemeinschaft zu tun. Wir wollen es hier aber trotzdem kurz beschreiben. (Für ausführliche Anleitungen kann man andere, externe Quellen zu Rate ziehen.)

Die Installationsschritte werden als Benutzer root durchgeführt.

Anmerkung

Gerade wenn man ein Kernel-Modul wie Zaptel einsetzt, das ja gegen die Kernel-Header kompiliert wird, sollte man darauf achten, daß man sich in seiner /etc/apt/sources.list explizit für eine stabile Version entscheidet (z.B. etch oder lenny) und nicht einfach stable da stehen hat.

Beispiel Etch:

deb     http://ftp.de.debian.org/debian/ etch main
deb-src http://ftp.de.debian.org/debian/ etch main

deb     http://security.debian.org/ etch/updates main contrib
deb-src http://security.debian.org/ etch/updates main contrib

Beispiel Lenny:

deb     http://ftp.de.debian.org/debian/ lenny main
deb-src http://ftp.de.debian.org/debian/ lenny main

deb     http://security.debian.org/ lenny/updates main
deb-src http://security.debian.org/ lenny/updates main

Sonst könnte man irgendwann versehentlich mal den Kernel upgraden - Zaptel wäre dann gegen die falschen Kernel-Header verlinkt und müßte (nach Installation der neuen Header) erneut kompiliert werden.

Upgrade

Es versteht sich eigentlich fast von selbst daß man auf einer frischen Installation erst mal alle Pakete aktualisiert:

gemeinschaft:~# aptitude update
gemeinschaft:~# aptitude upgrade

Falls von dem Upgrade auch der Kernel betroffen ist muß das System vor dem Ausführen weiterer Schritte neugestartet werden:

gemeinschaft:~# reboot

Standard-Pakete

gemeinschaft:~# aptitude install coreutils lsb-base grep findutils sudo wget curl cron
gemeinschaft:~# aptitude install expect logrotate hostname netcat net-tools
gemeinschaft:~# aptitude install ifupdown iputils-ping openssh-client openssh-server

Weitere Pakete

gemeinschaft:~# aptitude install psmisc dnsutils iputils-arping pciutils bzip2

VIM

Wer zum Arbeiten gerne einen kompletten vim benutzt kann ihn so installieren:

gemeinschaft:~# aptitude install vim

Locale

Für einige Funktionen im Web-Interface von Gemeinschaft ist es schöner die der Sprache entsprechende Locale installiert zu haben. Dieser Schritt ist aber optional.

gemeinschaft:~# aptitude install locales

gemeinschaft:~# dpkg-reconfigure locales

Im Dialog „Locales to be generated“ von dpkg-reconfigure die gewünschten Locales auswählen (momentan sind nur de_* und en_* sinnvoll), also z.B. de_DE.UTF-8 und/oder en_US.UTF-8:

  ┌-----------┤ Configuring locales ├-----------┐
  │ Locales to be generated:                    │
  │                                             │
  │    [ ] de_CH.UTF-8 UTF-8                    │
  │    [ ] de_DE@euro ISO-8859-15               │
  │    [ ] de_DE ISO-8859-1                     │
  │    [*] de_DE.UTF-8 UTF-8                    │
  │                                             │
  │          <Ok>              <Cancel>         │
  │                                             │
  └---------------------------------------------┘

Was man im Dialog „Default locale for the system environment“ auswählt spielt für Gemeinschaft keine Rolle. Damit legt man die Default-Sprache des Betriebssystems fest. Es ist kein Problem einfach „None“ (was quasi gleichbedeutend ist mit Englisch) auszuwählen:

  ┌-----------┤ Configuring locales ├-----------┐
  │ Default locale for the system environment:  │
  │                                             │
  │                 None                        │
  │                 de_DE.UTF-8                 │
  │                 en_US.UTF-8                 │
  │                                             │
  │          <Ok>              <Cancel>         │
  │                                             │
  └---------------------------------------------┘
Generating locales (this might take a while)...
  de_DE.UTF-8... done
  en_US.UTF-8... done
Generation complete.

(Es sei nur am Rande erwähnt daß man alternativ zu dpkg-reconfigure locales die Datei /etc/locale.gen direkt editieren und danach locale-gen ausführen könnte.)

Caching Nameserver

Selbst wenn Asterisk offenbar keine DNS-Lookups machen müßte, da man überall IP-Adressen verwendet hat, so wird es mit einem langsamen DNS-Server doch fast unbenutzbar langsam. Um das Problem zu umgehen, sollte man unbedingt einen lokalen Caching Nameserver installieren. Auf einem VoIP-System ist ein Caching Nameserver eigentlich ein Muß!

gemeinschaft:~# aptitude install bind9

Den lokalen Nameserver in der /etc/resolv.conf vor den vorhandenen Eintrag schreiben (neuer Eintrag hier fett):

nameserver 127.0.0.1
nameserver 192.168.2.1

In der /etc/bind/named.conf.local muß man jetzt noch die Zeile

include "/etc/bind/zones.rfc1918";

hinzufügen (auf einem Debian steht die Zeile schon drin, man muß nur die Kommentarzeichen davor entfernen), danach:

gemeinschaft:~# /etc/init.d/bind9 restart

Testen:

gemeinschaft:~# nslookup www.amooma.de

Server:     127.0.0.1
Address:    127.0.0.1#53

Non-authoritative answer:
Name:    www.amooma.de
Address: 212.227.96.103

Hier sollte jetzt (spätestens beim 2. Aufruf) als Adresse des DNS-Servers 127.0.0.1 stehen.

NTP

Es ist extrem wichtig, daß das System die korrekte Uhrzeit hat! An ntp führt eigentlich kein Weg vorbei:

Etch:
gemeinschaft:~# aptitude install ntp ntp-simple ntpdate
Lenny:
gemeinschaft:~# aptitude install ntp ntpdate
gemeinschaft:~# /etc/init.d/ntp stop

Stopping NTP server: ntpd.

Anmerkung

Falls man in seinem internen Firmennetz eigene NTP-Server betreibt sollte man die jetzt zur /etc/ntp.conf hinzufügen.

Initial die Zeit setzen:

gemeinschaft:~# ntpdate 0.debian.pool.ntp.org
26 Oct 20:37:41 ntpdate[5122]: adjust time server 195.238.144.37 offset 0.154922 sec

NTP starten:

gemeinschaft:~# /etc/init.d/ntp start
Starting NTP server: ntpd.

Anmerkung

Von welchen NTP-Server gerade die Zeit bezogen wird läßt sich jederzeit überprüfen:

gemeinschaft:~# ntpq -p

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+195.238.144.37  217.91.44.17     2 u   39   64  377   20.861  113.205  73.724
-84-16-235-166.i 88.198.34.47     3 u   42   64  377   50.396   17.538 112.912
+crux.pmsf.net   131.188.3.221    2 u   10   64  377   52.257   56.817  86.465
*zit-net2.uni-pa .DCF.            1 u   43   64  377   64.569  136.264  72.789

Build-Umgebung[1]

gemeinschaft:~# aptitude install gcc g++ binutils libtool make

Perl

gemeinschaft:~# aptitude install perl perl-modules
gemeinschaft:~# aptitude install libio-interface-perl libio-socket-multicast-perl
gemeinschaft:~# aptitude install libnet-netmask-perl libnet-daemon-perl

SipSak[2]

gemeinschaft:~# aptitude install sipsak

MySQL-Client

gemeinschaft:~# aptitude install mysql-client

MySQL-Client-Entwicklungspaket[3]

gemeinschaft:~# aptitude install libmysqlclient-dev

MySQL-Server

gemeinschaft:~# aptitude install mysql-server

Anmerkung

Für ein Mehr-Server-System müßte an dieser Stelle ggf. ein MySQL-Cluster oder Replikation eingerichtet werden.

Apache

gemeinschaft:~# aptitude install apache2

PHP

gemeinschaft:~# aptitude install php5-cli libapache2-mod-php5 php5-mysql php5-ldap

Sox

gemeinschaft:~# aptitude install sox

Mpg123

gemeinschaft:~# aptitude install mpg123

Lame[4]

gemeinschaft:~# cd /usr/src/

gemeinschaft:/usr/src# wget 'http://dfn.dl.sourceforge.net/sourceforge/lame/lame-398-2.tar.gz'
[...]
gemeinschaft:/usr/src# tar -xzf lame-398-2.tar.gz 
gemeinschaft:/usr/src# cd lame-398-2
gemeinschaft:/usr/src/lame-398-2# ./configure && make clean && make && make install

gemeinschaft:/usr/src/lame-398-2# cd
gemeinschaft:~# 

Zaptel und Asterisk

Die Kernel-Header werden installiert, da sie für die Übersetzung von Zaptel (ztdummy für die MeetMe()-Konferenzen) benötigt werden:

gemeinschaft:~# aptitude install linux-headers-`uname -r` linux-kernel-headers

Weitere benötigte Entwicklungs-Pakte etc.:

gemeinschaft:~# aptitude install bison byacc flex
gemeinschaft:~# aptitude install libnewt0.52 libnewt-dev
gemeinschaft:~# aptitude install ncurses-base ncurses-bin ncurses-dev ncurses-term libncurses4 libncurses5 libncurses-dev
gemeinschaft:~# aptitude install openssl zlib1g zlib1g-dev

Zaptel

gemeinschaft:~# cd /usr/src/

gemeinschaft:/usr/src# wget 'http://downloads.digium.com/pub/zaptel/releases/zaptel-1.4.12.1.tar.gz'
[...]
gemeinschaft:/usr/src# tar -xzf zaptel-1.4.12.1.tar.gz 
gemeinschaft:/usr/src# cd zaptel-1.4.12.1
gemeinschaft:/usr/src/zaptel-1.4.12.1# ./configure && make clean && make && make install && make config

[...]
gemeinschaft:/usr/src/zaptel-1.4.12.1# rm -rf firmware/zaptel-fw-*
gemeinschaft:/usr/src/zaptel-1.4.12.1# cd
gemeinschaft:~# 

Ggf. paßt man jetzt die /etc/default/zaptel an, so daß nur die Treiber geladen werden die man benötigt. Ohne ISDN-Karten kann man dann einfach

gemeinschaft:~# modprobe ztdummy

ausführen. Theoretisch könnten wir direkt fortfahren, aber nach der Installation von Kernel-Modulen ist es sicherer das System neuzustarten um zu prüfen daß die Module automatisch korrekt geladen werden.

gemeinschaft:~# reboot && exit
gemeinschaft:~# dmesg | grep -iE 'zap|zt'

[   20.891315] Zapata Telephony Interface Registered on major 196
[   20.891356] Zaptel Version: 1.4.12.1
[   20.891368] Zaptel Echo Canceller: MG2
[   21.956022] ztdummy: Trying to load High Resolution Timer
[   21.956022] ztdummy: Initialized High Resolution Timer
[   21.956022] ztdummy: Starting High Resolution Timer
[   21.956022] ztdummy: High Resolution Timer started, good to go

Asterisk

Falls es sich um ein Upgrade handelt, müssen die Asterisk-Module gelöscht werden:

gemeinschaft:~# rm -rf /usr/lib/asterisk/modules/*

Asterisk installieren:

gemeinschaft:~# cd /usr/src/
gemeinschaft:/usr/src# wget 'http://downloads.digium.com/pub/asterisk/releases/asterisk-1.4.21.2.tar.gz'
[...]
gemeinschaft:/usr/src# tar -xzf asterisk-1.4.21.2.tar.gz 

gemeinschaft:/usr/src# cd asterisk-1.4.21.2
gemeinschaft:/usr/src/asterisk-1.4.21.2# ./configure && make clean && make && make install && make config
[...]
gemeinschaft:/usr/src/asterisk-1.4.21.2# make samples

gemeinschaft:/usr/src/asterisk-1.4.21.2# cd
gemeinschaft:~# 

Asterisk installiert (mit make config) die Start-/Stop-Skripte auf Debian für falsche Runlevel, so daß Asterisk beim Runterfahren des Systems nicht sauber gestoppt wird. Das sollte man beheben:

gemeinschaft:~# update-rc.d -f asterisk remove
[...]
gemeinschaft:~# update-rc.d asterisk defaults 50 15
[...]

Verzeichnis für Call-Files anlegen und freigeben (damit z.B. vom Web-Server geschrieben werden kann):

gemeinschaft:~# mkdir -p /var/spool/asterisk/outgoing

gemeinschaft:~# chmod a+rwx /var/spool/asterisk/outgoing/
gemeinschaft:~# chmod a+rwx /var/spool/asterisk/tmp/

Asterisk-Addons installieren:

gemeinschaft:~# cd /usr/src/
gemeinschaft:/usr/src# wget 'http://downloads.digium.com/pub/asterisk/releases/asterisk-addons-1.4.7.tar.gz'
gemeinschaft:/usr/src# tar -xzf asterisk-addons-1.4.7.tar.gz 
gemeinschaft:/usr/src# cd asterisk-addons-1.4.7

gemeinschaft:/usr/src/asterisk-addons-1.4.7# ./configure 

Jetzt können wir in menuselect die Module rauswerfen die wir nicht benötigen (chan_ooh323, format_mp3). Wir brauchen lediglich app_addon_sql_mysql, cdr_addon_mysql, res_config_mysql:

gemeinschaft:/usr/src/asterisk-addons-1.4.7# make menuselect

[interaktiver Dialog]
menuselect changes saved!
gemeinschaft:/usr/src/asterisk-addons-1.4.7# make clean && make && make install && make samples
[...]
gemeinschaft:/usr/src/asterisk-addons-1.4.7# cd

gemeinschaft:~# 

Dabei muß die Datei /usr/lib/asterisk/modules/res_config_mysql.so erzeugt worden sein:

gemeinschaft:~# ls /usr/lib/asterisk/modules/res_config_mysql.so 
/usr/lib/asterisk/modules/res_config_mysql.so

Source-Code entfernen

Dieser Schritt ist keineswegs notwendig, schafft aber locker 150 MB Platz.

gemeinschaft:~# cd /usr/src/
gemeinschaft:/usr/src# rm -rf asterisk-1.4.21.2*

gemeinschaft:/usr/src# rm -rf asterisk-addons-1.4.7*
gemeinschaft:/usr/src# rm -rf lame-398-2*
gemeinschaft:/usr/src# rm -rf zaptel-1.4.12.1*

Wichtig

Kommen Sie bitte nicht auf die Idee einfach rm -rf /usr/src/* auszuführen! In dem Verzeichnis befinden sich nämlich auch z.B. die Kernel-Header-Dateien, und die müssen da bleiben!

1.2. Installation von Gemeinschaft

Jetzt kommen wir zur eigentlichen Installation von Gemeinschaft selbst. Um die aktuelle Entwickler-Version von Gemeinschaft aus dem SVN auszuchecken benötigt man natürlich einen SVN-Client:

gemeinschaft:~# aptitude install subversion

Wichtig

Im folgenden werden wir mit ln -s eine Reihe von sogenannten symbolischen Links (Symlinks) anlegen. Dabei ist es bei Verzeichnisse von entscheidender Bedeutung daß man sich nicht von der Auto-Vervollständigung der Shell fehlleiten läßt sondern die Verzeichnisnamen exakt wie hier beschrieben ohne abschließenden „/“ (Slash) eingibt!

Deutsche Sprachbausteine für Asterisk

gemeinschaft:~# cd /usr/src/

gemeinschaft:/usr/src# svn checkout 'https://svn.amooma.com/asterisk-sounds-de/trunk' asterisk-sounds-de-trunk
[...]
gemeinschaft:/usr/src# cd /var/lib/asterisk/sounds/
gemeinschaft:/var/lib/asterisk/sounds# ln -s /usr/src/asterisk-sounds-de-trunk de
gemeinschaft:/var/lib/asterisk/sounds# ls -ld de
lrwxrwxrwx 1 root root 33 2008-10-27 19:17 de -> /usr/src/asterisk-sounds-de-trunk

Gemeinschaft

Auschecken:

gemeinschaft:~# cd /usr/src/
gemeinschaft:/usr/src# svn checkout 'https://www.kempgen.net/svn/gemeinschaft/trunk' gemeinschaft-trunk

Einen Symlink anlegen (das hat den Vorteil daß man später ggf. leichter zwischen verschiedenen Versionen von Gemeinschaft wechseln kann):

gemeinschaft:/usr/src# ln -s gemeinschaft-trunk gemeinschaft
gemeinschaft:/usr/src# ls -ld gemeinschaft
lrwxrwxrwx 1 root src 18 2008-10-27 19:26 gemeinschaft -> gemeinschaft-trunk

In MySQL mit folgenden Befehlen einen Benutzer „gemeinschaft“ anlegen, der auf die Datenbank „asterisk“ (die wir gleich einspielen werden) zugreifen darf (bitte statt „geheim“ ein besseres Paßwort wählen!):

gemeinschaft:~# mysql 

[...]
mysql> GRANT ALL ON `asterisk`.* TO 'gemeinschaft'@'localhost' IDENTIFIED BY 'geheim';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL ON `asterisk`.* TO 'gemeinschaft'@'%' IDENTIFIED BY 'geheim';
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GRANTS FOR 'gemeinschaft'@'localhost';
+---------------------------------------------------------------------------------------------------------------------+
| Grants for gemeinschaft@localhost                                                                                   |
+---------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'gemeinschaft'@'localhost' IDENTIFIED BY PASSWORD '*462366917EEDD1970A48E87D8EF59EB67D2CA26F' | 
| GRANT ALL PRIVILEGES ON `asterisk`.* TO 'gemeinschaft'@'localhost'                                                  | 
+---------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql> SHOW GRANTS FOR 'gemeinschaft'@'%';

+-------------------------------------------------------------------------------------------------------------+
| Grants for gemeinschaft@%                                                                                   |
+-------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'gemeinschaft'@'%' IDENTIFIED BY PASSWORD '*462366917EEDD1970A48E87D8EF59EB67D2CA26F' | 
| GRANT ALL PRIVILEGES ON `asterisk`.* TO 'gemeinschaft'@'%'                                                  | 
+-------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql> exit
Bye

Testen:

gemeinschaft:/usr/src# mysql -u gemeinschaft -p -e 'SELECT "ok"'
Enter password: 
+----+
| ok |
+----+
| ok | 
+----+

Das ist erfreulich. (Eine schlechte Meldung wäre z.B. „ERROR 1045 (28000): Access denied for user 'gemeinschaft'@'localhost' (using password: YES)“.)

Datenbank einspielen:

gemeinschaft:/usr/src# cd /usr/src/gemeinschaft/usr/share/doc/gemeinschaft/

gemeinschaft:/usr/src/gemeinschaft/usr/share/doc/gemeinschaft# mysql -u gemeinschaft -p < asterisk.sql 
Enter password: 

Gemeinschaft mittels Symlinks „installieren“:

Apache-Konfiguration für Gemeinschaft:

gemeinschaft:~# cd /etc/apache2/conf.d/
gemeinschaft:/etc/apache2/conf.d# ln -s /usr/src/gemeinschaft/etc/apache2/conf.d/gemeinschaft.conf
gemeinschaft:~# cd /etc/apache2/sites-available/
gemeinschaft:/etc/apache2/sites-available# ln -s /usr/src/gemeinschaft/etc/apache2/sites-available/gemeinschaft
gemeinschaft:/etc/apache2/sites-available# a2dissite default
gemeinschaft:/etc/apache2/sites-available# a2ensite gemeinschaft

mod_rewrite und mod_alias aktivieren:

gemeinschaft:~# a2enmod rewrite
gemeinschaft:~# a2enmod alias

Apache neu starten:

gemeinschaft:~# /etc/init.d/apache2 restart

Der Web-Server muß mit sudo ohne Paßwort als root Befehle ausführen können. Das erreicht man, indem man visudo aufruft und in die Datei folgende Zeile einträgt[5]:

www-data ALL=(ALL) NOPASSWD: ALL

Asterisk-Konfiguration:

gemeinschaft:~# cd /etc/

gemeinschaft:/etc# rm -rf asterisk/
gemeinschaft:/etc# ln -s /usr/src/gemeinschaft/etc/asterisk

Gemeinschaft-Konfiguration:

gemeinschaft:~# cd /etc/
gemeinschaft:/etc# ln -s /usr/src/gemeinschaft/etc/gemeinschaft

Jetzt kann man die /etc/gemeinschaft/gemeinschaft.php editieren, also Datenbank-Benutzer und -Paßwort usw. eintragen. Für die Betriebsart als Einzel-Server-System stellt man

$INSTALLATION_TYPE = 'single';

ein.

Haupt-Verzeichnis von Gemeinschaft:

gemeinschaft:~# cd /opt/
gemeinschaft:/opt# ln -s /usr/src/gemeinschaft/opt/gemeinschaft

IP-Adresse des Rechners in /opt/gemeinschaft/etc/listen-to-ip eintragen.

IP-Adresse in Datenbank eintragen:

gemeinschaft:~# mysql

[...]
mysql> USE asterisk;
[...]
mysql> UPDATE hosts SET host='192.168.1.130' WHERE id=1;
[...]
mysql> SELECT * FROM hosts;

+----+---------------+----------------+------------+----------+
| id | host          | comment        | is_foreign | group_id |
+----+---------------+----------------+------------+----------+
|  1 | 192.168.1.130 | Gemeinschaft 1 |          0 |        0 | 
+----+---------------+----------------+------------+----------+
1 row in set (0.00 sec)

Doku:

gemeinschaft:~# cd /usr/share/doc
gemeinschaft:/usr/share/doc# ln -s /usr/src/gemeinschaft/usr/share/doc/gemeinschaft

Log-Verzeichnis (ein Symlink wäre hier kontraproduktiv):

gemeinschaft:~# mkdir -p /var/log/gemeinschaft

gemeinschaft:~# chmod a+rwx /var/log/gemeinschaft/

Web-Verzeichnis:

gemeinschaft:~# cd /var/www/
gemeinschaft:/var/www# ln -s /usr/src/gemeinschaft/var/www/gemeinschaft
gemeinschaft:/var/www# ln -s /usr/src/gemeinschaft/var/www/.htaccess 

Weitere Dateien:

gemeinschaft:~# cd /var/lib/
gemeinschaft:/var/lib# ln -s /usr/src/gemeinschaft/var/lib/gemeinschaft

Sprach-Prompts von .wav nach .alaw konvertieren:

gemeinschaft:~# cd /var/lib/asterisk/sounds/de

gemeinschaft:/var/lib/asterisk/sounds/de# /opt/gemeinschaft/sbin/sounds-wav-to-alaw.sh 
gemeinschaft:/var/lib/asterisk/sounds/de# cd
gemeinschaft:~# chown -R root:root /var/lib/asterisk/sounds

Asterisk-Dialplan für Gemeinschaft initialisieren:

gemeinschaft:~# /etc/init.d/asterisk stop
gemeinschaft:~# /opt/gemeinschaft/sbin/gs-ast-dialplan-gen 
Generating extensions.ael ...
extensions.ael written.
gemeinschaft:~# /etc/init.d/asterisk start

Logrotate-Regeln:

gemeinschaft:~# cd /etc/logrotate.d/

gemeinschaft:/etc/logrotate.d# ln -s /usr/src/gemeinschaft/etc/logrotate.d/asterisk 
gemeinschaft:/etc/logrotate.d# ln -s /usr/src/gemeinschaft/etc/logrotate.d/gemeinschaft 

Cron-Skripte:

gemeinschaft:~# cd /etc/cron.d
gemeinschaft:/etc/cron.d# ln -s /usr/src/gemeinschaft/etc/cron.d/gs-cc-guardian 
gemeinschaft:/etc/cron.d# ln -s /usr/src/gemeinschaft/etc/cron.d/gs-queuelog-to-db 
gemeinschaft:/etc/cron.d# ln -s /usr/src/gemeinschaft/etc/cron.d/gs-queues-refresh 

DHCP-Server

gemeinschaft:~# aptitude install dhcp3-server

gemeinschaft:~# cd /etc/dhcp3/
gemeinschaft:/etc/dhcp3# rm dhcpd.conf 
gemeinschaft:/etc/dhcp3# ln -s /usr/src/gemeinschaft/usr/share/doc/gemeinschaft/misc/dhcpd-3-example.conf dhcpd.conf

/etc/dhcp3/dhcpd.conf anpassen, dann

gemeinschaft:/etc/dhcp3# /etc/init.d/dhcp3-server restart

Web-GUI

Nachdem man wie oben beschrieben in der /etc/gemeinschaft/gemeinschaft.php grundlegende Einstellungen wie Datenbank-Benutzer und -Paßwort eingetragen hat kommt man jetzt mit einem Web-Browser unter der URL http://rechner/gemeinschaft/ auf die grafische Oberfläche, wobei man in der Adresse natürlich rechner durch die IP-Adresse ersetzen muß, also z.B. http://192.168.1.130/gemeinschaft/ .

1.3. Gemeinschaft-Trunk updaten

Hat man gerade Gemeinschaft frisch installiert so ist dieser Abschnitt natürlich nicht interessant. Will man aber später mal den Trunk von Gemeinschaft auf die aktuelle Revision (also den aktuellen Entwicklungsstand) aktualisieren, so geht das ganz einfach so:

gemeinschaft:~# cd /usr/src/gemeinschaft-trunk/

Die momentan installierte Revision herausfinden:

gemeinschaft:/usr/src/gemeinschaft-trunk# svnversion 

5340

Updaten:

gemeinschaft:/usr/src/gemeinschaft-trunk# svn update
[...]
Updated to revision 5342.

Die alte und die neue Revision sind wichtig, denn da wir hier ja mit der aktuellen Entwicklungsversion arbeiten müssen wir uns um eventuelle Änderungen an der Datenbank-Struktur manuell kümmern. Dazu liest man in der Datei usr/share/doc/gemeinschaft/UPGRADE-DB.sql.txt nach, ob es seit der alten Revision irgendwelche Änderungen gab und führt ggf. die angegebenen SQL-Befehle in MySQL (mysql) aus.



[1] zum Kompilieren von Asterisk

[2] wird momentan nur vom Cluster-Watchdog benötigt, nicht auf einem Einzel-Server

[3] zum Kompilieren des MySQL-Add-Ons von Asterisk

[4] Wegen seiner Fähigkeit MPEG 1 Layer 3 („MP3“) zu kodieren ist LAME aus patentrechtlichen Gründen und aufgrund der Debian-Richtlinien auf Debian nicht direkt als Paket verfügbar.

[5] Unter Debian läuft der Apache per Default als User www-data. Das müssen Sie natürlich ggf. anpassen. Als welcher User der Apache läuft, steht in der apache2.conf:

gemeinschaft:~# cat /etc/apache2/apache2.conf /etc/apache2/envvars 2>>/dev/null | grep -E '^User |APACHE_RUN_USER'

User ${APACHE_RUN_USER}
export APACHE_RUN_USER=www-data