ich dachte ein bißchen "public documentation" könnte nicht schaden ;)
Auf die Idee hierzu kam ich nachdem mich ein Systemupdate von Lenny auf Squeeze >10h Zeit gekostet hat. Hauptgrund war eher Plesk...
Persönlich kann ich ohne Plesk auf der Konsole administrieren; wenn's da nicht so etwas wie Kunden oder andere Admins gäbe[..]
Allenfalls ich halte jetzt mal die wichtigsten Lösungen zu den schlimmsten Kopfbrechern hier fest.
Disclaimer
Ich übernehme keine Haftung für Schaden oder sonstige Ausfälle. Ich schreibe lediglich Erfahrungswerte nieder an die sich andere orientieren können.
Anwendung auf eigene Gefahr
Vorgeplänkel
Zu allererst einmal die PSA-Datenbank sichern
Code: Select all
mysqldump -u admin -p psa > ~/psa_backup.sql
Code: Select all
/etc/psa/.psa.shadow
Plesk kann mit 100% Sicherheit nicht mit Sonderzeichen umgehen!
Habt ihr ein Passwort in der Form wie
230bad@\a32!
dann ändert es! Plesk wird keine erfolgreiche Installation abliefern!! Buchstaben [a-z] und Zahlen [0-9] sind erlaubt!
Ändert das Passwort über die mysql-Console und schreibt den Klartext des neuen Passworts in die .psa.shadow .
Das Systemupgrade wird alle Plesk-Pakete (da inkompatibel) entfernen. Sollte jemand ohne Systemupgrade zum neuen Plesk wechseln sind folgende Zeilen auszuführen.
Code: Select all
apt-get remove psa
apt-get remove psa-api
apt-get remove plesk-base
apt-get remove plesk-skins
/etc/apt/sources.list muss auch geändert werden. Von Lenny nach Squeeze z.B.
Code: Select all
deb http://autoinstall.plesk.com/debian/PSA_10.3.1 squeeze all
Es gibt so eine Abhängigkeit die NICHT von Plesk geprüft wird!!!
Installiert also folgende Pakete
Code: Select all
apt-get install doctrine sw-doctrine
Ladet nun den Autoinstaller von Plesk herunter
Code: Select all
wget http://autoinstall.plesk.com/PSA_10.2.0/dist-deb-Debian-6.0-x86_64/opt/updater/psa-autoinstaller_3.9.0-110316.15_amd64.deb
Wer es ganz sauber möchte:
Code: Select all
mv /opt/psa /opt/psa.old
mkdir -p {/opt/psa,/opt/psa/admin/htdocs/locales}
cp -av /opt/psa.old/bootstraper /opt/psa
cp -av /opt/psa.old/version /opt/psa
cp -av /opt/psa.old/admin/htdocs/locales/default /opt/psa/admin/htdocs/locales
Installiert nun den PsaAutoInstaller und führt diesen aus
Code: Select all
dpkg -i psa-autoinstaller_3.9.0-110316.15_amd64.deb
/opt/psa/admin/sbin/autoinstaller
Wenn es auf Anhieb durchgeht ohne massive Fehler, dann muss an der Datenbank jetzt noch Hand angelegt werden. Ansonsten die Fehler bereinigen.
A. Installation durchgelaufen
Wenn ein Fehler abgearbeitet ist immer mit
Code: Select all
/opt/psa/bootstrapper/xxx/bootstrapper.sh repair
B. Installation abgebrochen
Autoinstaller erneut starten!
Fehlerliste
Über folgende bin ich gestolpert
Mail-Driver
Fehlerort:
während der Installation
Lösung:
Es fehlt entweder psa-mail-qc-driver oder plesk-mail-qc-driver
Je nach Sytemvorgeschichte reicht ein apt-get install auf eins der Pakete oder ein apt-get install psa-mail
Locales missing
Fehlerort:
Nach der Installation
Lösung:
Nach der Installation fehlt lustiger weise das englische locale-Verzeichnis. Einfach reinstallieren da es (bei mir jedenfalls) als installiert markiert ist
Code: Select all
apt-get install --reinstall psa-locale-base-en-us
Zertifikate kopieren
Hat jemand sich an der sauberen Lösung probiert, so kopiert noch die Zertifkate aus dem alten /opt/psa.old/var/certificates an die gleiche Stelle wie im neuen /opt/psa !
Plesk 10 - Panelprobleme
Erst einmal ins Panel einloggen. Dies sollte jetzt ohne Probleme funktionieren!
Im Panel sieht man die Übersichtsseite. Fehlermeldungen á la "Configuration could not be updated" vorerst ignorieren.
Bei mir hat ein Klick auf die Administrationlinks dazu geführt, dass erstmal gar nichts ging.
Warum? Ganz einfach: Plesk-Updater hat die Datenbank nicht hochgezogen!!
Zum Glück ist es nur eine Tabelle die hier Probleme macht!
Der reguläre Fehlertext ist
Dies zu beheben geht auf die mysql-Console und führt folgendes Script ausSQLSTATE[42S22]: Column not found: 1054 Unknown column 's.custom' in 'where clause'
Code: Select all
ALTER TABLE Subscriptions ADD custom ENUM('true', 'false') NOT NULL DEFAULT 'false';
ALTER TABLE Subscriptions ADD uuid VARCHAR(36) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL;
ALTER TABLE Subscriptions ADD UNIQUE (object_id, object_type);
ALTER TABLE Subscriptions ADD UNIQUE (uuid);
User-Control panel
Es kam bei mir vor, dass das User-Control panel nicht auf ging. Die Lösung die ich gefunden habe:
JEDEN Kunden anklicken dort "Edit contact details" und dann einfach auf "OK" zum Speichern der nicht geänderten Werte drücken :arrow: User-Control panel geht wieder!!
Wer weiß wie das automatisch geht möge es doch bitte mitteilen :)
Webserver configuration could not be updated
So, der aller lustigste Fehler überhaupt!
Mein Server besitzt zwei Ips und Plesk 10 hat die Konfigurationsschicht "etwas" geändert.
Nach über einer Stunde am rumsuchen warum die Domains keine Config-Dateien bekommen haben, das Resultat:
Klickt jede Domain an, dort auf "Change Host-Settings" und wählt dort die IP aus!!. Ein finaler Klick auf "Save" und schon wie durch Zauberhand wird die Konfiguration für diese Domain erzeugt!!
Ich habe auch keine automatisierte Lösung jetzt finden können (ok es war mittlerweile 2:30 Uhr in der früh und langsam aber sicher war ich kurz davor mir den Kopf gegen die Wand zu schlagen aufgrund dieser stumpfsinnigen Fehler) und 49 Domains komplett durchgeklickt...
Hinweis
Prüft vorher über "Tools & Settings" dass Plesk eure Ips erkannt hat. Draufklicken, ansehen und speichern drücken.
Der ultimative Spaß kommt bei den Forwarding-Domains:
1. Forwarding-Url in die Zwischenablage kopieren.
2. Webhosting-Setting auf "NONE" (!) setzen
3. Speichern
4. Webhosting-Setting auf "Forward"
5. IP Auswählen(!!!!)
6. Url eintragen
7. Speichern
Kommt mal auf so eine Idee! Ich hab echt gedacht ich Fall vom Glauben ab...
Sicherheitslücke Statistics
Mir ist dann später noch aufgefallen, dass Plesk 10 keine protected directories mehr anlegt für die statistics! Das heißt: jeder der weiß dass Ihr Plesk einsetzt kann über "http://domain.tld/statistics" bzw. "http://domain.tld/webstat" in Euren Statistiken lesen.
Um das global zu umgehen habe ich mir eine Lösung überlegt. Sie ist zwar nicht perfekt (ich sage am Schluss warum), aber sie ist schon einmal wesenlich geschützter als das Standardverhalten
Dazu müssen folgene Pakete installiert und aktiviert werden
Code: Select all
apt-get install libapache2-mod-authnz-external pwauth
a2enmod authnz_external
Code: Select all
vi /opt/psa/admin/conf/templates/default/domain/domainVirtualHost.php
Code: Select all
<?php if ($VAR->domain->www): ?>
ServerAlias "www.<?php echo $alias->asciiName ?>"
<?php endif; ?>
<?php endforeach; ?>
Code: Select all
<IfModule mod_authnz_external.c>
DefineExternalAuth pwauth<?php echo $VAR->domain->physicalHosting->login ?> pipe /usr/sbin/pwauth
</IfModule>
<?php
$preDocRoot = $OPT['ssl'] ? $VAR->domain->physicalHosting->httpsDir : $VAR->domain->physicalHosting->httpDir;
$preDocRoot = preg_replace("/http(s)?docs/", "", $preDocRoot);
?>
<Directory "<?php echo $preDocRoot; ?>statistics">
AuthType Basic
AuthName "Restricted Access"
<IfModule mod_authz_user.c>
AuthzUserAuthoritative On
</IfModule>
Require user <?php echo $VAR->domain->physicalHosting->login ?>
<IfModule mod_authnz_external.c>
AuthBasicProvider external
AuthExternal pwauth<?php echo $VAR->domain->physicalHosting->login ?>
</IfModule>
</Directory>
<?php
unset($preDocRoot);
?>
Code: Select all
/opt/psa/admin/bin/httpdmng --reconfigure-all
Was macht der eingefügte Teil in der Config?
Wir benutzen hier eine externe Authentifizierung. Das heißt es ist unnötig eine .htpasswd anzulegen und diese zu pflegen.
Zu gut um wahr zu sein?!
In der Tat, es gibt einen kleinen Drawback. Die direktive "require user <username>" wird seltsamerweise komplett ignoriert. Das bedeutet jeder gültige Benutzer kann rein (effektiv ein "Require valid-user").
Persönlich finde ich das unschön, aber dazu sollte man beachten:
Der Nutzer muss wissen, dass...
1. ...die Fremddomain auf dem gleichen System ist wie er
2. ...hier kein .htpasswd benutzt wird
Wenn hierfür jemand eine bessere (ebenso voll automatische) Lösung hat oder eine Idee hat diese Methode zu verbessern, so bin ich gerne dafür offen :-D
PSA-DB-Dump
Jetzt sollte erst einmal die Konfigurationsdatenbank gedumpt werden!
Plesk Billing*
Wer dies nicht braucht, der kann es wie folgt los werden
Code: Select all
/usr/local/psa/bin/sso --disable
apt-get purge plesk-billing plesk-billing-plugins
Code: Select all
DELETE FROM cl_param where param='ppb-url';
PSA Webmail
Ein Satz: "Kaputt @Stock". Es funktioniert NICHT! Ich schlage euch die Lösung vor, welche ich benutze:
Ladet das Horde-Projekt in der aktuellsten Fassung mit allen von euch benötigten Plugins runter. Setzt das Horde-Framework in einem Webspace in dem ihr Zugriff habt auf.
Seit hier damit fertig, verschiebt das fix und fertige Verzeichnis nach
/usr/share/horde
Dann noch folgende Befehle
Code: Select all
chwon root.root /usr/share/horde -R
mv /usr/share/psa-horde /usr/share/psa-horde.orig
ln -s /usr/share/horde psa-horde
So, ich hoffe ich kann damit einigen Leuten mit Upgrade-Problemen helfen :) Vielleicht könnte man ja ein Sammeltopic daraus machen; da ich der Meinung bin, dass ich nur ein Subset der ganzen Plesk-Probleme abbekommen habe...
Grüße
Edit:
Nachtrag
qmail ohne Funktion
Das liegt daran, dass die xinetd-configurationfiles LEER sind!!
Hier hat ein anderer User den Inhalt gepostet. qmail funktioniert nach füllen der Dateien wieder bestens :)