SQLite

Im Feld 'Datenbank' den Dateinamen inkl. Pfad zur SQLite-Datenbank eintragen.
Die Felder 'Server', 'Benutzer' und 'Passwort' bleiben leer.

WEMP2go (Windows 10 x86/64, Nginx, MySQL, PHP)

Nginx (http, https, http2, TLSv1 bis TLSv1.3, vhost, auth_basic)
MariaDB, SQLite, PHP-FastCGI, Adminer für MySQL und SQLite

Schneller, leichtgewichtiger Web- und MySQL-Server für den USB-Stick

Starten und Stoppen

Nginx und MySQL starten: \wemp2go\start.bat
Nginx und MySQL beenden: \wemp2go\stop.bat
Nginx-Konfiguration neu einlesen: \wemp2go\reload.bat

Voraussetzung: Auf dem Rechner muss 'Visual C++ Redistributable für Visual Studio 2015' installiert sein.
Download: www.microsoft.com/de-de/download/details.aspx?id=48145

Vor dem Entfernen des USB-Sticks sollte immer den Befehl \wemp2go\stop.bat ausgeführt werden.

WEMP2go sollte nicht aus Unterordnern oder Netzlaufwerken gestartet werden.

Richtig: E:\wemp2go
Falsch: C:\Users\Paul Schmitz\Desktop\wemp2go

Einstellungen

Webserver-Adresse https://127.0.0.1
Datenbankservernamelocalhost
Port-Nr. des MySQL-Servers3306
Datenbankbenutzerroot
Passwort des Datenbankbenutzersroot
MySQL-Datenbanken verwalten Adminer
SQLite-Datenbanken verwaltenSQLite
PHPinfoPHPinfo
Dokumentenwurzelverzeichnis[Lfw:]\wemp2go\nginx\html\
bzw. [Lfw:]\wemp2go\html.lnk

Komponenten

Webserver nginx

Nginx verbreitet sich rasch zulasten anderer Webserver. Was ist das Besondere an Nginx?
Nginx (ausgesprochen: "engine-ex") ist eine leistungsfähige Alternative zum bekannten Websever Apache. Nginx ist performant und leichtgewichtig. Nginx arbeitet Anfragen nicht sequentiell sondern parallel ab. Nginx ist besonders für schwache Hardware geeignet. Diese Eigenschaften machen Nginx für Raspberry-Pi-Projekte auf Linux-Basis und USB-Stick-Projekte auf Windows-Basis besonders interessant.

Wird ein PHP-Framework eingesetzt, so ist die Konfiguration ensprechend anzupassen. Einige typische Beispiele kurz vorgestellt:

⇒ Beispielkonfiguration für eine Joomla-Installation:

Eine wichtige Rolle spielt die Option try_files innerhalb eines location-Blocks der Konfigurationsdatei nginx.conf, Beispiel für Joomla mit aktivierter SEO-Option:
# Bemerkungen zu Joomla mit aktivierter SEO-Option:
#
# Joomla befindet sich im DocumentRoot-Ordner

try_files $uri $uri/ /index.php$args;

# oder:
# 
# Joomla befindet sich im Unterordner /joomla
# Der Ordnername 'joomla' in ist ggfs. anzupassen

location /joomla {
	expires 30s;
	try_files $uri $uri/ /joomla/index.php$args;
}
⇒ Beispielkonfiguration für eine Dokuwiki-Installation:
location /dokuwiki/ {
	expires 5m;
	autoindex off;

	index doku.php;
	
	location ~ /(data/|conf/|bin/|inc/) { 
		deny all; 
	}

#  	Nach der Dokuwiki-Installation
#  	Kommentarzeichen in den folgenden Zeilen entfernen

#	location ~ install.php {
#		deny all;
#	}
}

Siehe auch: www.dokuwiki.org/install:nginx

⇒ Fertige Konfigurationsbeispiele...

