Rasta
30.07.2010, 16:56
2 Installation von MySQL 5.0
Zum Installieren von MySQL, starten wir:
aptitude install mysql-server mysql-client
Du wirst gebeten ein Passwort für den MySQL Root Benutzer festzulegen - dieses Passwort ist ebenso für root@localhost und auch für root@server1.example.com nötig, sodass wir hinterher kein Spezifisches MySQL Root PassworT manuell anlegen müssen:
New password for the MySQL “root” user: <-- deinrootsqlpasswort
Repeat password for the MySQL “root” user: <-- deinrootsqlpasswort
3 Installation von Nginx
Nginx ist als ein Paket von Debian Lenny verfügbar, welches wir wie folgt installieren können:
aptitude install nginx
Starte nginx anschliessend:
/etc/init.d/nginx start
4 Installation von PHP5
Wir können PHP% durch FastCGI in nginx zum Laufen bringen. Glücklicherweise unterstützt Debian Lenny ein FastCGI - verfügbare PHP5 Pakete welche wir wie folgt installieren (zusammen mit einigen PHP5 Modulen wie php5-mysql welches du benötigst, wenn du MySQL von den PHP scrips benutzen willst):
aptitude install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
Dann öffne /etc/php5/cgi/php.ini und füge die Zeile cgi.fix_pathinfo = 1 am Ende der Datei ein:
vi /etc/php5/cgi/php.ini
[...]
cgi.fix_pathinfo = 1
Da gibt es kein FastCGI daemon Paket für Debian Lenny, deswegen nutzen wir das spawn-fcgi program von lighttpd. Wir installieren lighttpd wie folgt:
aptitude install lighttpd
Du wirst eine ERROR Message bekommen in der steht, das der Port 80 schon benutzt wird:
Starting web server: lighttpd2009-03-19 15:58:09: (network.c.300) can’t bind to port: 80 Address already in use
failed!
So sollte es sein, da nginx bereits auf Port 80 listens. Starte
update-rc.d -f lighttpd remove
sodass, lighttpd nicht beim booten mitgestartet wird.
Wir haben lighttpd installiert weil wir ein Programm brauchen, welches mit dem Paket, /usr/bin/spawn-fcgi, kommt, welches wir benutzen können um den FastCGI Prozess zu starten, schau dir dazu folgendes an
spawn-fcgi --help
um mehr darüber zu lernen.
Um einen PHP FastCGI daemon auf Port 9000 auf localhost listen zu lassen und als Benutzer der Gruppe www-data zu starten, startet wir folgendes Kommando
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid
Natürlich möchtest du dieses Kommando nicht jedes mal neu eingeben, wenn du dein System bootest, deswegen lass dein System das Kommando bei jedem Boot selber ausführen, öffne dazu /etc/rc.local…
vi /etc/rc.local
[...]
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid
[...]
5 Konfiguration von nginx
Die nginx Konfiguration ist in /etc/nginx/nginx.conf welche wir nun öffnen:
vi /etc/nginx/nginx.conf
[...]
worker_processes 5;
[...]
keepalive_timeout 2;
[...]
Die Konfiguration ist einfach zu Verstehen (mehr darüber kannst du hier lernen: 301 Moved Permanently (http://wiki.codemongers.com/NginxFullExample) und hier: 301 Moved Permanently (http://wiki.codemongers.com/NginxFullExample2))
Die virtuellen hosts sind im server {} definiert. Der standard vhost ist in der Datei /etc/nginx/sites-available/default definiert- lasst uns diese wie folgt modifizieren:
vi /etc/nginx/sites-available/default
[...]
server {
listen 80;
server_name _;
access_log /var/log/nginx/localhost.access.log;
location / {
root /var/www/nginx-default;
index index.php index.html index.htm;
}
location /doc {
root /usr/share;
autoindex on;
allow 127.0.0.1;
deny all;
}
location /images {
root /usr/share;
autoindex on;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/nginx-default;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ .php$ {
#proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /.ht {
deny all;
}
}
[...]
server_name _; macht daraus einen standard catchall vhost (natürlich, kannst du auch einen spezifischen hostnamen hier anlegen wie www.example.com).
In der location / part, habe ich index.php zu der index Zeile hinzugefügt. root /var/www/nginx-default; meint, das das Docoment root in dem Verzeichnis /var/www/nginx-default ist.
Der wichtige Teil für PHP ist die location ~ .php$ {} stanza. Unkommentiere es um es verfügbar zu machen. Bitte stelle sicher, das du die fastcgi_param Zeile zu fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name ; geändert hast (ersetze /var/www/nginx-default mit deinem Root Dokument) weil anderenfalls der PHP Interpreter das PHP script das du in deinem Browser aufrufst nciht finden wird.
Stelle sicher, das einige Leerzeichen zwischen include und fastcgi_params; - in der Standarddatei ist es als ein wort geschriben, was ein bug ist.
Nun Speicher die Datei und starte nginx neu:
/etc/init.d/nginx restart
Nun erstelle die folgende PHP Datei in dem Dokument Root /var/www/nginx-default:
vi /var/www/nginx-default/info.php
<?php
phpinfo();
?>
6 Links
* nginx: 302 Found (http://nginx.net/)
* nginx Wiki: 301 Moved Permanently (http://wiki.codemongers.com/Main)
* PHP: PHP: Hypertext Preprocessor (http://www.php.net)
* MySQL: MySQL Query Analyzer - Improving SQL Query Performance (http://www.mysql.com)
* Debian: Debian -- The Universal Operating System (http://www.debian.org/)
Zum Installieren von MySQL, starten wir:
aptitude install mysql-server mysql-client
Du wirst gebeten ein Passwort für den MySQL Root Benutzer festzulegen - dieses Passwort ist ebenso für root@localhost und auch für root@server1.example.com nötig, sodass wir hinterher kein Spezifisches MySQL Root PassworT manuell anlegen müssen:
New password for the MySQL “root” user: <-- deinrootsqlpasswort
Repeat password for the MySQL “root” user: <-- deinrootsqlpasswort
3 Installation von Nginx
Nginx ist als ein Paket von Debian Lenny verfügbar, welches wir wie folgt installieren können:
aptitude install nginx
Starte nginx anschliessend:
/etc/init.d/nginx start
4 Installation von PHP5
Wir können PHP% durch FastCGI in nginx zum Laufen bringen. Glücklicherweise unterstützt Debian Lenny ein FastCGI - verfügbare PHP5 Pakete welche wir wie folgt installieren (zusammen mit einigen PHP5 Modulen wie php5-mysql welches du benötigst, wenn du MySQL von den PHP scrips benutzen willst):
aptitude install php5-cgi php5-mysql php5-curl php5-gd php5-idn php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-mhash php5-ming php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl
Dann öffne /etc/php5/cgi/php.ini und füge die Zeile cgi.fix_pathinfo = 1 am Ende der Datei ein:
vi /etc/php5/cgi/php.ini
[...]
cgi.fix_pathinfo = 1
Da gibt es kein FastCGI daemon Paket für Debian Lenny, deswegen nutzen wir das spawn-fcgi program von lighttpd. Wir installieren lighttpd wie folgt:
aptitude install lighttpd
Du wirst eine ERROR Message bekommen in der steht, das der Port 80 schon benutzt wird:
Starting web server: lighttpd2009-03-19 15:58:09: (network.c.300) can’t bind to port: 80 Address already in use
failed!
So sollte es sein, da nginx bereits auf Port 80 listens. Starte
update-rc.d -f lighttpd remove
sodass, lighttpd nicht beim booten mitgestartet wird.
Wir haben lighttpd installiert weil wir ein Programm brauchen, welches mit dem Paket, /usr/bin/spawn-fcgi, kommt, welches wir benutzen können um den FastCGI Prozess zu starten, schau dir dazu folgendes an
spawn-fcgi --help
um mehr darüber zu lernen.
Um einen PHP FastCGI daemon auf Port 9000 auf localhost listen zu lassen und als Benutzer der Gruppe www-data zu starten, startet wir folgendes Kommando
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid
Natürlich möchtest du dieses Kommando nicht jedes mal neu eingeben, wenn du dein System bootest, deswegen lass dein System das Kommando bei jedem Boot selber ausführen, öffne dazu /etc/rc.local…
vi /etc/rc.local
[...]
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u www-data -g www-data -f /usr/bin/php5-cgi -P /var/run/fastcgi-php.pid
[...]
5 Konfiguration von nginx
Die nginx Konfiguration ist in /etc/nginx/nginx.conf welche wir nun öffnen:
vi /etc/nginx/nginx.conf
[...]
worker_processes 5;
[...]
keepalive_timeout 2;
[...]
Die Konfiguration ist einfach zu Verstehen (mehr darüber kannst du hier lernen: 301 Moved Permanently (http://wiki.codemongers.com/NginxFullExample) und hier: 301 Moved Permanently (http://wiki.codemongers.com/NginxFullExample2))
Die virtuellen hosts sind im server {} definiert. Der standard vhost ist in der Datei /etc/nginx/sites-available/default definiert- lasst uns diese wie folgt modifizieren:
vi /etc/nginx/sites-available/default
[...]
server {
listen 80;
server_name _;
access_log /var/log/nginx/localhost.access.log;
location / {
root /var/www/nginx-default;
index index.php index.html index.htm;
}
location /doc {
root /usr/share;
autoindex on;
allow 127.0.0.1;
deny all;
}
location /images {
root /usr/share;
autoindex on;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /var/www/nginx-default;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ .php$ {
#proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
include fastcgi_params;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /.ht {
deny all;
}
}
[...]
server_name _; macht daraus einen standard catchall vhost (natürlich, kannst du auch einen spezifischen hostnamen hier anlegen wie www.example.com).
In der location / part, habe ich index.php zu der index Zeile hinzugefügt. root /var/www/nginx-default; meint, das das Docoment root in dem Verzeichnis /var/www/nginx-default ist.
Der wichtige Teil für PHP ist die location ~ .php$ {} stanza. Unkommentiere es um es verfügbar zu machen. Bitte stelle sicher, das du die fastcgi_param Zeile zu fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name ; geändert hast (ersetze /var/www/nginx-default mit deinem Root Dokument) weil anderenfalls der PHP Interpreter das PHP script das du in deinem Browser aufrufst nciht finden wird.
Stelle sicher, das einige Leerzeichen zwischen include und fastcgi_params; - in der Standarddatei ist es als ein wort geschriben, was ein bug ist.
Nun Speicher die Datei und starte nginx neu:
/etc/init.d/nginx restart
Nun erstelle die folgende PHP Datei in dem Dokument Root /var/www/nginx-default:
vi /var/www/nginx-default/info.php
<?php
phpinfo();
?>
6 Links
* nginx: 302 Found (http://nginx.net/)
* nginx Wiki: 301 Moved Permanently (http://wiki.codemongers.com/Main)
* PHP: PHP: Hypertext Preprocessor (http://www.php.net)
* MySQL: MySQL Query Analyzer - Improving SQL Query Performance (http://www.mysql.com)
* Debian: Debian -- The Universal Operating System (http://www.debian.org/)