Gentoo vServer Installation: Unterschied zwischen den Versionen
(→Cron Daemon: - * 1 * * * führt von 01:00 bis 01:59 jede Minute ein emerge --sync durch.) |
K (1 Versionen) |
(kein Unterschied)
|
Version vom 21. Juni 2007, 14:46 Uhr
In dieser Anleitung wird beschrieben wie man auf einem virtuellen System mit Virtuozzo Gentoo einrichtet.
Inhaltsverzeichnis
Vorbereitung
Um Gentoo auf einem vServer mit Virtuozzo zu installieren, wie er z.B. von 1&1 oder Hosteurope, muss dieser erstmal in den Reparaturmodus gebracht werden. Dazu muss man sich in Virtuozzo anmelden (https://adresse:4643/vz/cp) und anschließend auf Wartung und Reperaturmodus.
Nachdem der Server im Reperaturmodus wieder hochgefahren ist kann man sich mit einem SSH Clienten anmelden. Die Festplatte des vServers wurde jetzt /repair
eingehängt, da wird jetzt mit cd /repair
hineingewechselt.
Wer nicht alle Daten löschen will, muss die Ordner einzeln löschen rm -R ordner
ansonsten kann einfach rm -R *
eingegeben werden. Anschließend sollte der Ordner leer sein, bis auf die Dateien und Ordner, die man behalten will.
Grundinstallation
Jetzt muss das passende Stagepaket für die Installation und Portage geladen werden. Alternativ kann auch ein anderer Server genommen werden (es bieten aber nicht alle Server die vServer Stages an). <code=text> wget ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo/experimental/x86/vserver/stage3-x86-20060317.tar.bz2 wget ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo/snapshots/portage-latest.tar.bz2 </code=text>
Anschließend werden die Pakete entpackt, das stage3 Archiv wird direkt in /repair entpackt, sollte man nicht in dem Ordner sein sollte man jetzt in den Ordner gehen oder -C /repair
an den Befehl anhängen. Portage wird direkt in das usr Verzeichnis entpackt.
<code=text>
tar xvjpf stage3-*.tar.bz2
tar xvjf portage-*.tar.bz2 -C /repair/usr
</code=text>
Jetzt werden noch die Netzwerkinformationen kopiert und ein paar Dateisysteme eingehängt: <code=text> cp -L /etc/resolv.conf /repair/etc/
mount -t proc none /repair/proc mount -o bind /dev /repair/dev </code=text>
Konfiguration
Jetzt könnte, mit etwas Glück, schon alles laufen, aber damit es auch wirklich läuft, müssen noch einige Einstellungen vorgenommen werden. Dazu betreten wir jetzt die Umgebung. <code=text> chroot /repair /bin/bash env-update source /etc/profile export PS1="(chroot) $PS1" </code=text>
Als erstes sollte man die /etc/fstab
anlegen oder bearbeiten, damit sie zu den Gegebenheiten des Systems passt.
<code=text>
proc /proc proc defaults 0 0
none /dev/pts devpts rw 0 0
/dev/vzfs / vzfs defaults,remount 0 0
</code=text>
Jetzt müssen wir die Zeitzone setzen, sollte es nicht Deutschland sein muss sich in /usr/share/zoneinfo
eine passende aussuchen.
<code=text>
cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime
</code=text>
Portage Konfigurieren
Als nächstes werden die Einstellungen für Portage vorgenommen, dazu muss die make.conf geändert werden. nano /etc/make.conf
Hier müssen jetzt verschiedene Variablen angepasst werden:
CHOST
Diese Variable sollte nicht geändert werden, wenn sie nicht stimmt sollte man einen anderen Stage laden
CFLAGS/CXXFLAGS
Hier werden Flags für den Compiler angegeben, wie die Optimierung und das Zielsystem. Den Optimierungsgrad sollte man nicht zu stark wählen da es so zu instabilen Verhalten führen kann. Das Zielsystem kann man sich aus dem GCC Handbuch aussuchen
MAKEOPTS
Hier können Sie festlegen, wie viele Compilerprozesse parallel gestartet werden. Eine gute Wahl ist die Anzahl der CPUs plus 1.
LINGUAS
Mit LINGUAS kann man die Lokalisierung beeinflussen.
GENTOO_MIRRORS
Mit der Option werden die verwendeten Mirrorserver angegeben, in den Hochkommas können durch Leerzeichen mehrere Server angegeben werden.
SYNC
Die SYNC Option gibt die Server für die Portage-Synchronisation an.
USE
Mit der USE Option lässt sich die Installation von Paketen beeinflussen, da es sich um ein Server handelt sollte man immer die Optionen -X -gnome -gtk -gtk2 und -kde verwenden.
Es gibt noch weitere Optionen, welche man aber den Manpages entnehmen kann, eine Beispiel Konfiguration wäre diese:
<code=bash>
- These settings were set by the catalyst build script that automatically built this stage
- Please consult /etc/make.conf.example for a more detailed example
CFLAGS="-O2 -march=pentium4 -pipe"
CHOST="i686-pc-linux-gnu"
CXXFLAGS="${CFLAGS}"
MAKEOPTS="-j2"
LINGUAS="de en"
GENTOO_MIRRORS="ftp://ftp.tu-clausthal.de/pub/linux/gentoo/ ftp://sunsite.informatik.rwth-aachen.de/pub/Linux/gentoo "
SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage"
USE="-X apache2 bzip2 crypt -gnome -gtk -gtk2 java -kde imap nls postgres mysql maildir php -qt3 -qt4 pam sockets sse sse2 ssl zlib"
PORT_LOGDIR="/var/log/portage"
</code=bash>
Ist dies erledigt kann man das make.profile ändern, falls gewünscht. Das kann z.B. notwendig sein, wenn der Host-Kernel eine ältere Version (2.4.x) ist, die noch kein NPTL unterstützt. Das aktuelle Profil kann man mit ls -FGg /etc/make.profile
abfragen; bei Bedarf kann man diesen Link auf /usr/portage/profiles/default-linux/x86/vserver
oder einen der Oberordner umbiegen. Für ein 2.4-kompatibles Profil müßte z.B. folgender Pfad gesetzt werden:
<code=text>
ln -snf /usr/portage/profiles/default-linux/x86/vserver/no-nptl /etc/make.profile
</code=text>
Jetzt muss noch die glibc Locales angepasst werden, dazu muss die Datei /etc/locale.gen
editiert werden und anschließend müssen die Locals erstellt werden locale-gen
Netzwerk Konfiguration
Jetzt muss das Netzwerk noch eingestellt werden, dazu sollte man sich einen Hostnamen für den Server ausdenken und ihn in die /etc/conf.d/hostname
eintragen. Außerdem sollte der Domainname, in der /etc/conf.d/domainname
in DNSDOMAIN eingetragen werden. Anschließend fügt man beide dem Startscript hinzu, damit sie beim Systemstart gesetzt werden.
<code=text>
rc-update add hostname boot
rc-update add domainname boot
</code=text>
Für die weitere Netzwerkkonfiguration muss jetzt erstmal ein Programm installiert werden, damit das Netzwerk auf dem vServer funktioniert. <code=text>
- Wenn Portage bisher noch nicht synchronisiert wurde sollte es jetzt gemacht werden
emerge --sync
- Installation von iproute2
emerge iproute2 </code=text> Wenn dies nicht funktioniert hat, weil der Compiler mit der Meldung, das er einige Header Dateien nicht gefunden hat, die Compilierung abgebrochen, müssen wohl noch die Headerdateien installiert werden. <code=text> emerge -av linux-headers </code=text> Versucht man anschließend die Installation von iproute2 noch einmal sollte dies funktionieren.
Wenn die Installation erfolgreich war, wird die /etc/conf.d/net
editiert, hier werden die Netzwerkschnittstellen angegeben. Es muss folgendes in die Datei eingetragen werden, weobei "eigeneip" durch die IP Adresse ersetzt werden muss.
<code=text>
modules=("iproute2");
config_venet0=("eigeneip netmask 255.255.255.0 broadcast 0.0.0.0");
routes_venet0=( "191.255.255.0/24 scope link"
"default via 191.255.255.1 dev venet0" )
</code=text> Im Anschluss wird noch das erforderlich Startscript erzeugt und mit dem Startscript für den Loopback eingetragen. <code=text> cd /etc/init.d ln -s net.lo net.venet0 rc-update add net.venet0 default rc-update add net.lo default </code=text>
Ist dies getan muss noch die /etc/hosts
geändert werden, hier kommt eine neue Zeile hinzu, welche die IP sowie den Namen und die Domain des Servers enthält.
<code=bash>
- /etc/hosts: This file describes a number of hostname-to-address
- mappings for the TCP/IP subsystem. It is mostly
- used at boot time, when no name servers are running.
- On small systems, this file can be used instead of a
- "named" name server. Just add the names, addresses
- and any aliases to this file...
- $Header: /var/cvsroot/gentoo-src/rc-scripts/etc/hosts,v 1.8 2003/08/04 20:12:25 azarah Exp $
- 127.0.0.1 lvps87-230-10-69.dedicated.hosteurope.de lvps87-230-10-69 localhost localhost.localdomain
- 195.214.233.190 dionysos.croup.de dionysos
127.0.0.1 localhost ip hostname.domain hostname </code=bash>
Allgemeine Konfiguration
Als nächstes wird der Zeichensatz der Tastatur eingestellt, dies geschied über die /etc/conf.d/keymaps
. Will man kein UTF-8 verweden kann man hier z.B. de-latin1 einstellen. Außerdem sollte man sich die Datei /etc/rc.conf
betrachten, ob die Einstellungen dort den eigenen Vorlieben entsprachen.
In der Datei /etc/conf.d/clock
sollte man CLOCK in CLOCK="local" ändern damit die Uhr richtig läuft.
Desweiteren sollte man jetzt ein Passwort für den root Accout festlegen. <code=text> passwd </code=text>
Und man sollte auch nicht vergessen den SSH Server beim Systemstart zu aktivieren. <code=text> rc-update add sshd default </code=text>
Installation der Systemtools
Nach der Konfiguration folgen noch einige Programme die man besser installieren sollte.
System Logger
Einen Systemlogger soltle man immer installieren, damit Fehler protokolliert werden können.
<code=text>
emerge syslog-ng
rc-update add syslog-ng default
</code=text>
Damit er ordentlich funktioniert sollte auch die Konfiguration angepasst werden, diese befindet sich in der Datei /etc/syslog-ng/syslog-ng.conf
. Nach der Konfiguration kann die Datei z.B. so aussehen:
<code=bash>
options { chain_hostnames(off); sync(0); };
- Quelle von der das Log gelesen werden soll
source src { unix-stream("/dev/log"); internal(); }; source kernsrc { file("/proc/kmsg"); };
- Ziele festlegen
destination authlog { file("/log/auth.log"); }; destination syslog { file("/log/syslog"); }; destination cron { file("/log/cron.log"); }; destination daemon { file("/log/daemon.log"); }; destination kern { file("/log/kern.log"); }; destination lpr { file("/log/lpr.log"); }; destination user { file("/log/user.log"); }; destination mail { file("/log/mail.log"); };
- destination postgresql { file("/log/postgresql/syslog"); };
destination mailinfo { file("/log/mail.info"); }; destination mailwarn { file("/log/mail.warn"); }; destination mailerr { file("/log/mail.err"); };
destination newscrit { file("/log/news/news.crit"); }; destination newserr { file("/log/news/news.err"); }; destination newsnotice { file("/log/news/news.notice"); };
destination debug { file("/log/debug"); }; destination messages { file("/log/messages"); }; destination console { usertty("root"); }; destination console_all { file("/dev/tty12"); }; destination xconsole { pipe("/dev/xconsole"); };
- Filter erstellen
filter f_authpriv { facility(auth, authpriv); }; filter f_syslog { not facility(authpriv, mail); }; filter f_cron { facility(cron); }; filter f_daemon { facility(daemon); }; filter f_kern { facility(kern); }; filter f_lpr { facility(lpr); }; filter f_mail { facility(mail); }; filter f_user { facility(user); };
- filter f_postgresql { facility(postgres); };
filter f_debug { not facility(auth, authpriv, news, mail); }; filter f_messages { level(info..warn) and not facility(auth, authpriv, mail, news); }; filter f_emergency { level(emerg); };
filter f_info { level(info); }; filter f_notice { level(notice); }; filter f_warn { level(warn); }; filter f_crit { level(crit); }; filter f_err { level(err); }; filter f_failed { match("failed"); }; filter f_denied { match("denied"); };
- Filter und Ziele verbinden
log { source(src); filter(f_authpriv); destination(authlog); }; log { source(src); filter(f_syslog); destination(syslog); }; log { source(src); filter(f_cron); destination(cron); }; log { source(src); filter(f_daemon); destination(daemon); }; log { source(kernsrc); filter(f_kern); destination(kern); }; log { source(src); filter(f_lpr); destination(lpr); }; log { source(src); filter(f_mail); destination(mail); }; log { source(src); filter(f_mail); filter(f_warn); destination(mailwarn); }; log { source(src); filter(f_mail); filter(f_err); destination(mailerr); };
- log { source(src); filter(f_postgresql); destination(postgresql); };
log { source(src); filter(f_debug); destination(debug); }; log { source(src); filter(f_messages); destination(messages); }; log { source(src); filter(f_emergency); destination(console); };
- Standard-Protokoll
log { source(src); destination(console_all); }; </code=bash>
Cron Daemon
Ein Cron Daemon sollte man auch immer installieren da sich so verschiedene Aufgaben Zeitgesteuert ausführen lassen, z.b. Synchronisation von Portage. <code=text> emerge vixie-cron rc-update add vixie-cron default </code=text> Wenn es gewünscht ist, kann gleich der Cronjob für Portage eingefügt werden. <code=bash> crontab -e
- Das kann dann z.B. eingefügt werden damit jeden Tag um 1 die Synchronisation durchgeführt werden kann
- min stunde tag monat wochentag befehl
0 1 * * * emerge --sync --quiet
</code=bash>
Abschluss
Jetzt kann über Viruozzo der Reperaturmodus verlassen werden, anschließend sollte das System hochfahren und alles laufen. Es ist zu empfehlen jetzt Portage noch einmal zu synchronisieren und ein Update durchzuführen, was einige Stunden in Anspruch nehmen kann. <code=text> emerge --sync emerge -Duav world </code=text> Ist dies erledigt kann man nach eigenen Wünschen das System weiter verändern.
Mögliche Probleme
System fährt nach Installation nicht hoch
Konttrollieren ob das Stagearchiv für vServer genommen wurde, da nach Erfahrung die normalen Stagearchive nicht korrekt laufen.
System ist nach Installation nicht erreichbar
Logdateien kontrollieren und sich z.B. die Ausgabe von ifconfig -a
in ein Datei speichern lassen, die man im Reperatur Modus sich ansehen kann. Dies ist möglich indem man z.B. ein verwendetes Startscript int /etc/init.d/
ändert und dort
<code=text>ifconfig > /ifconfig.conf</code=text> einträg.
Das System erhält keine IP Adresse
Kontrollieren ob /etc/conf.d/net
richtig eingestellt ist und ob iproute2 installiert ist.
iproute2 lässt sich nicht installieren
Wenn z.B. der Fehler kommt sollte man überprüfen ob die Version von ipconfig2 mit der Version der Kernel Header übereinstimmt. <code=text> include -DRESOLVE_HOSTNAMES -c -o ipaddress.o ipaddress.c ipaddress.c: In function `print_link_flags': ipaddress.c:99: error: `IFF_DYNAMIC' undeclared (first use in this function) ipaddress.c:99: error: (Each undeclared identifier is reported only once ipaddress.c:99: error: for each function it appears in.) i686-pc-linux-gnu-gcc -D_GNU_SOURCE -O2 -march=pentium4 -pipe -Wstrict-prototypes -Wall -I../ </code=text>
Sollte der Fehler kommen muss man die Kernel Header installieren. <code=text> In file included from ../include/libiptc/libiptc.h:6,
from ../include/iptables.h:5, from m_ipt.c:20:
../include/linux/netfilter_ipv4/ip_tables.h:20:38: linux/netfilter/x_tables.h: No such file or directory In file included from ../include/libiptc/libiptc.h:6,
from ../include/iptables.h:5, from m_ipt.c:20:
../include/linux/netfilter_ipv4/ip_tables.h:87: error: field `counters' has incomplete type ../include/linux/netfilter_ipv4/ip_tables.h:115:39: linux/netfilter/xt_tcpudp.h: No such file or directory ../include/linux/netfilter_ipv4/ip_tables.h:144: error: `XT_FUNCTION_MAXNAMELEN' undeclared here (not in a function) In file included from m_ipt.c:20: </code=text> Installieren der Kernel Header <code=text> emerge linux-headers </code=text>