finden Sie im Ordner wemp2go\nginx\conf\include. Zum Testen entfernen Sie einfach die Dateiendung .off der Konfigurationsdatei. Weitere Hinweise finden sich im Quellcode der Konfigurationsdateien.
Dateien mit der Endung .server.conf werden innerhalb des Server-Blocks, .http.conf-Dateien innerhalb des http-Blocks eingebunden. Detaillierte Hinweise zur Struktur finden Sie im Beginner’s Guide.
	.htpasswd
	alias.server.conf
	auth_basic.server.conf.off
	dokuwiki.server.conf.off
	dot_ht-files.server.conf
	errors.server.conf
	gzip.server.conf.off
	joomla.server.conf.off
	log.http.conf
	mime.http.conf
	readme_htpasswd.txt
	redirect-ssl.http.conf.off
	ssl-tls-v1.0_v1.2.server.conf
	ssl-tls-v1.3.server.conf.off
	vhost.http.conf.off
.htpasswd: Fehler 403, wenn dot_ht-files.conf aktiv
Passwort für Auth_Basic (apr1-md5) erzeugen: htpasswd-htdigest.php
Eine Übersicht weiterer Konfigurationen finden Sie auf der Seite nginx.com/resources/wiki/start.

Datenbankserver MariaDB

MariaDB ist kompatibel zu MySQL. Vergleich zwischen MySQL und MariaDB siehe:
db-engines.com/de/system/MariaDB%3BMySQL.

PHP-Manager FastCGI

Warum PHP-FastCGI?
PHP-FastCGI läuft im Hintergrund. Somit entfallen die bei jedem PHP-Aufruf üblichen Ladezeiten des PHP-Interpreters. Anpassungen des PHP-Codes sind nicht erforderlich.
Einstellungen und aktivierte Module, siehe: PHPinfo

Adminer

Adminer ist eine sehr schlanke Alternative zu phpMyAdmin. Im Gegensatz zu phpMyAdmin verwaltet Adminer neben MySQL-Datenbanksystemen auch SQLite, PostgreSQL, SimpleDB, MongoDB uvm.
Wemp2go enthält die beiden Datenbankmanagementsysteme: MySQL und SQLite

Aufruf für MySQL: Adminer

Die Anmeldedaten für MySQL lauten:
Kontoname: root, Passwort: root

SQLite-Datenbanken kennen keine Datenbankbenutzer. Adminer erfordert allerdings zwingend die Eingabe von Benutzernamen und Passwort.
Adminer kann daher nicht direkt gestartet werden, sondern nur über ein Vorschaltskript, welches eine erfolgreiche Anmeldung vortäuscht.

Aufruf für SQLite: SQLite

⇒ Quelltext des Vorschaltskripts:
<?php
ini_set('display_errors',0);

# s. https://github.com/skydiver/october-plugin-adminer/issues/7

function adminer_object() {
    class AdminerSoftware extends Adminer {
        function login() {
            return true;
        }
    }
    return new AdminerSoftware;
}
require './adminer-4.7.0.php';

Versionen

KomponenteVersionAuswahlQuelleLizenz
nginx *)hg.nginx.org/nginxkomplett nginx.org‎2-Klausel-BSD-Lizenz
MariaDBmariadb-10.3.11-win32.zip ohne include- und lib-Ordner mariadb.comGNU GPLv2
PHP-FastCGIphp-7.2.12-nts-Win32-VC15-x86.zip Fast-CGI inkl. wichtiger Module php.net PHP License v3.01
Admineradminer-4.7.0.php komplett www.adminer.org/deGNU GPLv2

Sollte noch etwas fehlen?

Sichern Sie wichtige Konfigurationsdateien wie my.ini, php.ini und nginx.conf. Laden Sie die gewünschte Komponente und entpacken Sie diese in die jeweilige Verzeichnisstruktur. Schreiben Sie anschließend die Konfigurationsdatei zurück.

*) Nginx ist selbst kompiliert.

Nginx ist mit OpenSSL v1.1.1 kompiliert. Dies ist für eine Verschlüssellung gemäß TLSv1.3-Protokoll notwendig. Der Konsolenbefehl nginx -V zeigt die einkomplierten Module, Versionen und Optionen:

