Mein VServer Setup

Ich gebe hier mal eine kurze Anleitung, wie mein Vorgehen für die Einrichtung eines VServers auf Basis von Debian 7 so aussieht. Vielleicht mag es ja jemanden als Inspiration & Anleitung dienen.

Oder es dient einfach nur als meine eigene (öffentliche) Anleitung, falls eine Neu-Installation notwendig wird und ich wieder alles vergessen habe. *g*

Zeitaufwand: Ohne Mailing keine 20 Minuten. 🙂

Image updaten & bereinigen

Ich hoste bei Linevast und wähle das „Debian 7 64-bit Image“ (aka „debian-7.0-x86_64“).

Dieses basiert auf den offiziellen OpenVZ Images, die leider aktuell (Stand: 17.09.2014) jede Menge Mist wie Samba usw. vorinstalliert haben. Wofür braucht man das auf einem VServer? Dazu ist sendmail auch noch darauf vorinstalliert – obwohl dieses schon sehr lange als unsicher gilt.

Schritt 1: Aktualisierung des Systems

apt-get update;

Schritt 2: Installation von Aptitude

apt-get -y install aptitude;

Ja, grundsätzlich kann man auch alles mit „apt-get“ machen, aber mir gefällt der Komfort z.B. mit „aptitude search“ zu sehen, was schon installiert ist. Wer lieber darauf verzichtet und dafür weniger Pakete installiert haben möchte, lässt diesen Schritt dann halt aus.

Schritt 3: Sendmail & co löschen

Ich will später Postfix & Dovecot einsetzen. Also kann aller anderer Mist raus.

aptitude purge -y rmail fetchmail procmail bsd-mailx sendmail sendmail-cf sendmail-doc sendmail-base sendmail-bin sensible-mda;
aptitude purge -y sendmail-base;

Hinweis: Beim ersten Mal kommt bei mir sendmail-base nicht mit, also muss es zweimal ausgeführt werden.

Schritt 4: Nicht benötigte Server-Dienste entfernen

Ich kann mir nicht vorstellen, was Samba (Windows Datei-Freigaben) & ein eigener DNS-Server auf einem VServer verloren haben.

aptitude purge -y bind9; # DNS
aptitude purge -y samba samba-common cifs-utils ldap-utils; # SAMBA

Schritt 5: Vollständiges System-Upgrade

aptitude -y full-upgrade; apt-get autoremove;

Schritt 6: Nützliche Tools installieren

aptitude install bash-completion graphicsmagick unzip nano htop dialog bc;

 SSH Zugang absichern

Zunächst lege ich mir einen Systembenutzer an und weise diesem der Gruppe „sshusers“ zu:

adduser meinuser --gecos "Mein Name" --disabled-password addgroup --system sshusers adduser meinuser sshusers passwd meinuser

In der /etc/ssh/sshd_config ändere ich folgende Werte ab:

  • Am Ende der Datei Zeile „AllowGroups sshusers“ einfügen, um nur dieser Gruppe Zugang zu gewähren.
  • Die Option „PermitRootLogin yes“ auf „PermitRootLogin no“ ändern, um root auszusperren.
  • Optional: Den Port von 22 auf irgendwas anderes freies ändern.
    Hier gibt „cat /etc/services“ Auskunft über freie Ports.

Danach den Service neustarten:

/etc/init.d/ssh restart

Jetzt unbedingt den Zugriff von Außen über "meinuser" ausprobieren und via „su“ root werden. Wenn das klappt, kann das erste Terminal geschlossen werden. Andernfalls ist dies die letzte Chance, noch Korrekturen vorzunehmen.

Zeit setzen & aktuell halten

Das Installieren des NTP-Dienstes sichert ab, dass die Uhrzeit auch aktuell gehalten wird.

aptitude install ntp

Jetzt die richtige Zeitzone setzen:

 dpkg-reconfigure tzdata

Und einmal kontrollieren:

date

LAMP einrichten

