Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

ISPConfig: apache durch nginx ersetzen

In dieser Anleitung zeige ich, wie man Apache durch Nginx mit ISPConfig 3.0.5.4 ersetzen kann. Ich habe verschiedene Seite mit Joomla 2.x, Joomla 3.x, WordPress und eigener Codes migriert.

Ich verwende dazu ISPConfig 3.0.5.4.p6 installiert nach dem Perfect Server Howto von howtoforge.com.

Es gibt ein paar Unterschieder zwischen Apache und nginx, die vor Der Umstellung beachtet Werden müssen:
nginx unterstützt keine .htaccess
nginx verwendet eigene rewrites und kein mod_rewrite-Modul wie Apache

Für beides gibt es verschieden Online-Konverter wie www.anilcetin.com. Dabei muss aber immer daran gedacht werden, dass der Erfolg nicht garantiert werden kann und jede Seite Nach Der Umstellung getestet werden sollte.

Sobald der Webserver in ISPConfig von Apache auf nginx umgestellt ist, sind die Apache-Direktiven nicht mehr über das Interface ersichtlich. Man kann entweder vorher alle Direktiven kopieren oder aber (und das geht auch nach der Umstellung), die Direktiven aus der Datenbank in mysql oder mit phpMyAdmin auslesen.
SELECT domain, apache_directives FROM web_domain WHERE apache_directives != '';

DIe vorhandenen .htaccess Files lassen sich mit find /var/www/clients/ -name .htaccess -not -path "*/stats/*" finden.

1. nginx installieren
apt-get install nginx

2. php-fpm installieren
apt-get install php5-fpm
und in /etc/php5/fpm/php.ini zwei Werte überprüfen:

cgi.fix_pathinfo=0
date.timezone=”Europe/Berlin”

php-fpm durch /etc/init.d/php5-fpm reload neu laden.

Ab dieser Stelle ist zwar nginx installiert, der aktive Webserver ist aber weiterhin Apache.

3. Wartungsmodus aktivieren
In ISPConfig unter System / Systemkonfiguration im Reiter Diverses den Wartungsmodus aktivieren, damit während der Umstellung keine weiteren Änderungen geschrieben werden

4. ISPConfig auf nginx umstellen
Die folgenden EInstellungen werden direkt in der Datenbank (dbispconfig) vorgenommen.
Die Tabelle server auswählen und server editieren:

Nach unten bis config scrollen und die Zeile [global] finden. In der folgenden Zeile dann

webserver=apache

durch

webserver=nginx

ersetzen.

Danach die Zeile [web] finden und darunter

server_type=apache

durch

server_type=nginx

ersetzen.

6. Damit das Web-Interface von ISPConfig über nginx erreichbar ist, die entsprechende ispconfig.vhost unter /etc/nginx/sites-available anlegen:
vi /etc/nginx/sites-avaliable/ispconfig.vhost
und einen der folgenden Inhalte einfügen:

mit SSL:

server {
    listen 8080;
        ssl on;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_certificate /usr/local/ispconfig/interface/ssl/ispserver.crt
        ssl_certificate_key /usr/local/ispconfig/interface/ssl/ispserver.key;
    server_name _;

    root /usr/local/ispconfig/interface/web/;

    client_max_body_size 20M;

    location / {
        index index.php index.html;
    }

# Serve Static Files directly
    location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$ {
        access_log off;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/lib/php5-fpm/ispconfig.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fastcgi_param PATH_INFO $fastcgi_script_name;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 256 4k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
    }

    location ~ /\. {
        deny all;
    }
}

ohne SSL:

server {
    listen 8080;
        ssl off;
    server_name _;

    root /usr/local/ispconfig/interface/web/;

    client_max_body_size 20M;

    location / {
        index index.php index.html;
    }

# serve static files directly
    location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$ {
        access_log off;
    }

    location ~ \.php$ {
        try_files $uri =404;
        include /etc/nginx/fastcgi_params;
        fastcgi_pass unix:/var/lib/php5-fpm/ispconfig.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fastcgi_param PATH_INFO $fastcgi_script_name;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 256 4k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
    }

    location ~ /\. {
        deny all;
    }
}

und den symlink durch
ln -s /etc/nginx/sites-available/ispconfig.vhost /etc/nginx/sites-enabled/000-ispconfig.vhost
erstellen.

7. Webseiten anpassen
Den Wartungsmodus deaktivieren und evtl. vorhandenen .htaccess-Dateien und Apache-Direktiven umwandeln und In ISPConfig für die jeweilige Webseite eintragen.

Falls nicht alle Webseiten angepasst werden mussten: unter Tools den Resync für alle Webseiten aufrufen.

8. Apache deaktivieren und nginx startern
/etc/init.d/apache2 stop
update-rc.d -f apache2 remove
/etc/init.d/nginx start

Done

Soll doch wieder Apache verwendet werden, reicht es die Schritt aus 4. und 8. rückgängig zu machen.



This post first appeared on Florian @it – Mein Persönliches IT-Blog, please read the originial post: here

Share the post

ISPConfig: apache durch nginx ersetzen

×

Subscribe to Florian @it – Mein Persönliches It-blog

Get updates delivered right to your inbox!

Thank you for your subscription

×