Wechsel von Apache zu Nginx

Nachdem ich in der letzten Zeit Probleme in WordPress hatte – der Art, dass die Kommentarfunktion seit Wochen nicht mehr funktionierte – habe ich mich vor Kurzem entschlossen, das Problem näher zu untersuchen. Im Kernel-Message-Buffer fand ich Hinweise über „verstorbene“ PHP-Prozesse (Segmentation fault).

Also bin ich auf die Idee gekommen, zu Nginx zu wechseln. Mein aktueller Stand ist der, dass ich meine Websites erfolgreich Portieren konnte. Die Anbindung läuft über php5-fpm. Auch unser (sys4 AG) Open-Source-Projekt automx liest sich problemlos über uWSGI ansteuern.

Bereits herausgefunden habe ich, dass es (aus gutem Grund) keinen .htaccess-Support in Nginx gibt.

Einen Punkt muss ich jetzt noch untersuchen:

– Derzeit teilen sich alle Seiten eine einzige php.ini

Alles noch im Anfangsstadium. Feedback welcome; auch was man vielleicht auch dringend noch ändern müsste 😉

Hier mal ein Beispiel meiner Website:


##
## www.roessner-network-solutions.com
##

server {
listen 193.239.107.38:80;

root /srv/www/virtual/de10000/htdocs;
index index.php index.html index.htm;

server_name roessner-network-solutions.com www.roessner-network-solutions.com;

location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm-de10000.sock;
fastcgi_index index.php;
include fastcgi_params;
}

access_log /var/log/nginx/access-de10000.log;
error_log /var/log/nginx/error-de10000.log;
}


##
## www.roessner-net.com
##

server {
listen 193.239.107.38:80;

server_name roessner-net.com www.roessner-net.com;

rewrite ^/$ https://www.roessner-network-solutions.com/ permanent;

access_log /var/log/nginx/access-de10000.log;
error_log /var/log/nginx/error-de10000.log;
}

Hier ein Beispiel für automx:


server {
listen 193.239.107.38:80;

server_name autoconfig.*;

rewrite /mail/config-v1.1.xml https://www.roessner-net.de/mail/config-v1.1.xml permanent;

access_log /var/log/nginx/access-de10000.log;
error_log /var/log/nginx/error-de10000.log;
}


##
## www.roessner-net.de
##

server {
listen 193.239.107.39:443;

root /usr/share/nginx/www;
index index.php index.html index.htm;

ssl on;
ssl_certificate /etc/ssl/certs/www.roessner-net.de.crt;
ssl_certificate_key /etc/ssl/private/www.roessner-net.de.key;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:5m;

ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers RC4:HIGH:!aNULL:!MD5:!kEDH;

server_name www.roessner-net.de;

location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm-system.sock;
fastcgi_index index.php;
include fastcgi_params;
}

# automx - autoconfig
location /mail/config-v1.1.xml {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9100;
}

# automx - autodiscover
location /autodiscover/autodiscover.xml {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9100;
}

access_log /var/log/nginx/access_ssl-de10000.log;
error_log /var/log/nginx/error_ssl-de10000.log;
}


##
## autodiscover.roessner-network-solutions.com
##

server {
listen 193.239.107.40:443;

root /usr/share/nginx/www;
index index.php index.html index.htm;

ssl on;
ssl_certificate /etc/ssl/certs/autodiscover.roessner-network-solutions.com.crt;
ssl_certificate_key /etc/ssl/private/autodiscover.roessner-network-solutions.com.key;
ssl_session_timeout 5m;
ssl_session_cache shared:SSL:5m;

ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers RC4:HIGH:!aNULL:!MD5:!kEDH;

server_name autodiscover.roessner-network-solutions.com;

# automx - autodiscover
location /autodiscover/autodiscover.xml {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9100;
}

access_log /var/log/nginx/access_ssl-de10014.log;
error_log /var/log/nginx/error_ssl-de10014.log;
}

Was hat sich nun geändert?

Im Augenblick habe ich das Gefühl mit deutlich weniger Arbeitsspeicher auszukommen. Ferner konnte ich mein WordPress-Problem lösen, da php5-fpm so nett ist und die Standrad-Fehlerausgabe ins Log schreibt. Letztlich fehlte eine Datenbankberechtigung, die wohl beim Serverumzug von Hetzner zu meinem Server falsch übernommen wurde. Letztlich war Apache also nicht ursächlich die Quelle des Problems, aber Nginx hat mir geholfen die Ursache zu lokalisieren. Außerdem schaue ich mir einfach gerne neue Entwicklungen an; Nginx gefällt mir!

2 Gedanken zu „Wechsel von Apache zu Nginx

  1. Tom

    Hallo, ich versuche auch gerade den Umstieg auf nginx, nur bekomme ich das Pythonscript nicht zum laufen. Mit den obigen nginx-Einstellungen und Deinen uwsgi-Hinweisen von http://comments.gmane.org/gmane.mail.automx.user/44 bekomme ich die Meldung „uWSGI Error Python application not found“.

    In der nginx-Conf habe ich nun:

    # automx – autodiscover
    location /autodiscover/autodiscover.xml {
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:9100;
    }

    und in der uwsgi-Conf:

    [uwsgi]
    uid = www-data
    gid = www-data

    socket = 127.0.0.1:9100

    vacuum = true
    memory-report = true
    master = true
    processes = 10
    python-path = /usr/local/lib/automx
    module = automx_wsgi

    Die Installation im Dateisystem der automx-Dateien sieht wie folgt aus:

    /etc/automx.conf
    /usr/lib/python2.7/automx
    /usr/lib/python2.7/automx/config.py
    /usr/lib/python2.7/automx/config.pyc
    /usr/lib/python2.7/automx/__init__.py
    /usr/lib/python2.7/automx/__init__.pyc
    /usr/lib/python2.7/automx/ordereddict.py
    /usr/lib/python2.7/automx/view.py
    /usr/lib/python2.7/automx/view.pyc
    /usr/local/bin/automx-test
    /usr/local/lib/automx
    /usr/local/lib/automx/automx_wsgi.py

    Was mache ich falsch? 😉

  2. Tom

    Hat sich erledigt. Mein Problem war, dass das Debian Paket mit uwsgi immer Python 2.6 gezogen hat und das automx-Skript Python 2.7 benötigt. Ich habe dann uwsgi mit Python 2.7 selbst gebaut und nun läuft es. Viele Grüße!

Kommentare sind geschlossen.