Beiträge von Sebbo

    Okay, das sollte aber eigentlich funktionieren. Ich habe das exakt gleiche System bei mir und ich krieg gar keine Fehlermeldungen bzw. Warnungen.


    Kannst du den "insserv" Befehl bitte nochmal ausführen und dann testen, ob das Skript funktioniert?

    Code
    cd /etc/init.d/ && insserv ts3server && cd - > /dev/null


    Code
    service ts3server status


    Weil jetzt hast du den Pfad im Skript ja angepasst, daher sollte wenigstens die Funktionalität gegeben sein und er dir zurück melden, ob er läuft oder nicht. Wenn die Warnungen beim insserv Befehl wieder kommen, ignoriere die einfach erstmal. Das Skripte sollte dennoch funktionieren. Ich kann mir nur gerade nicht erklären, warum du die Meldung kriegst und ich nicht... ?(

    Hallo,


    dein Befehl kann gar nicht funktionieren, da die Tabelle wie folgt aufgebaut ist:

    Code
    mysql> DESCRIBE server_properties;+-----------+------------------+------+-----+---------+-------+| Field     | Type             | Null | Key | Default | Extra |+-----------+------------------+------+-----+---------+-------+| server_id | int(10) unsigned | YES  | MUL | NULL    |       || id        | int(10) unsigned | YES  | MUL | NULL    |       || ident     | varchar(100)     | NO   |     | NULL    |       || value     | varchar(2048)    | YES  |     | NULL    |       |+-----------+------------------+------+-----+---------+-------+4 rows in set (0.00 sec)


    Das was du suchst, sieht in der Tabelle so aus:

    Code
    mysql> SELECT * FROM server_properties WHERE ident="virtualserver_download_quota";+-----------+------+------------------------------+----------------------+| server_id | id   | ident                        | value                |+-----------+------+------------------------------+----------------------+|         3 |    3 | virtualserver_download_quota | 18446744073709551615 ||         0 |    0 | virtualserver_download_quota | 18446744073709551615 ||         5 |    5 | virtualserver_download_quota | 18446744073709551615 ||         1 |    1 | virtualserver_download_quota | 18446744073709551615 ||         4 |    4 | virtualserver_download_quota | 18446744073709551615 ||         2 |    2 | virtualserver_download_quota | 18446744073709551615 |+-----------+------+------------------------------+----------------------+6 rows in set (0.00 sec)


    Daher heißt dein Befehl auch wie folgt:

    SQL
    UPDATE server_properties SET value="0" WHERE ident="virtualserver_download_quota";


    Dieser Befehl setzt dann für ALLE virtuellen Server die Download-Quota auf 0. Wenn du es nur für spezielle, also ein paar virtuelle Server gesetzt haben möchtest, musst du den Befehl noch etwas optimieren. Zum Beispiel willst du alle virtuellen Server, die eine kleinere SID als 3 haben:

    SQL
    UPDATE server_properties SET value="0" WHERE ident="virtualserver_download_quota" AND server_id<3;

    nenne deine Admin Gruppe einfach genauso wie die Gruppe der normalen User + ein Leerzeichen.


    Auch eine gute Idee, allerdings hat das mit der Zeit einen Haken: Du weist irgendwann nie, welche der beiden Gruppen deine Admin-Gruppe ist und welche nicht.


    Daher musst du dann jedesmal in die einzelnen Rechte der Servergruppe schauen und überprüfen, welche Werte/Rechte die Gruppe hat. Finde ich ehrlich gesagt auch etwas unschön.^^

    Hallo,


    in diesem Tutorial möchte ich euch gerne zeigen, wie ihr euren TeamSpeak Server schnell, einfach und ohne Probleme von einer SQLite Datenbank auf eine MySQL bzw. MariaDB Datenbank migrieren könnt. Beachtet bitte, dass die Migration eine gewisse Downtime der virtuellen TeamSpeak Server in Anspruch nimmt.


    Inhaltsverzeichnis

    • Vorbereitungen
    • Migration

    Bevor wir die Migration starten, bereiten wir die neue Datenbank erstmal soweit vor, dass die Migration selbst dann nicht so lange dauert und wir die Downtime möglichst gering halten können.


    Ich habe zu Test-Zwecken einen TeamSpeak Server auf Basis von SQLite installiert und ein paar Channel erstellt, sowie Dateien hochgeladen:



    • Vorbereitungen
      Aktuell nutzen wir die SQLite Datenbank und mussten hierfür auch nichts installieren. Für die neue Datenbank müssen wir jedoch eine installieren. Je nachdem, welche ihr nutzen wollt, müsst ihr bei allen folgenden Schritten entsprechend "mysql" oder "mariadb" nutzen. Ich werde das ganze auf Basis der MariaDB zeigen, da die neuen TeamSpeak Server Versionen ab Version 3.0.11 darauf aufsetzen werden.


      Zu erst installieren wir die Datenbank und alle dazugehörigen Softwarepakete:

      Code
      aptitude install mariadb-server-5.5


      Hinweis: Hierfür benötigt ihr - jedenfalls unter Debian Wheezy 7.6 - den SID Repository: deb Index of /debian sid main (Wenn ihr den Repository nachträglich hinzufügt, solltet ihr jetzt erstmal euer System upgraden, da es sonst zu ein paar Problemen führen kann.)


      Während der Installation werdet ihr auch nach einem "root" Passwort gefragt. Das ist NICHT das root Passwort für euren Server, sondern das für die Datenbank!


      Sobald das fertig ist, sollte man sich auf die Datenbank verbinden können. Das prüfen wir einfach mal:

      Code
      mysql -u root -p


      Nach der Passwort-Eingabe sollten wir dann etwas sehen, was dem hier ähnelt:


      Als nächstes legen wir uns eine leere Datenbank an und weisen ihm einen Benutzer zu:

      Code
      CREATE DATABASE teamspeak;


      Hinweis: Neue Datenbank heißt "teamspeak".

      Code
      GRANT ALL PRIVILEGES ON teamspeak.* TO 'teamspeak'@'%' IDENTIFIED BY 'geheimes$Passwort123';


      Hinweis: "teamspeak.*" heißt "Datenbankname.ALLE_TABELLEN". Wir geben alle Rechte dem User "teamspeak", welcher sich von überall aus einloggen darf (%) - sollte er nur von der lokalen Maschine sich einloggen dürfen, muss hier "localhost" anstatts des %-Zeichens stehen. "geheimes$Passwor123" ist das Passwort, welches dann für den Benutzer gilt.

      Code
      FLUSH PRIVILEGES;


      Hinweis: Wir müssen danach die Rechte nochmal laden, damit diese wirklich wirksam werden.


      Jetzt gehen wir mit Hilfe des Befehls "exit" oder der Tastenkombination "Strg" und "D" aus der MySQL bzw. MariaDB Shell raus und versuchen uns als der neu angelegte Benutzer auf die Datenbank ein zu loggen:

      Code
      mysql -u teamspeak -p teamspeak


      Hinweis: "-u teamspeak" ist der Benutzername und das letzte "teamspeak" ist der Datenbankname.


      Bei der MariaDB sieht man das gut, ob es geklappt hat oder nicht:


      Gut. Das hat geklappt. Als nächstes erstellen wir - falls noch nicht vorhanden - unsere Konfigurationsdateien für unseren TeamSpeak Server, sodass er beim nächsten Start die MySQL bzw. MariaDB nutzen kann. Logge dich hierfür als der System-Benutzer ein, der den TeamSpeak Server verwaltet. Bei mir heißt der "teamspeak":

      Code
      su - teamspeak


      Zu erst erstellen wir unsere ts3server.ini im root-Verzeichnis des TeamSpeak 3 Servers, welche wie folgt aussieht:

      Code
      $ cat ts3server.inimachine_id=1default_voice_port=9987voice_ip=192.168.178.212licensepath=filetransfer_port=30033filetransfer_ip=0.0.0.0query_port=10011query_ip=192.168.178.212query_ip_whitelist=query_ip_whitelist.txtquery_ip_blacklist=query_ip_blacklist.txtdbplugin=ts3db_mariadbdbpluginparameter=ts3db_mariadb.inidbsqlpath=sql/dbsqlcreatepath=create_mariadb/dblogkeepdays=90logpath=logslogquerycommands=0dbclientkeepdays=30


      Dann benötigen wir noch die Konfigurationsdatei für die SQL-Verbindung:

      Code
      $ cat ts3db_mariadb.ini[config]host=127.0.0.1port=3306username=teamspeakpassword=geheimes$Passwort123database=teamspeaksocket=


      Jetzt müssen wir noch überprüfen, ob die benötigte Bibliothek vorhanden ist:

      Code
      ldd libts3db_mariadb.so


      bzw.

      Code
      ldd libts3db_mysql.so


      Für detaillierte Informationen hierzu solltet ihr euch diese Themen bzw. Beiträge anschauen:


      Perfekt. Jetzt haben wir unsere Konfigurationsdateien fertig und eine leere Datenbank angelegt. Der nächste Schritt wird etwas schwieriger. Wir müssen jetzt irgendwie die Daten aus der SQLite Datenbank in die neue MySQL bzw. MariaDB Datenbank kriegen. Laut dem englisch-sprachigen TeamSpeak Forum ist das nicht möglich: howto convert database SQLITE to MySQL?
      Ich zeige euch, wie das aber trotzdem geht. ;)


      PS: Wer das Paket "sqlite3" noch nicht installiert hat, muss das jetzt tun, denn das wird zum exportieren der Daten benötigt:

      Code
      aptitude install sqlite3


    • Migration
      ACHTUNG: Ab jetzt wird es Downtime geben! Wie lange hängt davon ab, wie der Migrationsprozess verläuft.


      Zu erst bringen wir die aktuelle Datenbank in einen konsistenten Zustand. Hierfür müssen wir einfach nur die TeamSpeak Instanz stoppen:

      Code
      ./ts3server_startscript.sh stop


      Als nächstes generieren wir uns einen Dump unserer aktuellen Datenbank, um diese dann in die neue Datenbank importieren zu können:

      Code
      sqlite3 ts3server.sqlitedb .dump > db_dump


      Da SQLite andere Syntaxe verwendet, müssen wir den Dump erst noch anpassen. Hierfür habe ich mal zwei Befehle gebastelt, welche das ganze sehr schnell erledigen:

      Code
      sed 's/\PRAGMA foreign_keys=OFF;//g' db_dump | sed 's/\BEGIN TRANSACTION;//g' | sed 's/\COMMIT;//g' | sed '/sqlite_sequence/d' | sed 's/AUTOINCREMENT/AUTO_INCREMENT/' | tr -d '"' > temp_dump


      Code
      tail -n +3 temp_dump > db_dump_converted


      Jetzt müssen wir nur noch eine einzige Zeile anpassen, damit diese auch funktioniert. Es gibt eine Zeile, die die Tabelle "tokens" erstellt. Hier fehlt die Größe für das Feld "token_customset". Das setzen wir einfach manuell. :)


      Wenn man den TS mit einer MySQL/MariaDB Datenbank aufgesetzt hat, wird man feststellen, dass der Wert auf 255 gesetzt ist, daher werden auch wir den einfach nutzen:

      Code
      mysql> DESCRIBE tokens;+-------------------+------------------+------+-----+---------+-------+| Field             | Type             | Null | Key | Default | Extra |+-------------------+------------------+------+-----+---------+-------+| server_id         | int(10) unsigned | YES  |     | NULL    |       || token_key         | varchar(50)      | NO   |     | NULL    |       || token_type        | int(11)          | YES  |     | NULL    |       || token_id1         | int(10) unsigned | YES  |     | NULL    |       || token_id2         | int(10) unsigned | YES  |     | NULL    |       || token_created     | int(10) unsigned | YES  |     | NULL    |       || token_description | varchar(255)     | YES  |     | NULL    |       || token_customset   | varchar(255)     | YES  |     | NULL    |       |+-------------------+------------------+------+-----+---------+-------+8 rows in set (0.01 sec)


      Öffnet einfach den konvertierten Dump mit einem Editor eurer Wahl - am besten vi oder vim - und passt die Zeile an:

      Code
      vim db_dump_converted


      Bei vi/vim könnt ihr mit Hilfe von folgender Eingabe direkt zur entsprechenden Zeile springen:

      Code
      /CREATE TABLE token


      Ihr solltet dann folgende Zeile sehen:

      Zitat

      CREATE TABLE tokens ( server_id integer unsigned, token_key varchar(50) NOT NULL, token_type integer, token_id1 integer unsigned, token_id2 integer unsigned, token_created integer unsigned, token_description varchar(255), token_customset varchar);


      Diese ändern wir wie folgt ab:

      Zitat

      CREATE TABLE tokens ( server_id integer unsigned, token_key varchar(50) NOT NULL, token_type integer, token_id1 integer unsigned, token_id2 integer unsigned, token_created integer unsigned, token_description varchar(255), token_customset varchar(255));


      Wir müssen nur das rot markierte hinzufügen. :)


      Diesen konvertierten Dump spielen wir jetzt in die neue Datenbank ein:

      Code
      mysql -u teamspeak -p teamspeak < db_dump_converted


      Hinweis: Das verlangte Passwort ist das für den Datenbank-Benutzer "teamspeak" in diesem Fall!


      Nun verifizieren wir das ganze:

      Code
      mysql -u teamspeak -p teamspeak


      Code
      SHOW TABLES;


      Und siehe da: Unsere Tabellen sind alle vorhanden:


      Aber sind auch die Inhalte übernommen worden? Suchen wir einfach mal nach einem Eintrag, der drin stehen muss: Ihr selber. ;)

      SQL
      SELECT client_nickname,client_id,server_id,client_lastconnected,client_lastip FROM clients WHERE client_nickname="Sebbo";


      Sollte sowas hier zurück liefern:

      Code
      +-----------------+-----------+-----------+----------------------+-----------------+| client_nickname | client_id | server_id | client_lastconnected | client_lastip   |+-----------------+-----------+-----------+----------------------+-----------------+| Sebbo           |         2 |         1 |           1411300550 | 192.168.178.201 |+-----------------+-----------+-----------+----------------------+-----------------+1 row in set (0.00 sec)


      Ebenso suchen wir mal unseren virtuellen Server:

      SQL
      SELECT * FROM server_properties WHERE ident="virtualserver_name" AND value="Test Server";


      Sieht dann zum Beispiel so aus:

      Code
      +-----------+------+--------------------+-------------+| server_id | id   | ident              | value       |+-----------+------+--------------------+-------------+|         1 |    1 | virtualserver_name | Test Server |+-----------+------+--------------------+-------------+1 row in set (0.00 sec)


      Wenn man diese zwei Sachen findet, sollte alles andere eigentlich auch passen. Zudem haben wir beim importieren auch keinen Fehler erhalten. :)


      Jetzt können wir die Dumps auch wieder löschen:

      Code
      rm db_dump temp_dump db_dump_converted


      Bevor wir jetzt allerdings den Server starten, müssen wir noch ein paar Eigenschaften der virtuellen Server anpassen, sonst werden existierende Server ignoriert und ein neuer Standard-Server eingerichtet. Ändert man das nicht, sieht die Datenbank danach so aus, wenn man einen virtuellen Server davor hatte:

      Code
      MariaDB [teamspeak]> SELECT * FROM servers;+-----------+-------------+------------------+-------------------+---------------------+-----------------------+---------------------+-----------------------+| server_id | server_port | server_autostart | server_machine_id | server_month_upload | server_month_download | server_total_upload | server_total_download |+-----------+-------------+------------------+-------------------+---------------------+-----------------------+---------------------+-----------------------+|         1 |        9987 |                1 |                   |              976430 |                     0 |              976430 |                     0 ||         2 |        9987 |                1 | 1                 |                   0 |                     0 |                   0 |                     0 |+-----------+-------------+------------------+-------------------+---------------------+-----------------------+---------------------+-----------------------+2 rows in set (0.00 sec)


      Wir wollen aber keinen neuen, sondern nur unsere(n) bereits existierende(n), daher passen wir die Werte einfach an. :)


      In unserer "ts3server.ini" steht eine Variable namens "machine_id" mit dem Wert 1. Diesen Wert tragen wir jetzt bei allen virtuellen Servern nachträglich ein:

      SQL
      UPDATE servers SET server_machine_id='1' WHERE server_machine_id="";


      Der Befehl sucht quasi alle virtuellen Server, wo keine machine_id gesetzt ist und setzt dann dort überall den Wert 1.


      Gut. Jetzt passen wir noch unser Start-Skript an, sodass es die Konfigurationsdateien verwendet. Hierfür editieren wir das "ts3server_startscript.sh" und ersetzen folgende Zeile...

      Code
      COMMANDLINE_PARAMETERS="${2}" #add any command line parameters you want to pass here


      ...durch diese:

      Code
      COMMANDLINE_PARAMETERS="inifile=ts3server.ini" #add any command line parameters you want to pass here


      WICHTIG: Wenn ihr jetzt von der Version 3.0.10.3 auf die Version 3.0.11 zusätzlich wechselt, müsst ihr noch die SQL-Fixes einspielen, die der Version 3.0.11 beiliegen. Hierfür nutzt ihr die beiden nachfolgenden Befehle:

      Code
      mysql --user=<DB_BENUTZERNAME> --password=<DB_PASSWORT> <DB_NAME> < <TEAMSPEAK_VERZEICHNIS>/sql/updates_and_fixes/convert_mysql_to_mariadb.sqlmysql --user=<DB_BENUTZERNAME> --password=<DB_PASSWORT> <DB_NAME> < <TEAMSPEAK_VERZEICHNIS>/sql/updates_and_fixes/mariadb_fix_latin_utf8.sql


      Sieht dann zum Beispiel so aus:

      Code
      mysql --user=teamspeak --password=sehrGeheimes$Passwort!2014 teamspeak_db < /home/teamspeak/sql/updates_and_fixes/convert_mysql_to_mariadb.sqlmysql --user=teamspeak --password=sehrGeheimes$Passwort!2014 teamspeak_db < /home/teamspeak/sql/updates_and_fixes/mariadb_fix_latin_utf8.sql


      Nach diesem Schritt starten wir unseren TeamSpeak Server wieder:

      Code
      ./ts3server_startscript.sh start


      Nach einem Blick in die Log-Datei der Instanz, sollte er jetzt auch mit dem entsprechend richtigen Plugin hochgekommen sein:

      Zitat

      $ cat logs/ts3server_2014-09-21__14_46_58.442879_0.log
      [...]
      2014-09-21 14:46:58.444390|INFO |DatabaseQuery | | dbPlugin name: MariaDB plugin, (c)TeamSpeak Systems GmbH
      [...]


      Wenn wir uns jetzt auf unseren TeamSpeak Server wieder verbinden, sollte auch alles wieder so erscheinen und vor zu finden sein, wie vorher:

      Auch unsere Dateien finden sich wieder dort ein, wo wir sie vorher abgelegt hatten. :)

    Joa, so viel zur Migration von SQLite auf MySQL bzw. MariaDB: Es geht! ;)


    Sollte es Fragen geben, helfe ich gerne. Einfach hier als neuen Beitrag schreiben. Über Feedbacks freue ich mich natürlich auch. :)

    Hallo,

    PS: das Thema passt eher in den Forumbereich "Teamspeak3 => Programmierung" oder "Teamspeak3 Addons => Skripte/Scripts"


    exakt, deswegen habe ich es mal eben verschoben. ;)


    Ich persönlich stimme @Taikoso zu. Um nur eine einzige Zahle zu speichern, reicht eine Datei vollkommen aus. Die Datenbank wäre hierfür eindeutig zu aufwendig.

    Wenn ihr einen Proxy benötigt, um ins Internet zu gelangen, müsst ihr diesen jetzt eintragen.



    Anonym hin oder her: Nein, wir nehmen nicht an der Paketverwendungserfassung teil. Wenn ihr jedoch wollt, müsst ihr hier "Ja" wählen.



    Wir wollen einen Server einrichten, daher deaktivieren wir alles bis auf "Standard-Systemwerkzeuge" und aktivieren zusätzlich noch "SSH server", um später einfacher auf das System zugreifen zu können.



    Um das System später überhaupt booten, also starten zu können, müssen wir den Bootloader noch installieren. Da unsere Festplatte leer ist/war und kein anderes System - wie zum Beispiel Windows - auf der Festplatte gefunden, schlägt uns die Installation vor, den GRUB-Bootloader in den MBR (= Master Boot Record) zu schreiben. Dem stimmen wir zu, denn in der ersten Partition wird nach einem Bootloader geschaut, der dann das System startet bzw. angibt, wo er welche Dateien findet, damit das System startet. :)



    Das war es schon. Jetzt starten wir das System neu und entfernen die ISO bzw. die CD/DVD mit den Debian Installationsdateien.



    Wenn das System bootet, sollte man dann sowas hier sehen: Den GRUB-Bootloader



    Und letztendlich auch den Login-Screen:



    Herzlichen Glückwunsch! Jetzt ist dein Linux-Betriebssystem installiert und einsatzfähig.


    Wenn die ISO bzw. das Installationsmedium schon etwas älter war, sollte man es gleich noch aktualisieren. Hierfür gibt es bereits ein passendes und ausführliches Tutorial: Linux Debian Release Upgrade


    Wie bereits erwähnt gehabt, empfehle ich euch noch den Paketmanager "aptitude" zu installieren und zu nutzen. Wenn ihr ihn wollt, könnt ihr ihn euch wie folgt installieren:

    Code
    apt-get install aptitude


    Hinweis: Für diesen Befehl müsst ihr als "root" eingeloggt sein. Mit Hilfe des Befehls "su -" könnt ihr euch von eurem Benutzerlogin auf den root-Login einloggen.


    Fertig! Ich wünsche euch viel Spaß mit eurem Linux! ;)

    Weiter geht es mit der Passwortsetzung für den neuen Benutzer:


    Welches wir genauso wieder bestätigen:



    Die nächsten Schritte befassen sich mit der Partitionierung der Festplatte. Wir verwenden die gesamte Festplatte und richten LVM ein.


    LVM bedeutet "Logical Volume Manager" und virtualisiert die Festplatte quasi, sodass diese im laufenden Betrieb einfach verändert werden kann, indem man die Partition erweitert oder eine weitere Festplatte hinzufügt. :)


    Nachfolgend noch ein Auszug aus Wikipedia:

    Zitat von http://de.wikipedia.org/wiki/Logical_Volume_Manager

    Durch den LVM ist es möglich, dynamisch veränderbare Partitionen (Logical Volumes, kurz LV) zu bilden, die sich auch über mehrere Festplatten hinweg erstrecken können. Die Größe dieser virtuellen Datenträger lässt sich auch nach dem Anlegen eines Dateisystems noch ändern, selbst wenn schon Daten darin gespeichert wurden.


    Insgesamt bringt uns das ganze also nur Vorteile und daher sollte man nicht darauf verzichten. ;)



    Auf welche Festplatte soll Linux installiert werden? Ich habe hier nur eine, daher ist die Entscheidung sehr leicht gewesen. ;)



    Aus diversen Gründen sollte man nach Best Practise nicht alles auf eine Partition, sondern auf mehrere verteilen. Hier mal ein paar Gründe dafür:

    • Einfachere Möglichkeit das korrupte Dateisystem oder Betriebssystem zu reparieren
    • Bessere Performance, aufgrund des kleineren Dateisystems und der besseren Aufteilung der einzelnen Dateien
    • Höhere Sicherheit des Systems durch getrennte Home- und Betriebssystem-Partition
    • und vieles mehr

    Ein paar weitere Details hat auch The importance of Linux partitions - nixCraft zusammen gefasst.






    Als nächsten konfigurieren wir den Paketmanager, welcher später für die Software-Installationen, Deinstallationen, Updates und Upgrades, also die Verwaltung der ganzen Softwares zuständig ist.


    Wer die Softwares manuell downloadet, muss diese mit einem lokalen Paketmanger, wie zum Beispiel "dpkg" installieren. Wer Softwares jedoch direkt aus dem Internet suchen und installieren möchte, muss einen Paketmanager wie apt-get bzw. aptitude, yum oder Co. nutzen.


    Hier gibt es noch ein paar Infos speziell zu Debian: Die Debian GNU/Linux-FAQ - Die Debian-Paketverwaltungswerkzeuge


    Man merkt sich also folgendes:

    • Lokale Software-Verwaltung (Beispiel: dpkg)
      Diese Paketmanager können nur auf dem System vorhandene Software-Installationsdateien installieren und später verwalten.


    • "Quellbasierte" Software-Verwaltung (Beispiel: apt-get)
      Diese Paketmanager können mit Software-Installationsdateien rein gar nichts anfangen und beziehen ihre Softwares direkt aus dem Internet, um sie zu installieren bzw. aktualisieren.

    Tipp: Ich empfehle euch, den Paketmanager "aptitude" zu installieren. Der ist deutlich intelligenter als "apt-get" und kann auch Konflikte mit anderen Softwares bewerten, sowie lösen. apt-get kann und macht dies nicht - es macht einfach.



    Als nächstes wählen wir einen Download-Spiegel für unsere Softwares aus, der später immer verwendet wird. Welcher gewählt wird, ist egal. Auf allen Spiegeln/Servern liegt die gleiche Software drauf, da sie synchronisiert werden. Der eine oder andere traut vielleicht dem ein oder anderen nur mehr, daher kann man hier wählen. :)



    Im letzten Post geht es weiter...

    Hallo,


    in diesem Tutorial möchte ich gerne etwas grundlegendes zeigen, was man nicht nur unbedingt für einen TeamSpeak Server benötigt: Die Installation eines Linux Betriebssystems.


    Hier wird als Beispiel "Debian" installiert, welches man auf Debian -- Getting Debian downloaden kann. Ich persönlich empfehle die kleinste ISO zu nutzen, welche eine Netinstall mit meistens um die 222 MB ist. Die ISO heißt ungefähr so, wenn man sie gedownloadet hat: debian-7.6.0-amd64-netinst.iso


    Ich habe pro Schritt einen Screenshot gemacht. Schritte, die etwas Erklärung oder Hinweise benötigen, habe ich entsprechend vor dem Bild beschriftet. Nachdem ihr alle Schritte der Anleitung durch seid, habt ihr ein vollständiges Minimal-Linux-System vor euch, welches voll einsatzbereit und in Deutsch ist. :)


    Zu erst müssen wir die ISO bzw. CD/DVD einbinden und sie booten. Wenn das getan ist, solltet ihr folgenden Inhalt auf eurem Bildschirm sehen:


    Hier drücken wir einfach auf "Install", denn wir brauchen für einen Server keine grafische Oberfläche. Die macht das System nur langsamer und angreifbarer.





    Als nächstes wählen wir uns einen beliebigen Namen für unser Linux-System aus. Der kann später auch jederzeit über die Datei "/etc/hosts" geändert werden - erfordert jedoch einen Neustart des Systems, damit es persistent ist. Ich habe meine Test-Maschine hier "srv01" für "Server 1" genannt. ;)



    Wenn das System einer Domain angehört, sollte diese hier eingetragen werden. Wenn das euer Webserver wird, wäre es z.B. sinnvoll, die Maschine "www" zu nennen und die Domain "example.com" ein zu tragen. So ergibt sich als FQDN "www.example.com". :)


    Weitere Infos zu FQDN gibt es auf Wikipedia: Domain (Internet) – Wikipedia



    Unter Linux gibt es, wie unter Windows auch, einen Administrator. Dieser Administrator hat jedoch die exakt selben Rechte wie das Linux-System. Bei Windows hat der Administrator lediglich höher bzw. mehr privilegierte Rechte im Gegensatz zu einem normalen Benutzer. Das System hat unter Windows jedoch immer noch deutlich mehr Rechte. Im übrigen: Unter Linux heißt dieser Administrator nicht Administrator, sondern "root". ;)


    Um diesen Zugriff zu schützen, MUSS ein Passwort für root gesetzt werden. Dieses wählen wir hier:



    Das Passwort wiederholen wir nochmal, damit wir uns vergewissern können, dass das eingegebene Passwort korrekt ist. ;)



    Jetzt MÜSSEN wir einen normalen Benutzer anlegen. Hierzu teilen wir dem System erstmal den vollständigen Namen mit. Das muss ehrlich gesagt aber nicht vollständig sein. "Max", "a", oder sonst was würde genauso reichen. ;)



    Jetzt wählen wir den Benutzernamen für den neuen Benutzer aus. Dieser wird später zum Einloggen im System benötigt.



    Im nächsten Post geht es weiter. :)

    1. Ich bekomme folgende Fehlermeldung beim installieren. Habe einen Debian 7.6 vServer

    Code
    root@s17864355:/home/ts3# cd /etc/init.d/ && insserv ts3server && cd - > /dev/nullinsserv: warning: script 'K03iptables' missing LSB tags and overridesinsserv: warning: script 'iptables' missing LSB tags and overridesinsserv: warning: script 'wide-dhcpv6-client' missing LSB tags and overrides


    Sehr interessant! 8|


    Dieser Fehler bedeutet eigentlich, dass im Skript kein Header gegeben ist und daher kann es nicht eingerichtet werden. Sind in deiner Datei die folgenden Zeilen GANZ OBEN drin?

    Bash
    #!/bin/sh### BEGIN INIT INFO# Provides:          ts3server# Required-Start:    $local_fs $remote_fs $network $syslog $named# Required-Stop:     $local_fs $remote_fs $network $syslog $named# Default-Start:     2 3 4 5# Default-Stop:      0 1 6# X-Interactive:     true# Short-Description: TeamSpeak 3 server# Description:       Start the TeamSpeak 3 server and associated services#  This script will start TeamSpeak 3 server, and possibly all associated services.### END INIT INFO


    2. Meine Installation liegt in /home/ts3/teamspeak3-server_linux-amd64. Muss die Installation stattdessen direkt im Ordner ts3 liegen?

    Code
    root@s17864355:/etc/init.d# service ts3server status-su: ./ts3server_startscript.sh: No such file or directory


    Ja, okay. Solange das Skript aufgrund des 1. Fehlers nicht installiert/eingerichtet werden konnte, kann es natürlich auch nicht benutzt werden. ;)


    Bevor du den Befehl mit "cd [...] insserv" und so weiter ausführst, musst du die Datei erst noch anpassen. Öffne die Datei mit einem Text-Editor deiner Wahl (z.B. vi, vim oder nano) und ändere folgenden Inhalt...

    Code
    ./ts3server_startscript.sh


    zu diesem um:

    Code
    ./teamspeak3-server_linux-amd64/ts3server_startscript.sh


    Du musst quasi vor jedem Skript-Aufruf noch "teamspeak3-server_linux-amd64/" hinzufügen, weil du deinen TS Server in einem Unterordner installiert hast und nicht im root-Verzeichnis des Users.

    Also rein vom logischen baut man auch erst das Formular und füllt es dann mit Inhalt. Der Inhalt kann wiederum alles mögliche sein: Textbausteine, Felder, Tabellen,... :D