Der Perfekte Server - Debian Squeeze (Debian 6.0) mit BIND, Dovecot & Nginx [ISPConfig 3] - Seite 4

10 Installation von Postfix, Dovecot, Saslauthd, MySQL, phpMyAdmin, rkhunter, binutils

Sie können Postfix, Dovecot, Saslauthd, MySQL, phpMyAdmin, rkhunter und binutils mit einem einzigen Befehl installieren:

apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d sudo

Sie werden die folgenden Fragen sehen:

General type of mail configuration: <-- Internet Site System mail name: <-- server1.example.com New password for the MySQL "root" user: <-- IhrrootsqlPasswort Repeat password for the MySQL "root" user: <-- IhrrootsqlPasswort
Wir wollen, dass MySQL alle Netzwerkschnittstellen benutzt, nicht nur localhost, deshalb editieren wir die /etc/mysql/my.cnf Datei und kommentieren die folgende Zeile aus bind-address = 127.0.0.1:

vi /etc/mysql/my.cnf


[...]
# Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. #bind-address = 127.0.0.1 [...]
Starten Sie dann MySQL neu:

/etc/init.d/mysql restart

Überprüfen Sie nun, ob das Networking aktiviert ist:

netstat -tap | grep mysql

Die Ausgabe sollte etwa so aussehen:

root@server1:~# netstat -tap | grep mysql
tcp        0      0 *:mysql                 *:*                     LISTEN      10617/mysqld
root@server1:~#


11 Installation von Amavisd-new, SpamAssassin, And Clamav

Zur Installation von amavisd-new, SpamAssassin und ClamAV benutzen Sie

apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl

Das ISPConfig 3 Setup benutzt amavisd, welcher die SpamAssassin Filter Library intern lädt, sodass Sie SpamAssassin stoppen können um Arbeitsspeicher zu sparen:

/etc/init.d/spamassassin stop
update-rc.d -f spamassassin remove


12 Installation von Nginx, PHP5 (PHP-FPM) und Fcgiwrap

Nginx ist als Paket aus der Dotdeb Repository verfügbar (die Pakete aus der offiziellen Nginx Repository funktionieren zur Zeit dieses Schreibens nicht mit ISPConfig), um sie also zu installieren, benutzen Sie den folgenden Befehl:

apt-get install nginx

Apache sollte hierbei nicht installiert sein, auch wenn es später als Abhängigkeit von phpMyAdmin installiert werden wird. Entfernen Sie Apache und alle verwandten Pakete mit:

apt-get purge apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils

Danach können Sie nach Wahl auch noch

apt-get autoremove

benutzen um sicherzugehen, dass alle nicht mehr benötigten Abhängigkeiten deinstalliert werden.

Um PHP5 mit PHP-FPM (FastCGI Process Manager) als Alternative zur PHP FastCGI Implementation, mit einigen zusätzlichen Features im Hinblick auf Auslieferung von Websites aller Größen, besonders aber von größeren, häufig besuchten, in Nginx zu benutzen, installieren Sie es folgendermaßen:

apt-get install php5-fpm

PHP-FPM ist ein Daemonprozess mit dem Init-Skript /etc/init.d/php5-fpm welcher als FastCGI Server auf Port 9000 läuft.

Um MySQL Unterstützung in PHP zu bekommen installieren Sie das php5-mysql Paket. Sie könnten auch einige zusätzliche PHP5 Module für Ihre Web-Anwendungen gebrauchen; so können Sie nach diesen suchen:

apt-cache search php5

Wenn Sie sich nicht um Festplattenplatz sorgen müssen, können Sie sie alle installieren, egal, ob Sie sie derzeit brauchen oder nicht:

apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl

Sie können später immernoch die jenigen deinstallieren, die Sie nicht brauchen.

APC ist ein kostenloser PHP Opcode Cacher zum Optimieren von PHP Zwischencode. Es ist anderen PHP Opcode Cachern wie eAccelerator und XCache ähnlich und es wird ausdrücklich empfohlen einen von diesen zu installieren um Ihre PHP Seite zu beschleunigen.

APC kann folgendermaßen installiert werden:

apt-get install php-apc

Starten Sie PHP-FPM nun neu:

/etc/init.d/php5-fpm restart

Fcgiwrap ist ein CGI Wrapper, der auch für komplexere CGI Skripts funktionieren sollte und für Shared Hosting Umgebungen eingesetzt werden kann, da er jedem vHost erlaubt, sein eigenes cgi-bin Verzeichnis zu benutzen. Für CGI Unterstützung in Nginx müssen Sie folgendermaßen das Fcgiwrap Paket installieren:

apt-get install fcgiwrap

Nach der Installation sollte der fcgiwrap Daemon bereits gestartet werden; sein Socket ist /var/run/fcgiwrap.socket. Sollte er noch nicht laufen, benutzen Sie das /etc/init.d/fcgiwrap Skript, um ihn zu starten.

