Zielsetzung:
Ein kleines "Entwicklungssystem", auf dem ich mal verschiedene Projekte testen kann. Ich spiele viel mit Joomla! und anderen Dingen rum, meistens mache ich das Live im Netz. Aber mir schwebt da schon lange ein Server für vor, der nur diese eine Aufgabe hat. So das ich ihn anschalten kann, wenn ich was "spielen" will ;)

Hardware:

Software:

Was brauchen wir? Einen Webserver, PHP und MySQL ist mir so spontan eingefallen. Als Webserver wollte ich diesmal NGINX probieren, schon viel gutes drüber gelesen. Dann fangen wir mal an.

 


Installation NGINX:

NGINX ist ein ziemlich kompliziertes Thema, ich gehe hier nur auf das Nötigste ein. Es gibt dazu ja zahlreiche Beiträge im Netz.

apt-get install nginx

Unter /etc/nginx findet man die Ordner

sites-enabled und sites-available

Unter sites-available findet man die Datei default, wenn man diese mit einem Editor öffnet, findet man ein Beispiel. Ich habe diese Datei erstmal umbenannt (Sicherung).

cp default default_copy

Unter sites-enabled den dann toten Link gelöscht.

rm default

In sites-avaible eine neue Datei erstellt, sie soll hier custom-fields heißen.

nano custom-fields

Der Inhalt ist wie folgt.

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        # SSL configuration
        #
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;
        #
        # Self signed certs generated by the ssl-cert package
        # Don't use them in a production server!
        #
        # include snippets/snakeoil.conf;
        root /var/www/custom-fields;
        # Add index.php to the list if you are using PHP
        index index.php index.html index.htm index.nginx-debian.html;
        server_name www.custom-fields.com;
        location /custom-fields {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
}       
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
               include snippets/fastcgi-php.conf;
        #
        #       # With php5-cgi alone:
        #       fastcgi_pass 127.0.0.1:9000;
        #       # With php5-fpm:
               fastcgi_pass unix:/var/run/php5-fpm.sock;
        }
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #       deny all;
        #}

}

Diese Seite müssen wir aktivieren, dazu wird ein symbolischer Link in sites-enabled erstellt. Der Befehl dazu lautet:

ln -s /etc/nginx/sites-available/custom-fields /etc/nginx/sites-enabled/custom-fields

 

NGINX steuert man mit:

nginx -t  //Konfiguration testen
service nginx force-reload // Service neustarten!

 

Damit ihr nun irgendwas seht, muss natürlich unter /var/www/custom-fields irgendwas abgelegt sein. Dazu später mehr unter dem Punkt Git!

 


 

Installation PHP:

apt-get install php5-fpm //PHP installieren
apt-get install php5-mysql //MySQL-Anbindung unter PHP installieren.

Installierte Version:

PHP Version 5.6.19-0+deb8u1

 


 

Installation MySQL:

apt-get install mysql-server

Nun, wenn ich den installiere wird ein Passwort abgefragt, das Root-Passwort für MySQL. Aufschreiben ;) Nach der Installation ist die MySQL-Datenbank leer. Wenn man nun z.B.: Joomla! installieren will, braucht man erstmal eine Datenbank. Das macht man mit den folgenden Befehlen:

mysql -u root -p
show databases;
create database NEUE_DATENBANK;
create user NEUER_BENUTZER@localhost;
set password for NEUER_BENUTZER@localhost = password('NEUES_PASSWORT');
grant all on NEUE_DATENBANK.* to NEUER_BENUTZER@localhost;

Für mehr Informationen schaut mal auf der Seite undertec.de nach, da ist das prima erklärt. Danke!

Quelle: www.undertec.de

 

 


 

Damit hätten wir alles installiert, was zum Betrieb einer Webseite nötig ist. Doch nun brauchen wir auch Inhalte. Wie am Anfang geschrieben teste ich gerne an Joomla! mit rum, nicht sehr intensiv aber gelegentlich. Eines der kommenden Features hat mein Interesse gefunden, es heißt custom-fields. Dazu gibt es auf github.com ein Projekt. Das möchte ich jetzt als Webseite auf meinem BananaPro laufen lassen. Wir navigieren zum Pfad /var/www Dort geben wir folgenden Befehl ein:

