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 installierenapt-get install nginx
2. php-fpm installierenapt-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 durchln -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