Installation von Simple Invoices auf Debian Etch

Version 1.0
Author: Falko Timme


Diese Anleitung veranschaulicht, wie man Simple Invoices auf einem Debian Etch Server installiert. Simple Invoices ist ein web-basiertes elementares Abrechnungssystem, das Dir dabei hilft Rechnungen zu erstellen und zu verwalten. Es gibt die Rechnungen als PDF oder Excel Dateien aus, mailt sie Deinen Kunden, etc. Es ist auf kleine Betriebe/Organisationen und auf private Nutzer zugeschnitten.

Diese Anleitung ist ohne jegliche Gewähr! Ich übernehme keine Garantie, dass dies auch bei Dir funktioniert!

1 Vorbemerkung

In dieser Anleitung verwende ich den Hostnamen server1.example.com mit der IP Adresse 192.168.0.100. Deine Einstellungen werden wahrscheinlich von meinen abweichen, Du musst sie also an entsprechender Stelle ändern.

Simple Invoices benötigt ein Apache-MySQL-PHP System. PHP sollte GD2 (für das Erstellen von PDF Rechnungen) und XSL (für Berichte) unterstützen. In dieser Anleitung werde ich Apache, PHP und MySQL auf einem frisch aufgesetzten Debian System installieren und ich werde Simple Invoices im Standard Apache vhost in /var/www installieren. Wenn Apache, PHP und MySQL bereits installiert und auch weitere Apache vhosts konfiguriert hast, wirst Du die Einstellungen in dieser Anleitung an Deine Wünsche anpassen müssen.

2 Installation von MySQL 5.0

Zunächst installieren wir MySQL 5.0 wie folgt:

apt-get install mysql-server mysql-client

Richte ein Passwort für den MySQL Benutzer root (ersetze yourrootsqlpassword mit dem Passwort, das Du verwenden möchtest) an:

mysqladmin -u root password yourrootsqlpassword

Überprüfe dann mit

netstat -tap | grep mysql

auf welcher Adresse MySQL hört. Sieht die Ausgabe wie folgt aus:

tcp 0 0 localhost.localdo:mysql *:* LISTEN 2713/mysqld

was bedeutet, dass MySQL nur auf localhost.localdomain hört, dann ist das Passwort, das Du zuvor angelegt hast, sicher. Sieht die Ausgabe allerdings so aus:

tcp 0 0 *:mysql *:* LISTEN 2713/mysqld

solltest Du auch ein MySQL Passwort für Deinen Hostnamen einrichten, da sonst jeder auf Deine Datenbank zugreifen und Daten verändern kann:

mysqladmin -h server1.example.com -u root password yourrootsqlpassword


3 Installation von Apache/PHP5/phpMyAdmin

Als Nächstes installieren wir Apache2 zusammen mit PHP5 (inklusive GD2 und XSL Unterstützung) und phpMyAdmin. phpMyAdmin wird nicht benötigt, aber es macht sich immer ganz gut es zu haben, für den Fall dass Du ein GUI für den Zugriff auf Deine MySQL Datenbank haben möchtest:

apt-get install apache2 apache2-mpm-prefork libapache2-mod-php5 php5 php5-gd php5-mysql php5-xsl phpmyadmin

Richte danach Deinen Browser auf http://192.168.0.100/phpmyadmin/ um zu überprüfen, ob phpMyAdmin funktioniert. Wenn Du etwas in der Art siehst, ist alles in Ordnung:

4 Konfiguriation von PHP

Da Simple Invoices in der Lage ist, PDF Rechnungen zu erstellen, solltest Du mindestens 24MB Arbeitsspeicher für PHP bereitstellen. Daher öffnen wir /etc/php5/apache2/php.ini und setzen memory_limit auf 24M:

vi /etc/php5/apache2/php.ini
[...]
;;;;;;;;;;;;;;;;;;; ; Resource Limits ; ;;;;;;;;;;;;;;;;;;; max_execution_time = 30 ; Maximum execution time of each script, in seconds max_input_time = 60 ; Maximum amount of time each script may spend parsing request data memory_limit = 24M ; Maximum amount of memory a script may consume (16MB) [...]
Starte danach Apache neu (starte auch neu, wenn Du php.ini nicht ändern musstest - wir müssen es einmal neu starten damit die GD2 und XSL Module, die wir im vorherigen Kapitel installiert haben, aktiviert werden):

