Plesk

Aus Wiki.hidden.ch
Wechseln zu: Navigation, Suche

Lange Antwortzeiten (Lieferfristen ;) für SMTP-Verbindungen

Das verwendete qmail macht per default reverse-lookups. Das kann ziemlich lange dauern. Die einfache Abhilfe ist im den Files /etc/xinetd.d/smtp_psa und /etc/xinetd.d/smtps_psa die Zeile server_args um den Parameter "-Rt0" zu erweitern. Es empfiehlt sich diesen Parameter als ersten zu übergeben. Die Zeile sollte nun wie folgt aussehen:

server_args = -Rt0 /var/qmail/bin/relaylock /var/qmail/bin/qmail-smtpd /var/qmail/bin/smtp_auth 
 /var/qmail/bin/true /var/qmail/bin/cmd5checkpw /var/qmail/bin/true

Lange Antwortzeiten (Lieferfristen ;) für FTP-Verbindungen

Der verwendete ProFTPD macht per default reverse-lookups. Das kann ziemlich lange dauern. Die einfache Abhilfe ist im Files /etc/proftpd.conf folgende Zeilen hinzuzufügen:

UseReverseDNS OFF
IdentLookups OFF


PHP rebuilden

Es kann sein, dass man das vorinstallierte PHP upgraden muss. Das kann ein ziemlich mühsamer job sein... Zuerst kopiert man sich einen output vom phpinfo():

'./configure' '--with-apxs=/usr/home/builder/tmp_serge/psa_PLESK_7_5_3/apache1/files/apxs' 
'--prefix=/usr/local/psa/apache' '--with-regex=php' '--with-config-file-path=/usr/local/psa/apache/conf' 
'--enable-sockets' '--enable-track-vars' 
'--with-mysql=/usr/home/builder/tmp_serge/psa_PLESK_7_5_3/release/dist/usr/local/psa/mysql' 
'--with-pgsql=/usr/home/builder/tmp_serge/psa_PLESK_7_5_3/release/dist/usr/local/psa/postgresql' 
'--with-iodbc=/usr/home/builder/tmp_serge/psa_PLESK_7_5_3/lib/dist' 
'--with-imap=/usr/home/builder/tmp_serge/psa_PLESK_7_5_3/lib/dist' '--with-imap-ssl' '--with-gd' 
'--with-jpeg-dir=/usr/home/builder/tmp_serge/psa_PLESK_7_5_3/lib/dist' 
'--with-png-dir=/usr/home/builder/tmp_serge/psa_PLESK_7_5_3/lib/dist' '--without-tiff' '--without-pdflib' 
'--with-gettext=/usr/home/builder/tmp_serge/psa_PLESK_7_5_3/lib/dist' 
'--with-openssl=/usr/home/builder/tmp_serge/psa_PLESK_7_5_3/release/openssl' '--with-zlib' 
'--disable-debug' '--enable-pear' '--with-mhash=/usr/home/builder/tmp_serge/psa_PLESK_7_5_3/lib/dist' 
'--with-curl=/usr/home/builder/tmp_serge/psa_PLESK_7_5_3/lib/dist' '--enable-ftp'
 '--enable-static' '--enable-mbstring' '--enable-mbregex' '--enable-xslt' 
'--with-xslt-sablot=/usr/home/builder/tmp_serge/psa_PLESK_7_5_3/lib/dist' 
'--with-sablot-js=/usr/home/builder/tmp_serge/psa_PLESK_7_5_3/lib/dist' 
'--with-expat-dir=/usr/home/builder/tmp_serge/psa_PLESK_7_5_3/lib/dist' 
'--with-iconv-dir=/usr/home/builder/tmp_serge/psa_PLESK_7_5_3/lib/dist' 
'--with-xml' '--with-dom=/usr/home/builder/tmp_serge/psa_PLESK_7_5_3/lib/dist'

Anschliessend lädt man den source von PHP.net runter und kompiliert das ganze:

-su-2.05b# tar xvfz php-4.3.11
...
-su-2.05b# cd php-4.3.11

Sollten module fehlen (z.b. sablot) dann installiert man die entsprechenden Ports.

Ich erstelle zum konfigurieren immer eine make.sh Datei mit folgendem Inhalt:

