Virtueller Server mit VirtualBox und Arch Linux Teil 2

In dieser Anleitung zeige ich, wie man eine Virtuelle Maschine für einen lokalen Server einrichtet.
Zur Virtualisierung wird VirtualBox verwendet. Als Betriebssystem für den Server kommt Arch Linux zum Einsatz.

Dies ist der zweite Teil. zum Ersten Teil.

Dieser zweite Teil widmet sich den folgenden Themen:

  • Herunterfahren durch ACPI-Eregnis (VirtualBox Menü) der Virtuellen Maschine
  • Zweite Netzwerkschnittstelle
  • Automatisierung mit dcron
  • Semi-Automatisierung von Aktualisierungen
  • Benutzer Zugriff auf Log-Dateien ermöglichen
  • Webverzeichnis für Benutzer freigeben
  • VirtualBox Gasterweiterungen
  • Beschleunigen des Aufbaus der SSH Verbindung

Herunterfahren durch ACPI-Eregnis (VirtualBox Menü) ermöglichen

Damit der Server auf solche ACPI Ereignisse reagieren kann, muss der acpi-Daemon installiert und konfiguriert werden:

sudo pacman -S acpid

Damit der Daemon auch immer gestartet wird muss die Daemon-Zeile in der rc.conf noch angepasst werden:

...
DAEMONS=(....@acpid...)

Nach der Installation muss noch folgende Datei erstellt/angepasst werden:

...
button/power)
	#echo "PowerButton pressed!">/dev/tty5
	case "$2" in
		PBTN|PWRF)  logger "PowerButton pressed: $2"
					/sbin/poweroff ;;
		*)          logger "ACPI action undefined: $2" ;;
	esac
	;;
...

Nun muss man noch einmal den Daemon manuell starten:

sudo rc.d start acpid

Danach sollte, wenn man die Virtuelle Maschine über das Menü direkt mit der Option ACPI-Event ausschaltet, der Server ordnungsgemäß heruntergefahren werden.

Zweite Netzwerkschnittstelle

Um lokal vom Host auf Serverdienste zuzugreifen, auch wenn der Server keine IP-Adresse auf der ersten Schnittstelle bekommen hat, benötigt er eine zweite Netzwerkschnittstelle.
Dafür muss die virtuelle Maschine ausgeschaltet sein. Über Ändern kann unter Netzwerk eine neue Schnittstelle hinzugefügt werden.
Dabei soll bei Angeschlossen an:, „Host-only“ ausgewählt werden. Unter Erweitert, Adaptertyp soll Intel Pro Desktop .. ausgewählt werden.

Die IP-Adresse wird Standardmäßig auf 192.168.56.1 gesetzt. (Dies könnte man in den Netzwerkadaptereinstellungen von Windows ändern)

Die neue Schnittstelle wird von Arch Linux als „eth1“ erkannt.
Da es mit dem network-Programm und rc.conf nicht möglich ist mehr als eine statische Netzwerkschnittstelle zu konfigurieren benötigt man nun das netcfg-Programm:

sudo pacman -S netcfg
#auskommentieren von der hier konfigurierten eth0 Schnittstelle
#interface=eth0
#address=192.168.0.100
#netmask=255.255.255.0
#broadcast=192.168.0.255
#gateway=192.168.0.
...
NETWORKS=(eth0static eth1static)
...
DAEMONS=( ... net-profiles ...)
# hier network daemon entfernen
CONNECTION='ethernet'
DESCRIPTION='Static network for all'
INTERFACE='eth0'
IP='static'
ADDR='192.168.0.100'
GATEWAY='192.168.0.1'
DNS=('192.168.0.1')
CONNECTION='ethernet'
DESCRIPTION='Static network for host only'
INTERFACE='eth1'
IP='static'
ADDR='192.168.56.100'

Danach muss noch neugestartet werden:

sudo reboot

Nun kann wie vorher, nur über die neue IP-Adresse (192.168.56.100), auf die Dienste zugegriffen werden.
Natürlich auch über die „alte“ wenn das Netz verfügbar ist.

Automatisierung mit dcron

Für regelmäßig auftretende Arbeiten die automatisiert werden können wird ein Automatisierungsdienst benötigt, der diese Aufgaben regelmäßig ausführt.
Dafür soll dcron benutzt werden.

sudo pacman -S dcron
#cronie ersetzten mit Ja beantworten
sudo rc.d restart crond

Zum Ändern der Automatisierten Aufgaben verwendet man

crontab -e

oder auch

EDITOR=nano crontab -e

Im nächsten Abschnitt kommt ein Beispiel für eine Automatisierung

Semi-Automatisierung von Aktualisierungen

Um die Software des Servers immer auf dem aktuellsten Stand zu halten, sollten regelmäßig, und so schnell wie möglich, die Pakete aktualisiert werden.
Da bei machen Aktualisierungen Änderungen auftreten, die eine Benutzeraktion erfordern, sollte nicht der gesamte Prozess automatisiert werden.