Apache2 mit PHP5-Support

aptitude install -y apache2 php5 php5-curl php5-imap libapache2-mod-php5;

MySQL 5.5

aptitude install -y mysql-server mysql-client php5-mysql;

Leider wird hier heirloom-mailx mit installiert, welches ich ja nicht haben will:

aptitude purge -y heirloom-mailx;

Troubleshooting bei der Installation

Wenn MySQL nicht richtig installiert werden konnte, was ein aktuelles Problem bei Wheezy betrifft, dann hilft es in der /etc/mysql/my.cnf in der Sektion „[mysqld]“-Sektion folgende Zeile einzufügen:

[mysqld] innodb_use_native_aio=0

Danach kann mit dem Befehl „aptitude install“ das Paket repariert werden.

Tipp: Passwort im Nachhinein ändern

Während der Installation wird man über eine grafische Oberfläche zur Passwort-Eingabe aufgefordert. Hier gebe ich ein kurzes Passwort ein und setze dieses im Anschluss mit folgendem Befehl neu:

mysqladmin -u root -p password "MeinSuperLangesUndDeswegenAlleineSchonSicheresPasswort"

Apache VHosts konfigurieren

Mir gefallen die VHosts (Link zur Doku) ganz gut, da sie mir für das Hosting verschiedener Domains die größte Flexiblität bieten. Dieses Setup ist also recht einfach:

a2enmod vhost_alias rm /etc/apache2/sites-available/default; # config löschen
echo '<VirtualHost *:80>' >> /etc/apache2/sites-available/default; 
echo 'VirtualDocumentRoot /var/www/%0' >> /etc/apache2/sites-available/default; 
echo '</VirtualHost>' >> /etc/apache2/sites-available/default; 
chown -R www-data:www-data /var/www/; # soll nicht root gehören

Jetzt können Ordner wie „/var/www/blog.meinedomain.de“ & „/var/www/www.meinedomain.de“ angelegt werden, die alle ihr eigenes Root-Verzeichnis sind. Wenn der A-Eintrag im DNS stimmt, funktioniert der Rest ab jetzt von ganz alleine.

Das ist natürlich ein total schnelles Quick-Setup. Wenn der VServer einmal läuft, sollte man hier weitergehen und sich mit diesen Themen beschäftigen:

E-Mail-System aufsetzen

Hier setze ich auf Postfix & Dovecot, wie in einem vorherigen Post beschrieben.

Backup aufsetzen

Siehe diesen Artikel.

Restarbeiten

Sonstiges Zeugs entfernen

In dem Image sind X11 (=Desktop)-Tools enthalten und ein paar Programme, deren Bedarf ich für den Server-Betrieb nicht sehe. Also auch raus damit:

aptitude purge -y ufraw-batch finger ftp tofrodos mtools vim vim-runtime vim-common ed unixodbc lynx lynx-cur db-util xaw3g x11-common libx11-data libopenal-data esound-common psutils tcsh ghostscript libgs9 gettext bind9-host bind9utils libcupsimage2 libcups2 libbind9-80 libisccfg82 expat telnet apt-xapian-index;

Wenn nur fertige DEBs verwendet werden sollen und nichts kompiliert werden muss, spart das hier noch mehr Platz:

aptitude purge -y debconf-utils binutils make;

Wenn man die Doku & Manpages auf dem Server nicht braucht, weil man sowieso alles online ergoggelt, dann kann man hier noch mehr Platz sparen:

aptitude purge -y aptitude-doc-en apache2-doc info install-info man-db manpages;

Ein bisschen Speicher freiräumen

Mit „localepurge“ lässt sich ein bisschen Platz einsparen, indem man nicht benötigte Sprachen entfernt:

aptitude install localepurge;

Darüber hinaus war bei mir das riesige Paket „locales-all“ vorinstalliert, welches laut Debian selbst so nicht empfohlen wird. Stattdessen soll man die tatsächlich benötigten Locales generieren.

aptitude purge -y locales-all;