Mittels Nginx ist ein Webserver mit PHP und MySQL in ein paar Minuten eingerichtet. Dazu installiert man unter Ubuntu folgende Pakete:
sudo apt-get install mysql-server nginx php5-fpm php5-curl php5-gd php5-imap php5-mysql
Nach der Installation der nötigen Pakete geht es an die grundlegende Konfiguration des Webserver:
mkdir -p /var/www/example.org/root
mkdir -p /var/www/example.org/test
cd /var/www
chown -R www-data:www-data .
usermod -a -G www-data nutzername
In diesem Beispiel soll die Domain „example.org“ sowie die Subdomain „test.example.org“ eingerichtet werden. Deshalb legen wir zwei Ordner an. Anschließend teilen wir Nginx mit, welche Domains und Subdomains der Webserver verwalten soll. Dazu legen wir die Datei „/etc/nginx/sites-available/example“ an und füllen diese mit folgendem Inhalt:
server {
listen 80;
listen [::]:80;
root /var/www/example.org/root;
index index.php index.html index.htm;
server_name .example.org;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
server {
listen 80;
listen [::]:80;
root /var/www/example.org/test;
index index.php index.html index.htm index.php;
server_name test.example.org;
location / {
auth_basic "Access denied";
auth_basic_user_file /var/www/example.org/root/.htpasswd;
autoindex on;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
Im ersten Block wird die Domain „example.org“ definiert und konfiguriert. Durch die Notation „.example.org“ wird Nginx angewiesen, jede Subdomain welche nicht definiert ist, auf die Hauptseite umzuleiten. Für die Domain „test.example.org“ wurde außerdem ein Passwortschutz angelegt und die Verzeichnisansicht aktiviert. Damit die Konfiguration auch aktiv werden kann, muss eine symbolische Verknüpfung in das Verzeichnis „/etc/nginx/sites-enabled“ angelegt werden:
ln -s /etc/nginx/sites-available/example /etc/nginx/sites-enabled/example
Die bestehende „default“-Datei im „sites-enabled“ Ordner enthält eine Beispielkonfiguration. Diese kann entwerder entfernt werden oder konfiguriert werden:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /var/www/default/root;
index index.php index.html index.htm;
server_name _;
}
Mit dieser Konfiguration wird jede Seite auf Default umgeleitet, welche nicht in anderen Konfigurationen auftaucht. Nun muss nur noch der Webserver (und des PHPs Moduls) neugestartet werden:
service nginx restart
service php5-fpm restart
Ist der Server bereits online, reicht es auch die Konfiguration neuzuladen:
service nginx reload
Sollten während der Konfiguration Fehler auftreten, so hilft ein Blick in das entsprechende Log:
cat /var/log/nginx/error.log
Benötigt man eine Datenbank für die gewünschte Webanwendung, so muss diese in die SQL Datenbank eingespielt werden. Ist alles richtig konfiguriert worden, läuft der Webserver auf Port 80 und wartet auf erste Anfragen.