Awstats auf Nginx Webserver nutzen

fehlt wasgeht sogutsehr guthat geholfen (No Ratings Yet)
Loading ... Loading ...
Werbung




Awstats ist ein Webserver-Auswertungstool, welches ziemlich genau die Besucher, Datenübertragung, Referer und noch vieles mehr anzeigt. Auf Apache lässt sich das Awstats sehr einfach einrichten.

Wer aber schonmal Awstats auf einem Nginx Server installieren wollte, hat wohl bemerkt, dass es nicht so einfach ist.
Ich gehe hier eine kurze Anleitung, wie es doch funktioniert.

Zunächst müssen wir eine PHP Datei erstellen, die die cgi Dateien parst. Die Datei kann überall abgelegt werden, es bietet sich aber folgender Pfad und Dateiname an:

/etc/nginx/cgi-bin/cgi-bin.php

Der Inhalt der cgi-bin.php:

<!--?php <br ?--> /*
* cgi2php parse
*/
$descriptorspec = array(
0 => array("pipe", "r"), // stdin is a pipe that the child will read from
1 => array("pipe", "w"), // stdout is a pipe that the child will write to
2 => array("pipe", "w") // stderr is a file to write to
);
$newenv = $_ENV;
$newenv["SCRIPT_FILENAME"] = $_ENV["X_SCRIPT_FILENAME"];
$newenv["SCRIPT_NAME"] = $_ENV["X_SCRIPT_NAME"];
if (is_executable($_ENV["X_SCRIPT_FILENAME"])) {
$process = proc_open($_ENV["X_SCRIPT_FILENAME"], $descriptorspec, $pipes, NULL, $newenv);
if (is_resource($process)) {
fclose($pipes['0']);
$head = fgets($pipes['1']);
while (strcmp($head, "\n")) {
header($head);
$head = fgets($pipes['1']);
}
fpassthru($pipes['1']);
fclose($pipes['1']);
fclose($pipes['2']);
$return_value = proc_close($process);
} else {
header("Status: 500 Internal Server Error");
echo("Internal Server Error");
}
} else {
header("Status: 404 Page Not Found");
echo("Page Not Found");
}
?>

Nun muss dem nginx-Server gesagt werden, was mit den cgi Dateien passieren soll. Dazu muss in der entsprechenden site-Datei folgender Passus hinzugefügt werden:

location ~ ^/cgi-bin/.*\.(cgi|pl|py|rb) {
gzip off;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index cgi-bin.php;
fastcgi_param SCRIPT_FILENAME /etc/nginx/cgi-bin/cgi-bin.php;
fastcgi_param SCRIPT_NAME /cgi-bin/cgi-bin.php;
fastcgi_param X_SCRIPT_FILENAME /usr/lib$fastcgi_script_name;
fastcgi_param X_SCRIPT_NAME $fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param REMOTE_USER $remote_user;
}

fastcgi_pass ist der Port, an dem der php5-cgi lauscht
fastcgi_param SCRIPT_FILENAME der Pfad zur cgi-bin.php Datei

Standardmäßig installiert sich Awstats in den Pfad /usr/lib/cgi-bin. Von daher lautet der Eintrag fastcgi_param X_SCRIPT_FILENAME “/usr/lib$fastcgi_script_name”.
Das /cgi-bin/awstats.pl kommt vom Aufruf selbst.

Zusätzlich muss der Pfad der Icons noch angepasst werden (in der sites Datei von nginx):

location /icon {
root /usr/share/awstats;
}

Nach dem Restart des Nginx-Severs /etc/init.d/nginx restart sollte der Awstats nun auf dem Pfad

http://www.domain.tld/cgi-bin/awstats.pl

zu erreichen sein.

bisherige Suchbegriffe:

  • awstats nginx
  • nginx awstats


Werbung


Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *


*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>