Um über Anstehende Aktualisierungen informiert zu werden sobald der Server gestartet wurde bzw. regelmäßig im längeren Betrieb, gehen wir wie folgt vor:

Es reicht einfach folgende Datei zu erstellen:

#!/bin/sh

/usr/bin/pacman -Sy

Nun sollte die Paketdatenbank einmal in der Stunde synchronisiert werden.
Mittels

pacman -Qu

kann man sehen für welche Pakete Aktualisierungen verfügbar sind.

Normalem Benutzer Zugriff auf Log-Dateien geben

Damit man als normaler Benutzer auch die Log-Dateien aus dem Verzeichnis „/var/log/“ sehen kann, muss der Benutzer der log Gruppe zugeordnet werden.

sudo gpasswd -a benutzername log

Dateien per SFTP mit FileZilla bearbeiten

Um Dateien nicht immer in der Konsole bearbeiten zu müssen, bietet es sich an diese unter Windows zu bearbeiten.
Dafür müssen sie dann aber hin und her kopiert werden. Dafür soll das Protokoll SFTP, welches beim bereits laufenden SSH-Dienst integriert ist, verwendet werden.
Als Client Programm für den Dateitransfer soll FileZilla benutzt werden.

Dieses wird wie folgt dafür eingerichtet:

  1. FileZilla starten
  2. Datei->Servermanager
  3. Neuer Server
  4. Name: VServArch
  5. Einstellungen:
    • Server: 192.168.56.100
    • Port: 22
    • Protokoll: SFTP – SSH File Transfer Protokoll
    • Verbindungsart: Normal
    • Benutzername: benutzername
    • Passwort: Passwort
  6. Verbinden

Auf der Rechten Seite ist die Ordnerstruktur auf dem Server nun verfügbar.

Webverzeichnis für Benutzer freigeben

Damit der normale Benutzer auch im Webverzeichnis Dateien bearbeiten kann (und das dann natürlich auch per SFTP/FileZilla), müssen folgende Änderungen durchgeführt werden:

  1. Benutzer der Gruppe http hinzufügen
    sudo gpasswd -a benutzername http
  2. Ab und wieder anmelden
  3. Ändern der Berechtigungen in /srv/http/nginx:
    	cd /srv/http/nginx
    	sudo chown -R root:http *
    	cd html
    	sudo chown -R root:http *
    	sudo mkdir pub
    	sudo chown benutzername:http pub
    	

Im Verzeichnis /srv/http/nginx/html/pub bzw. /usr/share/nginx/http/pub kann man jetzt als Benutzer Ordner und Dateien anlegen.

VirtualBox Gasterweiterungen

Falls man den Host Rechner öfters mit laufender virtuellen Maschine in den Standby-Modus versetzt, kann es sein, dass die Uhr im Server nicht mehr korrekt ist.
Dafür sollte im Virtuellen Server kein Zeitsynchronisationsdienst verwendet werden. Um die Zeit zu setzten sollte der Dienst aus den VirtualBox Gasterweiterungen verwendet werden.

Diese müssen installiert werden:

sudo pacman -S virtualbox-archlinux-additions

Danach noch das benötigte Kernelmodul und den Daemon in der rc.conf eintragen:

MODULES=(vboxguest)
...
DAEMONS=(syslog-ng net-profiles crond @sshd @nginx @php-fpm @mysqld @acpid @vbox-service)

Nun noch ohne Neustart das Modul laden und den Daemon starten:

sudo modprobe vboxguest
sudo rc.d start vbox-service

Nun sollte die Uhr mit der des Hostsystems übereinstimmen.

Beschleunigen des Aufbaus der SSH Verbindung

Falls man über die 192.168.56.100 Adresse eine SSH Verbindung aufbauen will, kann es sein, dass es ziemlich lange dauert bis diese Verbindung zustande kommt.
Das liegt daran, dass der SSH-Server versucht den Hostnamen per DNS herauszufinden. DNS ist aber garnicht aktiviert für diese Verbindung.
Um das Nachschlagen zu deaktivieren muss man folgendes tun:

...
UseDNS no
...

Danach muss der ssh-Daemon noch neugestartet werden:

sudo rc.d restart sshd

Nun sollte die Verbindung schneller aufgebaut werden.

Dieser Beitrag wurde am von in Tutorials veröffentlicht. Schlagworte: , , , , , , , .

Über Kai

Ich habe Informatik im Masterstudiengang an der Universität Stuttgart studiert. Im Studium habe ich, wie mein Kollege und Kommilitone, die Vertiefungslinien "Theoretische Informatik und Wissenschaftliches Rechnen" und "Visualisierung und Interaktive Systeme" belegt. Auch in meiner Freizeit beschäftige ich mich oft mit Softwareentwicklung, im Speziellen der Softwarearchitektur, sowie mit der, teils ehrenamtlichen, Betreuung und Weiterentwicklung von Webplattformen. Darüberhinaus gehe ich dem Leistungssport Schwimmen nach, um für einen gesunden Ausgleich mit Sport zu sorgen. Mehr über mich unter kmindi.de.