Server/Dienste automatisch starten

Thursday, 14. June 2007

In diesem Beispiel gehen wir davon aus, dass der Server (CSS Server, Teamspeak Server, … ) bereits eingerichtet ist. Es geht lediglich darum diesen über einen Restart des Servers hinweg am laufen zu halten.
Des weiteren sollte man derartige Server !! niemals !! als >>root<< ausführen. Dies würde ein hohes Sicherheitsrisiko bedeuten.
(Die Idee: sollte jemand eine Sicherheitslücke im angebotenen Dienst ausnutzen können und Zugriff auf den Server erhalten, so bleiben ihm nur \”User-Rechte\” also praktisch gar keine)

Bsp.: (anhand von Teamspeak)
Wir haben also bereits einen user namens teamspeak erstellt und ihm ein passwort gegeben und ggf. ein \”home\” Verzeichnis erstellt in welchem wird den Server installiert haben.

useradd teamspeak
passwd teamspeak
mkdir /home/teamspeak
...

Zunächst wird das Skript \”/etc/init.d/teamspeak\” erstellt und ausführbar gemacht:


cd /etc/init.d
touch teamspeak
chmod +x teamspeak

In diese Datei schreiben wir folgenden Inhalt:
(öffnen mit einem Editor eurer Wahl)

#!/bin/bash
# User which will run the teamspeak server
USER=teamspeak
# The installation directory of the teamspeak server
DIR=/home/teamspeak/tsserver
# Run the start script
su -c "cd $DIR && $DIR/teamspeak2-server_startscript $1" - $USER

Nun kann der Server gestartet werden:


/etc/init.d/teamspeak start

Wenn das Skript als root ausgeführt wird, wird der Teamspeak-Server automatisch als Benutzer \”teamspeak\” gestartet. Andere Systembenutzer werden dazu aufgefordert, das anfangs vergebene Kennwort für den Teamspeak-Benutzer einzugeben, um den Server zu starten.

Damit der TS-Server auch beim Neustart des Systems (Runlevel 3) gestartet wird, muss ein Link auf das Startscript im Verzeichnis /etc/rc3.d und im Verzeichnis /etc/rc0.d/ eingerichtet werden:  (unter Ubuntu ist das Runlevel 2 zu benutzen!)

cd /etc/rc3.d/
ln -s ../init.d/teamspeak S99teamspeak
cd /etc/rc0.d/
ln -s ../init.d/teamspeak K99teamspeak

Die Ziffer 99 ist absichtlich hoch gewählt damit der Dienst in der Bootreihenfolge ganz hinten steht und zuletzt gestartet wird.

Amarok & MySQL

Wednesday, 6. June 2007

Was liegt das Problem?

Die Daten liegen auf einer externen Platte? Amarok schreibt relative Pfade nach belieben?

./ bedeutet dann /home/. oder doch /. oder viellecht netterweise /home/user/. manchmal auch /home/user/music (sofern das mein Musikverzeichnis ist)

Ja.. dann gibt es noch die Device ID : Nr. “2” ist also beim letzten mal in /home gemountet worden – wo ist das Device mit der Nummer 2 diesmal? /home/flexible/music ? das ganze mit fixierten Datenbankeinträgen ./xapient/music/….

Das bedeutet nun das Amarok meine Files unter /home/flexible/music/xapient/music/ sucht und selbstverständlich nichts findet.

Was kann man tun?

Man importiert die alte Datenbank. Trägt die Zugangsdaten korrekt in Amarok ein. (Das Library bleibt leer, da ja alle Verweise fehlerhaft sind – sofern die Device Id zufällig noch stimmt ist das Library gefüllt, aber die Links zeigen ins leere… die Device Id’s des neuen Systems werden aber in die Datenbank eingetragen)

Nun kann man phpmyadmin starten (sofern installiert) sich als User der entsprechenden Amarokdatenbank anmelden und dort mittels

————————-

UPDATE embed SET url = REPLACE( url, “./xapient/music/”, “./”)

————————-

ein sogenannes “string replace” machen.. Das jedoch nicht nur für die Tabelle “embed” und das field “url” sondern bei allen folgenden Tabellen [directories,embed,images,lyrics,statistics,tags,uniqueid] auch für die Fields “dir” und “path” (sofern vorhanden)

Danach editiert man noch in der Tabelle “Devices” den Eintrag der DeviceID und korrigiert diesen insofern, dass das externe Device auf dem die Daten liegen nun die DeviceId bekommt auf die sämtliche Einträge verweisen (in meinem Fall “2”)

Beim nächsten Start von Amarok sollte dieser die Musikdateien nun wieder finden.