Der neue Server: Teil 3 svn, mysql, postgres

Mit diesem Beitrag beginnt nun eine kleine Reihe, wie man verschiedene Serverdienste installiert und konfiguriert. Angefangen wird mit dem Versionskontrollsystem svn (auch unter dem Namen subversion bekannt) und zwei verschiedenen Datenbanksystemen: mysql und postgreSQL.

subversion

SVN wird über den Internet-Superserver xinetd betrieben und hört standardmäßig auf Port 3690. Die Repositories samt ihrer Konfigurationsdateien werden später unter “/var/svn” liegen und der Server wird unter dem Benutzer “svn” laufen.

Zunächst installieren wir xinetd und svn:

aptitude install xinetd subversion

Danach erstellen wir den svn-Benutzer:

adduser --system --group --no-create-home svn

Jetzt registrieren wir Port 3690 für svn:

/etc/services:

# Local services
svn 3690/tcp # subversion
svn 3690/udp # subversion

… erstellen den Ordner “/var/svn”:

mkdir /var/svn/
chown svn: /var/svn/
chmod 755 /var/svn/

… und konfigurieren xinetd, damit er auf Port 3690 Verbindungen für svn entgegennimmt und sie an den svnserve-Server weitergibt:

/etc/xinetd.d/svn

# default: on
# description: Subversion server process
service svn
{
    disable             = no
    socket_type         = stream
    protocol            = tcp
    user                = svn
    wait                = no
    port                = 3690
    server              = /usr/bin/svnserve
    server_args         = -i -r /var/svn/
}

Nun kann man mit dem telnet-Befehl von einem anderen Rechner aus testen, ob svn auf Port 3690 lauscht:

telnet SERVER_IP 3690

Die Ausgabe sollte dann so aussehn:

Trying SERVER_IP...
Connected to SERVER_IP.
Escape character is '^]'.
( success ( 2 2 ( ) ( edit-pipeline svndiff1 absent-entries commit-revprops depth log-revprops partial-replay ) ) ) Connection closed by foreign host.

Mittels des svnadmin-Tools kann man nun Repositories anlegen, verändern, löschen, …

svnadmin create --fs-type fsfs /var/svn/testRepo

Was man mit svn alles anstellen kann, wird hier sehr ausführlich beschrieben: http://svnbook.red-bean.com/. Dieses Buch ist wohl das Standardwerk, wenn es um svn geht und ein weiterer Stern am O’Reilly-Himmel und das Tollste ist: die Online-Version kostet nicht einmal was.

mysql

Man mag von mysql halten, was man will, doch es ist (leider) das Standard-Datenbanksystem für Web-Anwendungen (ein paar Gedanken zu mysql kann man hier finden). Der Vorteil von mysql ist, dass es sehr einfach in der Installation und Handhabung ist, die Nachteile…. naja, findets selbst heraus.

aptitude install mysql-server

Während der Installation wird man nach einem Passwort für den mysql-root Benutzer gefragt. Danach kann man ggf. noch die Konfiguration anpassen (liegt unter “/etc/mysql/my.cnf“). Ein gutes Beispiel für eine mysql-Konfiguration kann man hier finden: http://forum.rootforum.de/viewtopic.php?f=104&t=36343. Eine Anmerkung: wenn man die empfohlene Konfiguration auf rootforum.de benutzt und über phpMyAdmin auf die Datenbank zugreifen will, sollte man die Zeile “skip_show_database” auskommentieren, ansonsten sehen die Benutzer (root ausgenommen) ihre Datenbanken nicht.

Da wir nicht nur eine optimierte Installation, sondern auch eine sichere wollen, führen wir nun noch das “mysql_secure_installation”-Skript aus und beantworten alle Fragen, abgesehen von der über das mysql-root Passwort, mit der Standardantwort.

Quellen:

http://forum.rootforum.de/viewtopic.php?f=104&t=36343

postgres

Kommen wir zu einem richtigen Datenbanksystem: postgres. postgres ist ein freies, quelloffenes (open-source auf “Neudeutsch”) Datenbanksystem, welches komplett ANSI-SQL92 konform ist (das kann manch kommerzielles Datenbanksystem nicht einmal von sich behaupten), unterstützt unter anderem ACID-Transaktionen und Stored Procedures und weitere fortgeschrittene Datenbank-Konzepte. Es erfreut sich einer immer größer werdenden Beliebtheit und löst mysql in vielen Gebieten ab. Dennoch will ich hier nicht zu viel Werbung machen. Jeder sollte sich selbst Gedanken über das Datenbanksystem machen, das er einsetzt und warum er es einsetzt. Doch wenn man ein Projekt hochziehen will, bei dem man auf fortschrittliche Datenbank-Konzepte zurückgreift, bleiben im open-source Umfeld nicht viele Lösungen übrig.
Die Installation gestaltet sich ähnlich einfach wie bei mysql:

aptitude install postgresql-8.3

Die Konfiguration gestaltet sich etwas anders als die von mysql. Sie ist im wesentlichen mehr an Oracle angelehnt. Über die Datei “pg_hba.conf” kann man Zugriffsrechte vergeben. Wenn man einen Benutzer anlegt, wird standardmäßig auch eine Datenbank mit dem selben Namen erstellt, autoincrement-Werte werden etwas anders definiert als bei mysql, des Weiteren heißen einige Datentypen geringfügig anders, doch die postgres-Dokumentation hilft hier weiter: http://www.postgresql.org/docs/current/static/.
Beispielhaft hier noch Code, wie man einen Benutzer anlegen kann:

su - postgres
createuser -P

Danach wird man nach dem Passwort und der Benutzerrolle gefragt und man kann mit folgendem Code auf die postgres-Konsole zugreifen:

psql -W <Tabellenname>

In einem weiteren Teil gehe ich dann darauf ein, wie man phpMyAdmin und phpPgAdmin einrichtet.