/etc/init.d/apache2 restart

Sofern Du in Deiner Apache Installation nicht bereits virtuelle Hosts erstellt hast, ist der Dokumenten Root der Standard Website /var/www. Wir erstellen nun eine kleine PHP Datei (info.php) in diesem Verzeichnis (wenn Du virtuelle Hosts erstellt hast, platziere sie in einem der virtuellen Hosts, das PHP aktiviert hat) und rufen sie in einem Browser ab. Die Datei wird eine Menge nützlicher Angaben über unsere PHP Installation anzeigen, wie zum Beispiel die installierte PHP Version.

vi /var/www/info.php


<?php
phpinfo(); ?>
Nun rufen wir diese Datei in einem Browser auf (z.B. http://192.168.0.100/info.php):


Wenn Du runter scrollst, siehst Du nun die gd und xsl Module (wenn nicht, ist etwas schief gelaufen):


5 Erstellen einer Datenbank für Simple Invoices

Bevor wir Simple Invoices installieren, erstellen wir eine MySQL Datenbank namens simpleinvoices und einen MySQL Benutzer (mit der gleichen Bezeichnung simpleinvoices):

mysql -u root -p


CREATE DATABASE simpleinvoices;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON simpleinvoices.* TO 'simpleinvoices'@'localhost' IDENTIFIED BY 'simpleinvoicessqlpassword';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON simpleinvoices.* TO 'simpleinvoices'@'localhost.localdomain' IDENTIFIED BY 'simpleinvoicessqlpassword';
FLUSH PRIVILEGES;

Ersetze den String simpleinvoicessqlpassword mit einem Passwort Deiner Wahl für den MySQL Benutzer simpleinvoices.

quit;

Wie Dir vielleicht aufgefallen ist, verlassen wir die MySQL Kommandozeile mit dem quit; Befehl und sind wieder in der Linux Kommandozeile.

6 Installation von Simple Invoices

Gehe nun zur Simple Invoices Website und zieh Dir eine Kopie der Software und lade sie auf Dein Debian System wie folgt (ich lade sie in das /tmp Verzeichnis):

cd /tmp
wget http://kent.dl.sourceforge.net/sourceforge/simpleinvoices/simpleinvoices-20070525.zip

Das Paket ist im .zip Format, also müssen wir unzip installieren, damit wir die Software dekomprimieren können:

apt-get install unzip

Nun können wir das Simple Invoices Paket dekomprimieren:

unzip simpleinvoices-20070525.zip

Somit erstellen wir ein Verzeichnis simpleinvoices, welches alle anderen Dateien beinhaltet. Jetzt verschieben wir dieses simpleinvoices Verzeichnis zum Dokumenten Root unserer Website (wie ich bereits erwähnt habe, verwende ich hier den Standard Dokumenten Root /var/www - falls Deiner davon abweicht, passe die Befehle dieser Anleitung an Deine Wünsche an):

mv simpleinvoices /var/www/

Als Nächstes erstellen wir die benötigten Datenbanktabellen in unserer simpleinvoices Datenbank. Simple Invoices hat zwei MySQL Dumps, einen für MySQL 4.1 und aufwärts und einen für alle älteren MySQL Versionen. Da wir zuvor MySQL 5.0 installiert haben, nutzen wir den Dump für Mysql 4.1 und die weiteren Versionen:

cd /var/www/simpleinvoices
mysql -h localhost -u simpleinvoices -psimpleinvoicessqlpassword simpleinvoices < SimpleInvoices.sql

Ersetze simpleinvoicessqlpassword mit Deinem eigenen Passwort für den MySQL Benutzer simpleinvoices. Bitte beachte, dass zwischen -p und dem Passwort kein Leerraum sein darf!

Danach können wir den MySQL Dumps löschen, der mit Simple Invoices einherging:

rm -f SimpleInvoices*.sql


Nun müssen wir Simple Invoices unsere Datenbank-Einstellungen mitteilen. Öffne /var/www/simpleinvoices/config/config.php und vergewissere Dich, dass Du die richtigen Datenbank-Einstellungen eingibst:

vi /var/www/simpleinvoices/config/config.php


[...]
/*Enter your database information */ $db_host = "localhost"; $db_name = "simpleinvoices"; $db_user = "simpleinvoices"; $db_password = "simpleinvoicessqlpassword"; [...]
Als Nächstes müssen wir veranlassen, dass die Verzeichnisse cache und pdf/fpdf/* vom Apache Benutzer und der Gruppe (www-data auf Debian) beschrieben werden können:

chown www-data:www-data /var/www/simpleinvoices/cache
chown www-data:www-data /var/www/simpleinvoices/pdf/fpdf/*

Nun testen wir, ob das Erstellen von PDF Dateien funktioniert. Richte Deinen Browser auf http://192.168.0.100/simpleinvoices/pdf. Folgende Seite müsstest Du sehen:


Scrolle runter und klicke auf Convert File:


Simple Invoices versucht nun die Google Homepage runter zu laden und sie in eine PDF Datei umzuwandeln. Wenn alles gut geht, solltest Du etwas ähnliches wie das erhalten:


Wenn Du auf einen Fehler wie diesen stößt:

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 4864 bytes) in /var/www/simpleinvoices/pdf/filter.data.html2xhtml.class.php on line 8

musst Du den Speicher von PHP erhöhen, wie in Kapitel vier gezeigt wurde, starte Apache neu und versuche es noch einmal.

Letztendlich müssen wir veranlassen, dass das database_backups Verzeichnis vom Apache Benutzer und der Gruppe beschrieben werden kann:

chown www-data:www-data /var/www/simpleinvoices/database_backups


6.1 Authentifizierung einschalten

Simple Invoices ist nun installiert. Jedoch kann jeder darauf zugreifen, der die URL kennt. Das ist wahrscheinlich nicht das, was Du möchtest - nur Du solltest autorisiert sein, Rechnungen zu erstellen und zu verwalten. Daher schalten wir die Authentifizierung in Simple Invoices ein. Zuerst öffnen wir /var/www/simpleinvoices/include/include_auth.php und entfernen die Kommentarzeichen (/* and */) sodass es wie folgt aussieht:

vi /var/www/simpleinvoices/include/include_auth.php


<?php
//To turn authentification on uncomment (remove the /* and */) the lines below if ($_GET['location'] == 'pdf' ) { include('../include/auth/auth.php'); } else { include('./include/auth/auth.php'); } ?>
Dann melden wir uns in unserer simpleinvoices MySQL Datenbank an:

mysql -u root -p

USE simpleinvoices;

Dort erstellen wir eine neue Tabelle si_users:

CREATE TABLE si_users (
user_id int(11) NOT NULL AUTO_INCREMENT,
user_email VARCHAR(100) NOT NULL,
user_name VARCHAR(100) NOT NULL,
user_group VARCHAR(10) NOT NULL,
user_domain VARCHAR(10) NOT NULL,
user_password CHAR(32) NOT NULL,
PRIMARY KEY (user_id)
);

Dann fügen wir dieser Tabelle einen Admin Benutzer wie folgt hinzu:

INSERT INTO si_users (user_id, user_email, user_name, user_group, user_domain, user_password) VALUES ('','admin@simpleinvoices.org','admin','1','1', md5('adminpassword'));

Ersetze die E-Mail Adresse, den Benutzernamen und das Passwort mit Werten Deiner Wahl.

Zum Schluss erstellen wir die Tabelle si_auth_challenges und verlassen die MySQL Kommandozeile:

CREATE TABLE `si_auth_challenges` (
`challenges_key` INT( 11 ) NOT NULL ,
`challenges_timestamp` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

quit;

Das war's. Richte nun Deinen Browser auf http://192.168.0.100/simpleinvoices und folgendes Login Formular sollte erscheinen:


Melde Dich mit der E-Mail Adresse und dem Passwort an, das Du gerade in die si_users Tabelle eingegeben hast.

Nach dem Login kannst Du anfangen mit Simple Invoices zu arbeiten:


Falls Du Hilfe bei der Anwendung von Simple Invoices benötigen solltest, sieh Dir die Simple Invoices Documentation an.

7 Links