Das war's! Wenn Sie nun einen Nginx vHost erstellen, wird ISPConfig 3 automatisch die vHost Konfiguration übernehmen.

13 Installation von phpMyAdmin und Konfiguration von HTTPS für vHosts

Um phpMyAdmin zu installieren, benutzen Sie folgenden Befehl:

apt-get install phpmyadmin

Sie werden mit folgenden Fragen konfrontiert:

Web server to reconfigure automatically: <-- wählen Sie keines der beiden (da nur apache2 und lighttpd zur Auswahl stehen) Configure database for phpmyadmin with dbconfig-common? <-- No
Wählen Sie 'Yes' so werden Sie einen Fehler bekommen, über den Sie sich hier erkundigen können: http://serverfault.com/questions/341116/setting-up-phpmyadmin-got-a-mysql-syntax-error
Da Apache2 als Abhängigkeit von phpMyAdmin installiert wird, stoppen Sie es nun durch

/etc/init.d/apache2 stop

und entfernen Apaches Systemstartlinks:

insserv -r apache2

Starten Sie danach nginx:

/etc/init.d/nginx start

Sie finden phpMyAdmin nun im /usr/share/phpmyadmin/ Verzeichnis.

Nachdem Sie ISPConfig 3 installiert haben, können Sie folgendermaßen darauf zugreifen:

Der ISPConfig 3 Apps vHost auf Port 8081 unter Nginx liefert eine phpMyAdmin Konfiguration mit, Sie können also http://server1.example.com:8081/phpmyadmin oder http://server1.example.com:8081/phpMyAdmin benutzen, um auf phpmyAdmin zuzugreifen.

Wollen Sie ein /phpmyadmin oder /phpMyAdmin Alias einrichten, dass Sie von Ihren Webseiten aus benutzen können, ist dies etwas komplizierter als für Apache, da nginx keine globalen Aliase hat (also Aliase, welche für alle vhosts definiert werden können). Sie müssen Ihre Aliase deshalb für jeden vhost definieren, von dem aus Sie auf phpMyAdmin zugreifen wollen.

Um dies zu tun, fügen Sie folgendes in das nginx Directives Feld im Options Reiter der Webseite in ISPConfig ein (nachdem Sie es später in diesem Tutorial installiert haben):
 location /phpmyadmin {
root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; }
Benutzen Sie für Ihren vhost https statt http, sollten Sie die Zeile fastcgi_param HTTPS on; zu Ihrer phpMyAdmin Konfiguration hinzufügen:
 location /phpmyadmin {
root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS on; # <-- add this line fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; }
Benutzen Sie für Ihren vhost sowohl http als auch https, müssen Sie die folgende Sektion zur http {} Sektion in /etc/nginx/nginx.conf hinzufügen (vor jeglichen include Zeilen) welche überprüft, ob der Besucher http oder https benutzt und dementsprechend die $fastcgi_https Variable setzt (welche in der phpMyAdmin Konfiguration benutzt wird):

vi /etc/nginx/nginx.conf

[...]
http { [...] ## Detect when HTTPS is used map $scheme $fastcgi_https { default off; https on; } [...] } [...]
Laden Sie anschließend Nginx neu:

/etc/init.d/nginx reload

Gehen Sie danach wieder in das nginx Directives Feld und anstatt der Zeile fastcgi_param HTTPS on; fügen Sie nun  fastcgi_param HTTPS $fastcgi_https; hinzu, sodass Sie phpMyAdmin sowohl für http als auch für https Anfragen benutzen können:
 location /phpmyadmin {
root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS $fastcgi_https; # <-- diese Zeile muss hinzugefügt werden fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include /etc/nginx/fastcgi_params; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; }

3 Kommentar(e)

Zum Posten von Kommentaren bitte

Kommentare

Von: Dirk67

unter Punkt 19 muss es für die /etc/fail2ban/filter.d/dovecot-pop3imap.conf
heißen:
-------------
[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login (auth failed|Aborted login (tried to use disabled|Disconnected (auth failed|Aborted login (d+ authentication attempts).*rip=(?PS*),.*
ignoreregex =
-------------
--> http://wiki.dovecot.org/HowTo/Fail2Ban


Von: Dirk67

Mist... die noetigen Backslashes werden hier nicht mir eingefuegt (ggf. hatte der Autor das selbe Problem) ;-)
also einfach hier schauen --> http://wiki.dovecot.org/HowTo/Fail2Ban


Von: beyerservice

i got this: http://stackoverflow.com/questions/14972792/nginx-nginx-emerg-bind-to-80-failed-98-address-already-in-use

nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)

had to add ipv6only=on to the [::]:80



This error can be caused if you have a nginx configuration that is listening on port 80 and also on port [::]:80.

I had the following in my default site-available file:

listen 80;
listen [::]:80 default_server;


listen 80;
listen [::]:80 ipv6only=on default_server;