./configure \
--with-apxs=/usr/local/psa/apache/bin/apxs \
--prefix=/usr/local/psa/apache \
--with-regex=php \
--with-config-file-path=/usr/local/psa/apache/conf \
--enable-sockets \
--enable-track-vars \
--with-mysql=/usr/local/psa/mysql \
--with-pgsql=/usr/local/psa/postgresql \
--with-imap \
--with-gd \
--with-jpeg-dir \
--with-png \
--without-tiff \
--without-pdflib \
--with-gettext \
--with-openssl \
--with-zlib \
--enable-xml \
--disable-debug \
--enable-pear \
--without-iconv \
--with-mhash \
--with-curl \
--enable-ftp \
--enable-static \
--with-freetype-dir \
--with-imap-ssl \
--with-png-dir \
--enable-mbstring \
--enable-mbregex \
--enable-xslt \
--with-xslt-sablot \
--with-sablot-js \
--with-dom \
--with-dom-xslt \
--with-dom-exslt

Die Pfade und optionen müssen natürlich analog zum Obigen angepasst werden.

Anschliessend fürt man das Ganze aus, und hofft, dass alles klappt:

-su-2.05b# ./make.sh
loading cache ./config.cache
checking host system type... i386-unknown-freebsd4.9
....
Generating files
updating cache ./config.cache
creating ./config.status
creating php4.spec
creating main/build-defs.h
creating scripts/phpize
creating scripts/php-config
creating sapi/cli/php.1
creating main/php_config.h
main/php_config.h is unchanged
creating main/internal_functions.c
creating main/internal_functions_cli.c
+--------------------------------------------------------------------+
| License:                                                           |
| This software is subject to the PHP License, available in this     |
| distribution in the file LICENSE.  By continuing this installation |
| process, you are bound by the terms of this license agreement.     |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point.                            |
+--------------------------------------------------------------------+
|                          *** NOTE ***                              |
|            The default for register_globals is now OFF!            |
|                                                                    | 
| If your application relies on register_globals being ON, you       |
| should explicitly set it to on in your php.ini file.               |
| Note that you are strongly encouraged to read                      |
| http://www.php.net/manual/en/security.globals.php                  |
| about the implications of having register_globals set to on, and   |
| avoid using it if possible.                                        |
+--------------------------------------------------------------------+

Thank you for using PHP.

tja, dann heisst es nur noch:

-su-2.05b# make
Build complete.
(It is safe to ignore warnings about tempnam and tmpnam).

und anschliessend:

-su-2.05b# make install
Installing PHP SAPI module:       apache
[activating module `php4' in /usr/local/psa/apache/conf/httpd.conf]
cp libs/libphp4.so /usr/local/psa/apache/libexec/libphp4.so
chmod 755 /usr/local/psa/apache/libexec/libphp4.so
cp /usr/local/psa/apache/conf/httpd.conf /usr/local/psa/apache/conf/httpd.conf.bak
cp /usr/local/psa/apache/conf/httpd.conf.new /usr/local/psa/apache/conf/httpd.conf
rm /usr/local/psa/apache/conf/httpd.conf.new
Installing PHP CLI binary:        /usr/local/psa/apache/bin/
Installing PHP CLI man page:      /usr/local/psa/apache/man/man1/
Installing PEAR environment:      /usr/local/psa/apache/lib/php/
[PEAR] Archive_Tar    - already installed: 1.1
[PEAR] Console_Getopt - already installed: 1.2
[PEAR] PEAR           - already installed: 1.3.5
Wrote PEAR system config file at: /usr/local/psa/apache/etc/pear.conf
You may want to add: /usr/local/psa/apache/lib/php to your php.ini include_path
[PEAR] HTML_Template_IT- already installed: 1.1
[PEAR] Net_UserAgent_Detect- already installed: 2.0.1
[PEAR] XML_RPC        - already installed: 1.2.2
Installing build environment:     /usr/local/psa/apache/lib/php/build/
Installing header files:          /usr/local/psa/apache/include/php/
Installing helper programs:       /usr/local/psa/apache/bin/
  program: phpize
  program: php-config
  program: phpextdist

Anschliessend starten wir apache neu und vergelichen den output von phpinfo()


Falls irgendwelche PHP-Module fehlen, können diese natürlich separat hinzugefügt (und im PHP.ini aktiviert) werden.

Plesk & PEAR

Mit Plesk wird nebst einigen anderen Sachen auch PHP mit PEAR installiert. Leider ist PEAR per default nicht erreichbar wegen der open_basedir-Restriction. Hier ein kleiner Tipp wie man das für einzelne Domains wieder ermöglichen kann.

Im File /etc/php.ini folgenden Eintrag von

include_path = ".:"

auf

include_path = ".:/usr/share/pear"

anpassen.

Im Verzeichnis /home/httpd/vhost/<DOMAIN>/conf/ erstellt man die Datei vhost.conf mit folgendem Inhalt:

<Directory /home/httpd/vhosts/<DOMAIN>/httpdocs>
        <IfModule sapi_apache2.c> 
                php_admin_value open_basedir "/home/httpd/vhosts/<DOMAIN>/httpdocs:/usr/share/pear:/tmp"
        </IfModule> 
        <IfModule mod_php5.c> 
                php_admin_value open_basedir "/home/httpd/vhosts/<DOMAIN>/httpdocs:/usr/share/pear:/tmp"
        </IfModule> 
</Directory>

UPDATE: bei neueren Plesk-Installationen (>7.5.x) ist vhosts-Verzeichnis nach "/var/www/vhosts/" gewandert und ab Plesk 8.0 benötigt man zusätzlich den php5-Teil.

Danach auf der Shell folgende Kommandos absetzen:

-su-2.05b# /usr/local/psa/admin/sbin/websrvmng --reconfigure-vhost --vhost-name=<DOMAIN>
-su-2.05b# service httpd reload

Login gesperrt?

Plesk hat freundlicherweise (aus Sicherheitsgründen ;) die Angewohnheit nach drei falschen Eingaben des Passworts eines Accounts den Account zu sperren für einige Stunden. Das gilt auch für den Admin-Account. Wenn man früher wieder einloggen möchte muss man folgendes machen:

-su-2.05b# mysql --user=admin --password=<PLESKADMINPASSWORT> psa
mysql> delete from lockout;
mysql> quit

Datenbankpasswort der Kunden

Ein Kunde weiss nicht mehr welches Passwort er gesetzt hat für eine Datenbank? Folgende MySQL-Kommandos helfen dem Administrator:

-su-2.05b# mysql --user=admin --password=<PLESKADMINPASSWORT>
mysql> SELECT domains.name AS domainname, 
              data_bases.name AS db_name, 
              db_users.login AS db_login, 
              accounts.password AS db_password
       FROM domains
       LEFT JOIN data_bases ON domains.id = data_bases.dom_id
       LEFT JOIN db_users ON db_users.db_id = data_bases.id
       LEFT JOIN accounts ON accounts.id = db_users.account_id
       WHERE domains.name='<DOMAINNAME>';
mysql> quit

Plesk und Coldfusion...

Coldfusion funktioniert gar nicht!

Plesk hat bekannterweise den Bug (bis und mit 7.5.3), dass der falsche Pfad zum jrunserver.store-File im http.include angegeben wird:

 .
 .
 <IfModule mod_jrun20.c>
 .
 .
   JRunConfig Serverstore /opt/coldfusionmx//runtime/lib/wsconfig/psa/jrunserver.store
 .
 .
 </IfModule>
 .
 .

Wenn man den Pfad mal sucht findet man im wsconfig-Verzeichnis kein psa-Directory. Es findet sich aber ein anderes Verzeichnis mit jrunserver.store-File drin. Ein simpler Link auf dieses Verzeichnis löst schon die meisten Probleme... :)

Coldfusion und CFMAIL

Es scheint, als ob Coldfusion bei der Installation nicht alles korrekt aufsetzt und damit verunmöglicht Mails zu verschicken mit dem CFMAIL-Tag. Folgende Schritte musste ich unternehmen damit es sauber funktioniert:

1. Folgende Zeile muss ins File /etc/mailcap

text/html;; x-java-content-handler=com.sun.mail.handlers.text_html

2. Die Datei /usr/share/java/activation.jar muss ins selbe Verzeichnis wie die mail.jar-Datei im Coldfusion-Rootdirectory.

3. Die Mailspool-Directorys müssen erstellt werden:

-su-2.05b# cd /opt/coldfusionmx
-su-2.05b# mkdir -p Mail/Spool
-su-2.05b# mkdir -p Mail/Undelivr
-su-2.05b# chmod -R 777 Mail/

suexec-Probleme?

Immer als erste prüfen ob die Berechtigungen des suexec-Binaries korrekt sind:

[root@shared httpdocs]# ls -la /usr/sbin/suexec
-r-sr-xr-x  1 root apache 46009 Sep 26 16:14 /usr/sbin/suexec
[root@shared httpdocs]#