nginx version: nginx/1.15.7
built by cl
built with OpenSSL 1.1.1  11 Sep 2018
TLS SNI support enabled
configure arguments: --with-cc=cl --with-debug --prefix= --conf-path=conf/nginx.conf
    --pid-path=logs/nginx.pid --http-log-path=logs/access.log
    --error-log-path=logs/error.log --sbin-path=nginx.exe
    --http-client-body-temp-path=temp/client_body_temp
    --http-proxy-temp-path=temp/proxy_temp --http-fastcgi-temp-path=temp/fastcgi_temp
    --http-scgi-temp-path=temp/scgi_temp --http-uwsgi-temp-path=temp/uwsgi_temp
    --with-cc-opt=-DFD_SETSIZE=1024 --with-pcre=objs/lib/pcre-8.42
    --with-zlib=objs/lib/zlib-1.2.11 --with-openssl=objs/lib/openssl-1.1.1
    --with-openssl-opt=no-asm --with-select_module --with-http_ssl_module
    --with-http_v2_module --with-http_gunzip_module --with-http_mp4_module
    --with-http_flv_module --with-http_sub_module --with-http_stub_status_module
    --with-http_dav_module --with-http_realip_module --with-http_addition_module
    --with-http_secure_link_module --with-http_gzip_static_module
    --with-http_auth_request_module --with-http_random_index_module
    --with-http_slice_module --with-mail --with-stream --with-mail_ssl_module
    --with-stream_ssl_module

Hilfen

Der Webserver startet nicht...

Ist die Konfiguration fehlerfrei?
Der Konsolenbefehl nginx -t zeigt an, ob die Syntax der Konfigurationsdateien stimmt. Alternativ wird der Fehler angezeigt. Denken Sie daran, dass jede Konfigurationsanweisung mit einem Semikolon abzuschließen ist.

Suchen Sie in den Logdateien nach Hinweisen.

Läuft bereits eine anderere Webserver-Instanz auf diesem Rechner?
Prüfen Sie mit dem Befehl tcp-ports.exe (s. Downloads), ob der Port 80 bereits belegt ist.
Suchen Sie in der Datei nginx.conf die Codezeile listen 80 default_server; und ändern Sie dort ggfs. die Portnummer.

Ich kann keine https-Verbindung aufbauen

Wemp2go nutzt ein selbstsigniertes Zertifikat. Dies wird standardmäßig vom Browser abgelehnt.

Lösung: Erlauben Sie das Zertifikat im Dialogfenster des Browsers.

Manche Browser könnnen momentan noch nicht TLSv1.3 nutzen. Mit Firefox oder Chrome gelingt es.

Ich kann mich nicht mehr an MySQL anmelden...

Läuft bereits eine anderere MySQL-Server-Instanz auf diesem Rechner?
Prüfen Sie mit dem Befehl tcp-ports.exe, ob der Port 3306 bereits belegt ist.
Ändern Sie ggfs. den Port in der Datei mysql.ini.

Wurde das Passwort geändert?
Entpacken Sie die Datei mariadb.data.mysql.zip und kopieren Sie die drei Dateien des Archivs in den Ordner \wemp2go\mariadb\data\mysql. Danach können Sie sich wieder mit dem MySQL-Administrationskonto root anmelden.

Wichtige Informationsquellen

HTML, CSS, PHP, SQL, ...www.w3schools.com
Nginx-Konfigurationnginx.org/en/docs
www.nginx.com/resources/wiki
https-Konfiguration nginx.org/en/docs/http/configuring_https_servers.html
wiki.openssl.org/index.php/TLS1.3
Nginx selbst kompilieren whermanns.de/wiki/projekte/nginx
PHP-FastCGI admin-magazin.de/Das-Heft/2012/06/Der-PHP-Interpreter-PHP-FPM
https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi
heise.de/security/artikel/Grundsicherung-fuer-PHP-Software-270918.html

Downloads

WEMP2go: wemp2go.zip
tcp-ports: tcp-ports.zip
htpasswd / htdigest (online): htpasswd-htdigest.php
... Quellcode: htpasswd-htdigest.zip
(c) W. Hermanns, 2018-11-29, whermanns.de, Lizenz dieser Zusammenstellung: GNU GPLv3