git clone https://github.com/joomla-projects/custom-fields.git

Nun werden alle Projektdaten abgeholt und am Ende liegt alles unter /var/www/custom-fields Dort befindet sich nun eine Joomla! Installation, die ganz normal installiert wird. Danach kann man dann die Webseite ganz nomal nutzen.

http://192.168.2.x

http://192.168.2.x/administrator

Wenn nun die Entwickler was geändert haben, kann man diese Daten ganz einfach herunterladen. Mit

root@bananapro ~www/custom-fields (git)-[custom-fields] # git pull
Already up-to-date.

Um nun auf dem PC wo ich mit arbeite, die Webseite einfach zu erreichen ist, lege ich mir mit

nano /etc/hosts

virtuelle Hosts an. Das sind Einträge in der Datei, die dann auf die Server-IP meines Testsystems verweisen.

Bsp..

#Virtual Hosts
192.168.2.6    www.custom-fields.com

Mein Testserver ist unter 192.168.2.6 zu erreichen. Nun reicht es im Webbrowser nur www.custom-fields.com einzugeben und man landet auf der Webseite auf dem Testserver.

Warum ich das mache? Wenn ich mehrere Webseiten verwalten möchte, müssen diese jeweils einen anderen Namen haben. Das sollte jetzt einfach möglich sein, indem ich einfach einen neuen Serverblock erstelle, einen anderen Namen eintrage und fertig. (Das habe ich aktuell noch nicht getestet. Kommt aber ganz sicher. Da landet dann die Joomla! Testseite drin.)

Update: 29.04.2016

Nun haben ich die Zeit gefunden, das mit der zweiten Seite auszuprobieren. Dazu öffnen wir wieder die Datei custom-fields unter /etc/nginx/sites-available

Dort ergänzen wir folgendes


server {
        listen 80;
        #listen [::]:80 default_server;
        # SSL configuration
        #
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;
        #
        # Self signed certs generated by the ssl-cert package
        # Don't use them in a production server!
        #
        # include snippets/snakeoil.conf;
        root /var/www/joomla-cms;
        # Add index.php to the list if you are using PHP
        index index.php index.html index.htm index.nginx-debian.html;
        server_name www.joomla-cms.com;
        location /joomla-cms {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
        }
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        location ~ \.php$ {
               include snippets/fastcgi-php.conf;
        #
        #       # With php5-cgi alone:
        #       fastcgi_pass 127.0.0.1:9000;
        #       # With php5-fpm:
               fastcgi_pass unix:/var/run/php5-fpm.sock;
        }
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #       deny all;
        #}

}

Zu beachten!

Die Zeile

  #listen [::]:80 default_server;

muss auskommentiert sein, da es nur einen default-server geben darf und der ja schon bei dem anderen vergeben ist. Ansonsten Servername eingeben und den Pfad wo die Daten liegen. Die Daten habe ich mit git wieder unter /var/www/joomla-cms abgelegt. Denkt dran Euch vorher eine neue Datenbank anzulegen. Danach noch auf Eurem Rechner die hosts Datei bearbeiten

sudo nano /etc/hosts

Dort folgendes rein und fertig!

#Virtual Hosts
192.168.2.6    www.custom-fields.com
192.168.2.6    www.joomla-cms.com

Nun haben wir zwei Webseiten, die wir bequem von unserem Rechner aus erreichen können. Bequem über git zu aktualisieren. Was will man mehr?  1F603.png

 

 

Fazit:

Eine wirklich praktische Sache, die das Testen zu einer richtigen Freude macht. Viel Spaß beim Ausprobieren!

 


 

Sicherheitshinweis!

Ich gehe hier NICHT auf die Sicherheit eines Webservers ein, da mein Server in meinem privaten Netz steht. Eine Firewall schützt ihn vor ungebetenem Besuch. Solltet ihr auf die Idee kommen, den Webserver ins Netz zu hängen, dann kümmert euch bitte intensiv um das Thema Sicherheit. So ein Server ist eine leichte Beute, wenn man keine Ahnung von dem Thema hat!