Archiv der Kategorie: Linux

virtuelle Hosts mit Apache

Bei uns laufen die Webseiten von verschiedenen Schulgemeinden. Apache bietet eine Möglichkeit, dies über virtuelle Hosts zu realisieren. Diese verwalte ich mit Webmin.

Unter Servers –> Apache Webserver –> Create virtual host kann man für jede eigene Seite einen virtuellen Host angeben.

image

Wenn man nun den virtuellen Host auswählt, kann man unter “Networking and Addresses” die virtuellen Servernamen eintragen.

image

Webmin zur Linux Server Verwaltung installieren

Ein Linuxserver kann komplett auf der Komandozeile (shell) verwaltet werden. Viel komfortabler ist es aber, dies auf einer grafischen Oberfläche zu machen. Ich habe mich da für Webmin entschieden und in den letzten Jahren keine Probleme damit gehabt. Darum werde ich Webmin auch auf dem neuen Server wieder einsetzen.

Webmin is a web-based interface for system administration for Unix. Using any browser that supports tables and forms (and Java for the File Manager module), you can setup user accounts, Apache, DNS, file sharing and so on. (Quelle:http://www.webmin.com/intro.html).

Alternativ zu einer manuellen Installation, kann man Webmin wie hier beschrieben auch über das Paketverwaltungstool “apt” verwalten. Dazu muss man in /etc/apt/sources.list die Zeile für das Repository eintragen. Ich verwende als Editor dazu nano.

Also nano mit “sudo nano /etc/apt/sources.list” starten und ganz zuunterst die Zeile  
deb http://download.webmin.com/download/repository sarge contrib
hinzufügen.

image

image

Wenn man nun mit ctrl+x nano verlässt, wird man noch gefragt, ob man die Änderungen speichern möchte, was man mit y bestätigt.

image

Zum Speichern muss man dann noch den Dateinamen mit der Entertaste bestätigen.

image

Damit man nachher nicht bei jedem apt-get update eine Fehlermeldung wegen dem fehlenden PGP-Schlüssel erhält…

image

…kann man den fehlenden Schlüssel mit
wget http://www.webmin.com/jcameron-key.asc
apt-key add jcameron-key.asc

installieren. Die mit wget heruntergeladene Schlüsseldatei kann nach dem Import wieder gelöscht werden.

Nun kann webmin normal mit apt installiert werden.
sudo apt-get update
sudo apt-get install webmin

image

Nach erfolgreicher Installation kann man sich mit Webmin über https://server-ip-adresse:10000 verbinden.

image

Obwohl ja viele Administratoren webmin verwenden, ist es eine zusätzliche Anwendung, die auch angegriffen werden könnte. Sicher macht es daher Sinn, webmin wie alle anderen Anwendungen aktuell zu halten. Zusätzlich kann man den Port 10’000 für den Zugriff auf webmin vom Internet her auf der Firewall geschlossen lassen.

Linux auf Hyper-V-Cluster

Wir betreiben ja in unserer DMZ immer noch unseren eigenen Webserver. Da wir als Ersatz für unsere alten Server einen Hyper-V-Cluster/Failovercluster gekauft haben, wollte ich auch den alten Webserver durch einen virtuellen Server auf dem Cluster ersetzen.

Netzwerk
Damit der Webserver weiterhin in der DMZ und nicht im internen Netzwerk steht, muss man ihm einen eigenen Netzwerkanschluss auf den Hyper-V-Hosts zuweisen, der für nichts anderes benutzt wird.

image

Diesen kann man dann mit der DMZ bei der Firewall verbinden. Somit ist gewährleistet, dass der ins Internet exponierte Webserver durch die Firewall vom Rest des internen Netzwerks getrennt ist.

Installation
Um den neuen Server zu installieren, kann man im Failovercluster-Manager “Virtuelle Computer…” –> “Neuer virtueller Computer…” erstellen und den Clusterknoten auswählen, auf dem dieser primär laufen soll.

Als Speicherort muss das CSV (Cluster Shared Volume) ausgewählt sein, auf das alle Clusterknoten Zugriff haben.

image

Für Linux muss Generation 1 ausgewählt werden.

image

Der Arbeitsspeicher kann auch später jederzeit angepasst werden.

image

Hier muss nun eben der Netzwerkadapter ausgewählt werden, der ausschliesslich für die DMZ verwendet und auch so verbunden wird.

image

Für die virtuelle Festplatte habe ich die Standardwerte verwendet.

image

Für den Webserver verwende ich wieder Ubuntu Server in der LTS (long time support) Version, den ich schon für den alten Webserver benutzt habe.

image 

image

Am Schluss bekommt man eine Warnung wegen der virtuellen DVD. Das ISO ist nicht auf dem CSV abgelegt, somit kann die Maschine kein Failover durchführen, da der Pfad auf dem zweiten Knoten nicht verfügbar wäre. Dies macht aber nichts, da ich die DVD nach der Installation eh entferne.

image

Nun kann man den Server starten und installieren.

image   image

Als Land habe ich Schweiz ausgewählt, als Tastaturmodell “ch”. Danach muss man in vielen Dialogen das Netzwerk manuell einrichten, einen Rechnernamen vergeben und ein Benutzerkonto anlegen. 

Jetzt kann man die Festplatten partitionieren lassen.

image

Aktualisierungen sollen nicht automatisch installiert werden, das möchte ich lieber manuell ausführen und kontrollieren.

image

Im nächsten Dialogfeld kann man zusätzliche Software-Sammlungen installieren. Für die Webseite benötige ich den LAMP Server (LAMP steht für Linux, Apache, MySQL, PHP). Der OpenSSH Server wird für einen Zugang auf die Konsole benötigt. Der Mailserver wird benötigt, damit der Inhalt von Formularen als Mail verschickt werden können. Mit Samba biete ich einen Zugang über eine Windowsfreigabe an. So können auf einen Rutsch z.B. sehr viele Bilder auf den Webserver übertragen werden. Aus Sicherheitsgründen öffne ich auf der Firewall die Ports für SSH und Samba nur vom internen Netzwerk. Es soll möglichst nur das notwendigste vom Internet her erreichbar sein.

image

Für MySQL muss man nun noch ein Root Passwort vergeben und für Postfix werden die Mailinformationen abgefragt. Am Schluss muss man noch bestätigen, dass Grub in den MBR installiert werden darf.

image

Die CD wird automatisch “ausgeworfen”. Nun kann man neu starten.

image

Nach dem Neustart empfiehlt sich ein:

sudo apt-get update
sudo apt-get dist-upgrade

um den Server mit den neuesten Updates zu versorgen.

MySQL Befehle

Nur so als Gedankenstütze, damit ich nicht immer im Internet nachforschen muss.

mysql --user=root --password=verysecure
Stellt eine Verbindung zum MySQL Server her. Danach wird in der shell mysql> vorangestellt. Befehle müssen mit einem Semikolon (;) abgeschlossen werden. Wenn man kein Passwort angibt, wird man nach der Eingabe des Befehls danach gefragt.

mysql> show databases;
Zeigt die vorhandenen MySQL-Datenbanken an.

mysql> CREATE DATABASE db_name;
Erstellt eine neuen Datenbank db_name.

mysql> CREATE DATABASE IF NOT EXISTS db_name;
Überprüft vor dem Erstellen einer neuen Datenbank, ob bereits eine mit dem gleichen Namen existiert.

mysql> DROP DATABASE db_name;
Löscht eine ganze Datenbank.

mysql> DROP DATABASE IF EXISTS db_name;
Überprüft vor dem Löschen einer Datenbank, ob eine Datenbank mit dem Namen existiert.

mysql> CREATE USER ‘newuser’@’localhost’ IDENTIFIED BY ‘password’;
Erstellt einen neuen User newuser mit dem Passwort password. Dieser neue User hat aber keine Berechtigungen auf irgendeine Datenbank.

mysql> GRANT [type of permission] ON [database name].[table name] TO ‘newuser’@’localhost’;
Wenn bei type of permission  ALL PRIVILEGES gesetzt wird, bekommt der User alle Berechtigungen auf die Datenbank. Um Berechtigungen auf alle Datenbanken und deren Tabellen zu geben, kann man den Stern verwenden (*.*)
mysql> GRANT ALL PRIVILEGES ON *.* TO ‘newuser’@’localhost’;
Nachdem die Berechtigungen verändert wurden, sollten man sie abschliessen durch
mysql> FLUSH PRIVILEGES;

mysql> REVOKE [type of permission] ON [database name].[table name] FROM ‘newuser’@’localhost’;
Entfernt die Berechtigungen vom Benutzer (analog zu GRANT).

mysql>DROP USER ‘newuser’@’localhost’;
Löscht den Benutzer

mysql> select user, host from mysql.user;
Erstellt eine Liste mit User und Host.

mysql> show grants for ‘newuser’@’localhost’;
Zeigt die Berechtigungen für den entsprechenden Benutzer auf localhost.

mysql> QUIT
Beendet die Verbindung zum MySQL-Server.

Mit dem Programm mysqldump kann man Sicherungen einer MySQL-Datenbank erstellen

Das Programm mysqldump kann direkt auf der shell ausgeführt werden, man muss sich also nicht mit dem Datenbankserver verbinden.

mysqldump --user=root --password=verysecure db_name > dumpfilename.sql
Erstellt ein Backup der Datenbank in die Datei dumpfilename.sql.

mysqldump --user=root --password=verysecure db_name | gzip > /Verzeichnispfad/dumpfilename.gz
Erstellt ein komprimiertes Backup der Datenbank in die Datei dumpfilename.gz. Dies kann sinnvoll bei automatisierten Backups sein.

mysql --user=root --password=verysecure db_name < dumpfilename.sql
Spielt das Backup aus der Datei dumpfilename.sql in die Datenbank db_name. Die Datenbank muss vorher erstellt werden.