Froxlor - Apache zu Nginx - Aufgabe des Lebens?

  • Schönen guten Abend liebe Netcupper,


    heute melde ich mich mit einem Problem, welches mich zur Zeit sehr beschäftigt. Ich nenne dieses Problem mal Apache.
    Unzwar frisst das gute alte Apache bei EINEM Homepage Besucher ca. 50% des CPU´s. Was ist wenn nun 10 Leute zur gleichen Zeit die Homepage abrufen möchten?
    Also dachte ich mir ich wechsle zum performanten Nginx. Leichter gesagt als getan :)


    Ich benutze in dem Fall den Rootserver L mit Debian 6 Squeeze und Froxlor.


    Ich bin wie folgt vorgegangen trotz alledem hat es nach mehreren Versuchen leider nicht geklappt:


    • apt-get update
    • apt-get upgrade
    • apt-get install nginx (ohne angepasster sources list)
    • apt-get install php5-cgi
    • weiter zu Froxlor: Konfirguration -> Distribution=Debian 6.0 Squeeze, Service=Webserver(HTTP), Daemon=Nginx Webserver
    • Anpassen der Nginx.conf wie Froxlor vorgibt
    • Anlegen der php-fcgi Datei wie Froxlor vorgibt
    • rm /etc/nginx/sites-enabled/default
    • mkdir -p /var/customers/webs/
    • mkdir -p /var/customers/logs/
    • mkdir -p /var/customers/tmp
    • chmod 1777 /var/customers/tmp
    • chmod u+x /etc/init.d/php-fcgi
    • Starten von php-fcgi
    • weiter zu Froxlor: Einstellungen -> Webservereinstellungen=Nginx
    • weiter zu Froxlor: Configs neu schreiben (Danach auch brav gewartet bis der Cron Job gestartet ist)
    • Apache gestoppt
    • Nginx gestartet

    Und siehe da:"Firefox kann keine Verbindung zu dem Server unter 5.xx.xxx.xxx aufbauen."
    Mittlerweile verzweifle ich schon denn ich weiß nicht wo der Fehler sein könnte.


    Hier nochmal die nginx.conf und die php-fcgi:
    nginx.conf


    php-fcgi:


    Ich hoffe ihr könnt mir vielleicht helfen!
    Liebe Grüße

  • Moin bjo,


    jaein die Configs in /etc/nginx/sites-enabled sind noch die Standard Configs (oder hat das Froxlor gemacht?) die so aussieht:



    Bei invoke-rc.d nginx start bekomme ich keine Fehlermeldungen.

    Code
    root@**************:~# invoke-rc.d nginx start
    Starting nginx: nginx.
  • Genau die habe ich gelöscht :)
    Wenn ich /etc/nginx/sites-enabled/default wieder hinzufüge, startet nginx, ist im Web erreichbar doch ich bekomme einen forbidden.
    Das könnte daran liegen das in der /etc/nginx/sites-enabled/default keine php Dateien eingetragen waren. Also machte ich dies schnell.
    Der forbidden war zwar weg doch, als ich auf die Seite gegangen bin, startete bei mir ein Download einer PHP Datei.


    Das habe ich übrigens noch nicht gemacht (wollte Froxlor):


    Zitat

    Bitte beachten Sie: Das MySQL-Passwort wurde aus Sicherheitsgründen nicht ersetzt.
    Bitte ersetzen Sie "MYSQL_PASSWORD" manuell durch das entsprechende Passwort.
    Falls Sie es vergessen haben sollten, finden Sie es in der Datei "lib/userdata.inc.php".


    Ich benutze übrigens nginx/0.7.67.

  • Die default muss weg, sonst kollidiert sie vermutlich mit einem Froxlor-Vhost. Wenn du sie weglässt, startet nginx nicht? Und warum nutzt du Squeeze und nicht Wheezy, was das aktuelle stable wäre?

  • Weil ich dachte ich habe Squeeze :)

    Ich habs jetzt nochmal mit Wheezy versucht und die Default gelöscht. Gleicher Fehler wie bisher.
    Die Shell sagt nginx sei gestartet doch der webserver ist nicht erreichbar.


    Die Config sieht mit Wheezy logischerweise anders aus. Ich poste sie mal vielleicht enthält sie ja Fehler:


  • So langsam aber sicher bin ich mehr als irritiert!


    Was hat Wheezy mit dem Löschen von der Default-Konfigurationsdatei von nginx zutun?
    Richtig, nichts.


    Zitat

    Die default muss weg, sonst kollidiert sie vermutlich mit einem
    Froxlor-Vhost. Wenn du sie weglässt, startet nginx nicht? Und warum
    nutzt du Squeeze und nicht Wheezy, was das aktuelle stable wäre?

    Das ist gelinde gesagt Unsinn, denn da wird nur der Aufruf der DNS-Einträge hin geleitet und zur Ausführung gebracht, was unter /var/www zu finden ist.
    Wenn man sich den Quellcode von Post 2 ansieht, steht das da auch drin.
    In dem Quellcode ist keine Domain hinterlegt, also wird alles in die Default-Route geleitet (/var/www).


    vHosts werden in einer jeweiligen, separaten Datei hinterlegt, man kann sogar mehrere Domains in einer hinterlegen, wenn ein und die selbe Seite über mehrere Domains erreichbar sein soll, nur Froxlor kann das nicht.


    Konkrete Abhilfe schafft das Studium der nginx-Dokumentation, da findet man dann so etwas hier: How nginx processes a request


    Froxlor übernimmt eigentlich alles und ich kann mich nicht erinnern jemals in den Anweisungen von Froxlor gelesen zu haben, irgend welche Dateien zu löschen, wenn es um die Einrichtung von nginx ging, schon gar nicht die Default-Datei.


    Mag sich vielleicht geändert haben, denn mittlerweile administriere ich nginx nur noch von Hand und lasse da ganz bestimmt keine Webanwendung mehr ran.


    Zu Deinem eigentlichen Problem und das werde ich jetzt mal ohne weitere Infos aus dem Kopf machen.


    Deine Seiten liegen ja unter ihren Root-Verzeichnissen, eingerichtet unter Apache.


    Um diese Seiten über nginx und Froxlor zu administrieren, wirst Du die Domains in Froxlor anlegen müssen, die Pfade zu den Rootverzeichnissen anpassen und nginx, resp. Froxlor, die Rechte auf diese Verzeichnisse geben müssen. Danach sollten weitere vHost-Dateien in /etc/nginx/sites-enabled/ zu finden sein, die dafür sorgen sollten, dass die Seiten auch aufgerufen werden können.


    Alternativ geht auch, Froxlor die Verzeichnisse anlegen zu lassen und die Seiteninhalte dahin zu kopieren.
    Datenbank technisch ändert sich nichts, diese müsste ja schon vorhanden sein.


    Andererseits muss man sich fragen, welche Anwendung 50% der CPU benötigt?
    Da sollte man wohl eher den Fehler suchen.
    Sollte es eine einfache Webseite sein, dürfte die Seite mehr als schlecht programmiert sein und ich würde den Betreiber auf den Pott setzen und gegebenenfalls sogar sperren, sollte keine Reaktion kommen. Schließlich kann es nicht sein, dass einer alle runter zieht.


    Im Übrigen wird an einer solchen Seite auch nginx nichts ändern können, auch wenn nginx wesentlich performanter ist, als dieses Riesenbaby Apache. :)


    Noch als kleiner Tipp!
    Man kann nginx auf einen anderen Port lauschen lassen, damit er nicht mit Apache kollidiert.
    Damit gewinnst Du Zeit und kannst die Seiten unter nginx testen, auch wenn die Leute auf den Indianer zugreifen.

    Schöne Grüße aus der Lüneburger Heide!
    Thomas

  • Als Kommandos für nginx unter Wheezy listet Froxlor jedenfalls auf:

    Code
    rm /etc/nginx/sites-enabled/default
    mkdir -p /var/kunden/webs/
    mkdir -p /var/kunden/logs/
    mkdir -p /var/kunden/tmp/
    chmod 1777 /var/kunden/tmp/
    chmod u+x /etc/init.d/php-fcgi


    Zudem erstellt Froxlor einen eigenen Vhost für sich auf <ip>:80 default; - sofern nun in sites-enabled/default ebenso ein default-Vhost definiert ist, dürfte das IMHO zu Problemen führen.

  • Ich habe so langsam das Gefühl, dass Apache die Requests annimmt und sie an nginx weiter leitet.


    Denn:


    - Froxlor verlangt nicht das ich nach der Nginx Config Apache stoppe
    - Wenn ich dann Apache stoppe bekomme ich einen Error
    - Deshalb wurde vielleicht /etc/nginx/sites-enabled/default gelöscht da Apache die Requests annehmen könnte und sie an Nginx weiter leitet?
    - Als beide Webserver liefen und ich einen Belastungstest durchführte hatte ich das Gefühl es sei besser geworden. Die CPU kam dabei fast nie auf 100%. Nginx hat aber laut htop 0% CPU verbraucht.


    Ist was an den Behauptungen dran?
    Falls ja, müsste ich dann Froxlor und Apache komplett entfernen und Nginx installieren?


    Könnte der hohe CPU Verbrauch auch an der Apache Config liegen?



    Zitat

    Sollte es eine einfache Webseite sein, dürfte die Seite mehr als schlecht programmiert sein und ich würde den Betreiber auf den Pott setzen und gegebenenfalls sogar sperren, sollte keine Reaktion kommen. Schließlich kann es nicht sein, dass einer alle runter zieht.


    Diese eine Webseite ist zugegeben etwas aufwendiger Designt läuft aber mit Wordpress. Ein frisch installiertes Wordpress verbraucht pro Aufruf ca. 15% welches bei 10 gleichzeitigen Aufrufen auf über 100% kommen würde. Kann man das so überhaupt berechnen? :D

  • Hallo,


    hier wird die ganze Zeit von der /etc/nginx/sites-enabled/default gesprochen.
    Aber wurden überhaupt weitere configs angelegt? Denn dann wäre klar, warum nginx nicht antwortet.
    ruf mal

    Code
    nginx -t

    auf. Damit überprüft nginx seine config und sagt dir auch, was nicht stimmt.