IIS Installation

  • Windows-Features installieren
    Systemsteuerung -> Alle Systemsteuerungselemente -> Programme und Features -> Windows-Features aktivieren oder deaktivieren
    Internetinformationsdienste auswählen
    CGI Feature hinzufügen
  • IIS testen
    localhost im Browser aufrufen.
  • IIS Log Files
    C:\inetpub\logs\LogFiles\W3SVC[ID DER SEITE]\u_extend1.log

Web Platform Installer - Weitere nützliche Tools

Mit dem Web Platform Installer lassen sich gängige Apps einfach installieren. Falls es aber zu Fehlern kommt, sind diese meist sehr schwer zu lösen, da die Meldungen nicht viel aussagen. Ich persönlich nutze das Tool nicht zum Installieren von Anwendungen, außer mal kurz nachzusehen was es so alles Neues gibt. Den Web Platform Installer findet man entweder unter Aktionen im IIS-Manager 'Neue Webplattformkomponenten abrufen', dieser Link führt dich zum richtigen Download oder man sucht direkt über eine Suchmaschine. Nach der Installation scheint der Web Platform Installer im IIS-Manager auf.

IIS Einstellungen

  • Konfigurations-Editor
    Abschnitt -> system.web/sessionState -> timeout erhöhen

IIS Probleme beheben

  • IIS neu starten
    CMD als Administrator öffnen. Ist das selbe wie 'Neu starten' im IIS-Manager unter Aktionen.
    iisreset
  • IIS starten
    CMD als Administrator öffnen. Ist das selbe wie 'Starten' im IIS-Manager unter Aktionen.
    iisreset /start
  • IIS beenden
    CMD als Administrator öffnen. Ist das selbe wie 'Beenden' im IIS-Manager unter Aktionen.
    iisreset /stop
  • Keine Zugriffsrechte
    Dem Benutzer 'IIS_IUSRS' oder dem derzeitigen Benutzer Vollzugriff auf den Ordner 'inetpub' geben.

Apache .htaccess Dateien von IIS interpretieren lassen

  • Windows-Features installieren
    Systemsteuerung -> Alle Systemsteuerungselemente -> Programme und Features -> Windows-Features aktivieren oder deaktivieren
    ISAPI-Erweiterungen Feature hinzufügen (für Helicon ISAPI_Rewrite 3 Fullversion, Version 3.1.0078; erfüllt die Aufgaben von 'Apache Web Server Rewrites')
    ISAPI-Filter Feature hinzufügen (das ist ein .htaccess reader; da die .htaccess eine Linux Datei ist)
  • Helicon ISAPI_Rewrite installieren
    Benötigte Version auswählen unter https://www.helicontech.com/isapi_rewrite/. Anschließend herunterladen und installieren.
    Am Ende die Registrierungsinformationen in die Datei 'httpd.conf' einfügen, falls vorhanden.

PHP für IIS

Wenn Sie PHP als FastCGI mit IIS verwenden, nehmen Sie die Non-Thread Safe (NTS) Versionen von PHP. Da sich das FastCGI Modul um das Management parallel eingehender Anfragen kümmert.

  • PHP Manager für IIS installieren
    In einer Suchmaschine nach 'PHP Manager for IIS [IIS VERSION]' suchen.
  • PHP Versionen einrichten
    Benötigte PHP Version von https://windows.php.net/download/ herunterladen.
    In ein selbst erstelltes Verzeichnis, z.B. 'C:\PHP' entpacken.
    IIS-Manager öffnen -> ersten Knoten auswählen -> PHP Manager -> Register new PHP Version -> Datei auswählen -> OK
  • Das für PHP benötigte 'Microsoft Visual C++ Redistributable' installieren
    Microsoft Visual C++ 2012 Redistributable (x86 oder x64) für VC11.
    Microsoft Visual C++ 2015-2019 Redistributable (x86 oder x64) für VC14, VC15 oder VS16.
  • Testen
    Im Ordner 'C:\inetpub\wwwroot' die Datei 'info.php' erstellen und folgende Zeile einfügen.
    ‹?php phpinfo(); ?›
    localhost/info.php im Browser aufrufen.
  • PHP Konfiguration
    Die Datei 'php.ini' öffnen.
    Nötige Erweiterungen aktivieren
    extension=php_mysql.dll (Erweiterung für MySQL Datenbank; diese Erweiterung ist veraltet und wurde ab PHP 7 entfernt)
    extension=php_mysqli.dll (Erweiterung für MySQL Datenbank)
    extension=php_mbstring.dll (Erweiterung für Multibyte String Funktionen; z.B. mb_strlen)
    extension=php_mcrypt.dll (Erweiterung für Entschlüsseln und Verschlüsseln; z.B. mcrypt_encrypt)
    extension=php_curl.dll (Erweiterung für cURL-Sessions; z.B. curl_close)
    Nötigte Einstellungen
    date.timezone = "Europe/Berlin"
    Falls der MySQL Port ein anderer sein sollte, Stichwort Multiple MySQL Server
    [MySQL] (veraltet, ab PHP 7 entfernt)
    mysql.default_port = 3307
    oder
    [MySQLi]
    mysqli.default_port = 3307
    Nach Änderungen IIS neustarten und 'info.php' kontrollieren.
  • Unterstützte PHP Versionen
    https://www.php.net/supported-versions.php
  • Offizielle PHP Installationsanforderungen
    https://www.php.net/manual/de/install.windows.requirements.php
  • Fehler Datei
    C:\Windows\Temp\php-[PHP VERSION]_errors.log

ImageMagick für PHP unter IIS

  • Wichtige Informationen prüfen
    Datei 'info.php' erstellen und die Zeile '‹?php phpinfo(); ?›' einfügen. Die Datei im Browser aufrufen und folgendes kontrollieren.
    PHP Version = 7.4.12
    Compiler = MSVC15 (Visual C++ 2017)
    Architecture = x86
    Thread Safety = disabled
  • Die Datei 'php_imagick.dll' für PHP herunterladen https://pecl.php.net/package/imagick
    Extrahiere die Datei 'php_imagick.dll' in den Ordner 'C:\PHP\php-[PHP VERSION]-nts-Win32-[COMPILER]-[ARCHITECTURE]\ext'.
  • PHP Erweiterung hinzufügen
    Die Datei 'php.ini' öffnen und ganz am Ende folgende Zeilen einfügen.
    [PHP_IMAGICK]
    extension=php_imagick.dll
  • Das Paket 'ImageMagick-[IMAGEMAGICK VERSION]-[COMPILER]-[ARCHITECTURE]' herunterladen von https://windows.php.net/downloads/pecl/deps/
    Umgebungsvariable hinzufügen
    Den Ordner vom heruntergeladenen Paket in ein selbst erstelltes Verzeichnis, z.B. 'C:\PHPext' entpacken.
    Umgebungsvariablen -> Systemvariablen -> Path bearbeiten -> Wert am Anfang der Zeile hinzufügen 'C:\PHPext\ImageMagick-[IMAGEMAGICK VERSION]-[COMPILER]-[ARCHITECTURE]\bin;'
    ACHTUNG: Es ist nur eine Umgebungsvariable zu ImageMagick möglich, bei mehreren Angaben zu unterschiedlichen Versionen gibt es Probleme beim Laden der einzelnen Module (z.B. png wird nicht unterstützt).
    Alternative zur Umgebungsvariable
    Diese Methode bevorzuge ich nicht und habe diese Methode noch nicht getestet, da ich die Pakete gerne getrennt habe. Ich ändere die Umgebungsvariable, je nachdem welche ImageMagick Version ich gerade benötige.
    Extrahiere die DLL Dateien vom bin Ordner, die mit CORE_RL oder IM_MOD_RL beginnen, in den Ordner 'C:\PHP\php-[PHP VERSION]-nts-Win32-[COMPILER]-[ARCHITECTURE]'.
  • Unterstützte Formate prüfen
    'info.php' aufrufen und 'ImageMagick number of supported formats' kontrollieren.
  • Testen
    Datei 'imagick-test.php' erstellen und die folgenden Zeilen hinzufügen. Anschließend die Datei im Browser aufrufen.
    ‹?php
    $image = new Imagick();
    $image->newImage(1, 1, new ImagickPixel('#ffffff'));
    $image->setImageFormat('png');
    $pngData = $image->getImagesBlob();
    echo strpos($pngData, '\x89PNG\r\n\x1a\n') === 0 ? 'Ok' : 'Failed';

MySQL

MySQL Installer

Mit dem MySQL Installer 'mysql-installer-web-community-8.0.22.0[MYSQL VERSION].msi' kann man MySQL installieren, upgraden und ändern.

Multiple MySQL Versionen

Starten mehrerer MySQL Instanzen als Windows Dienste.

Wichtige Infos
CMD = Immer als Administrator starten
mysqld = Service
mysqladmin = für Master und Slaves
mysql = Standard Zugriff über CMD
ibdata1 = In dieser Datei sind alle Tabellen, Passwörter, usw. enthalten.

  1. MySQL installieren
    Benötigte Version von https://dev.mysql.com/downloads/mysql/ auswählen und herunterladen.
    Die Datei 'mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE].zip' entpacken und einen Ordner 'mysql-[MYSQL FULL VERSION]-data' erstellen.
    MySQL Version 5.6 und früher
    Inhalt vom Ordner 'data' der *.zip Datei oder einer vorhandenen älteren Version einfügen.
    MySQL Version 5.7 und später
    ACHTUNG: Die *.zip Datei hat keinen Ordner 'data' mehr.
    Inhalt vom 'data' Ordner einer älteren MySQL Version einfügen oder den Ordner leer lassen.
    MySQL Upgrade
    Bei einer älteren Version muss eine Upgrade durchgeführt, siehe 'MySQL Upgrade unter Windows' Punkt 7.
  2. Datei für MySQL Einstellungen erstellen
    Die Datei 'my-mysqld[MYSQL SHORT VERSION].ini' erstellen, z.B. my-mysqld57.ini und folgende Zeilen einfügen.
    [client]
    port = 3307 (Der Standard Port für MySQL ist 3306, also fangen wir bei Port 3307 an)

    [mysql]
    default-character-set=UTF8

    [mysqld]
    basedir = "C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\"
    datadir = "C:\MySQL\mysql-[MYSQL FULL VERSION]-data\"
    port = 3307
    enable-named-pipe
    socket = MySQLpipe[MYSQL SHORT VERSION]
    character-set-server=UTF8
    sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

    # Hier hat man ohne Berechtigungen Zugriff um User Passwörter zu ändern
    # Wenn ich eingeloggt bin muss ich die grant-tables wieder aktivieren um Änderungen durchzuführen: mysql> flush privileges;
    #skip-grant-tables

    # Master und Slaves
    #server-id = 1
  3. Das für MySQL benötigte 'Microsoft Visual C++ Redistributable Package' installieren
    Benötigte Microsoft Packete installieren, falls nicht vorhanden.
    Microsoft Visual C++ 2008 Redistributable (x86 oder x64) installieren für MySQL 5.5.
    Microsoft Visual C++ 2010 Redistributable (x86 oder x64) installieren für MySQL 5.6.
    Microsoft Visual C++ 2013 Redistributable (x86 oder x64) installieren für MySQL 5.7.
    Microsoft Visual C++ 2015-2019 Redistributable (x86 oder x64) installieren für MySQL 8.0.
  4. Umgebungsvariablen entfernen
    Bei Multiplen MySQL Instances keine Umgebungsvariable hinzufügen, falls Umgebungsvariablen vorhanden sein sollten, diese wie folgt entfernen.
    Umgebungsvariablen -> Systemvariablen -> Path bearbeiten -> Umgebungsvariablen entfernen
    ACHTUNG: Befehle sind ohne Umgebungsvariable nicht möglich, z.B. mysql -u root -p.
  5. Service Installieren
    ACHTUNG: Der Code '--defaults-file' muss hinter dem Service Name stehen.
    "C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\bin\mysqld" --install MySQL[MYSQL SHORT VERSION] --defaults-file="C:\MySQL\my-mysqld[MYSQL SHORT VERSION].ini"
    z.B. "C:\MySQL\mysql-8.0.22-winx64\bin\mysqld" --install MySQL80 --defaults-file="C:\MySQL\my-mysqld80.ini"
    Alternative Möglichkeit
     Um eine bestimmte MySQL Version zu nutzen, wechsle in den Ordner der gewünschten MySQL Version und führe dann den gewünschten Befehl 'mysqld [BEFEHL]' aus.
    cd "C:\MySQL\mysql-[MYSQL VERSION]-win[ARCHITECTURE]\bin\"
    z.B. cd "C:\MySQL\mysql-8.0.22-winx64\bin\"
  6. Service starten
    net start MySQL[MYSQL SHORT VERSION]
    Falls der Service MySQL[MYSQL SHORT VERSION] nicht startet, kontrolliere die '*.err' Datei im Ordner 'C:\MySQL\mysql-[MYSQL FULL VERSION]-data' kontrolliern.
    Alternative Möglichkeit
    Temporären mysqld Service starten.
    ACHTUNG
    : Es darf kein installierter MySQL Service laufen, ansonsten kann der neue temporäre mysqld Service nicht gestartet werden.
    "C:\MySQL\mysql-[MYSQL FULL VERSION]-win32\bin\mysqld" --port=[PORT] --user=[BENUTZER] --datadir="C:\MySQL\mysql-[MYSQL FULL VERSION]-data\" --console (--console listet Fehler auf)
    z.B. "C:\MySQL\mysql-5.5.59-win32\bin\mysqld" --port=3307 --user=root --datadir="C:\MySQL\mysql-5.5.59-data\" --console
    Temporären mysqld Service herunterfahren.
    "C:\MySQL\mysql-[MYSQL FULL VERSION]-win32\bin\mysqld" --port=[PORT] --host=127.0.0.1 --user=[BENUTZER] --password shutdown
  7. Einloggen
    mysql --host=localhost --port=[PORT] --user=[BENUTZER] --password=[PASSWORT] (Ausführliche Version)
    mysql -h localhost -P [PORT] -u [BENUTZER] -p (Kurze Version, Passwort wird nach ausführen des Befehls nachgefragt)
    z.B. "C:\MySQL\mysql-5.7.21-win32\bin\mysql" -h localhost -P 3309 -u root -p
  8. Testen
    Folgenden Befehl nach dem Einloggen ausführen.
    show variables where Variable_name in('hostname','port');

MySQL Einstellungen

  • Berechtigungen
    Der MySQL Server Benutzer muss die Datei 'my-mysqld[MYSQL SHORT VERSION].ini' lesen können.
  • Alle Funktionen von mysqld
    "C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\bin\mysqld" --help
  • Offene Ports anzeigen
    netstat -an
  • Bestimmten Port prüfen
    netstat -an | find '[PORT]'

root Passwort ändern

  • MySQL 5.7.5 und früher
    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('[PASSWORT]');
  • MySQL 5.7.6 und später
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '[PASSWORT]';

MySQL Windows Services entfernen

  • Service stoppen
    net stop MySQL[MYSQL SHORT VERSION]
  • Service löschen
    "C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\bin\mysqld" --remove

MySQL Upgrade unter Windows

  1. MySQL Backup erstellen
    Verzeichnis 'datadir' sichern.
  2. Aktuellen Service stoppen
    net stop MySQL[MYSQL SHORT VERSION]
  3. Aktuellen Service löschen
    "C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\bin\mysqld" --remove
  4. Aktuelles MySQL löschen und neues MySQL entpacken
    ACHTUNG: Das aktuelle Verzeichnis 'datadir' nicht löschen.
  5. Neuen Service installieren
    ACHTUNG: Der Code '--defaults-file' muss hinter dem Service Name stehen.
    "C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\bin\mysqld" --install MySQL[MYSQL SHORT VERSION] --defaults-file="C:\MySQL\my-mysqld[MYSQL SHORT VERSION].ini"
    z.B. "C:\MySQL\mysql-5.7.21-win32\bin\mysqld" --install MySQL57 --defaults-file="C:\MySQL\my-mysqld57.ini"
  6. Service starten
    net start MySQL[MYSQL SHORT VERSION]
  7. Upgrade durchführen
    Die Datei 'ibdata1' auf KEINEN Fall löschen.
    Die Datei 'ib_logfile()' und 'ib_logfile1' von der '*.zip' Datei nicht löschen.
    Bei vorhandener älterer Version, wenn NÖTIG 'ib_logfile()' und 'ib_logfile1' löschen.
    Die Datei '*.err' und '*.pid' Datei löschen wenn vorhanden.
    "C:\MySQL\mysql-[MYSQL FULL VERSION]-win[ARCHITECTURE]\bin\mysql_upgrade" -h localhost -P [PORT] -u root -p
    z.B. "C:\MySQL\mysql-5.7.21-win32\bin\mysql_upgrade" -h localhost -P 3309 -u root -p
  8. Server stoppen und neustarten
    net stop MySQL[MYSQL SHORT VERSION]
    net start MySQL[MYSQL SHORT VERSION]

phpMyAdmin

  • phpMyAdmin installieren
    Paket von https://www.phpmyadmin.net/downloads/ herunterladen.
    Alle Dateien entpacken nach 'C:\inetpub\wwwroot\phpmyadmin'.
  • phpMyAdmin im IIS in eine Anwendung konvertieren
    Rechtsklick auf 'phpmyadmin' -> In Anwendung konvertieren -> OK
  • Testen
    localhost/phpmyadmin im Browser aufrufen.
  • Die Datei 'config.inc.php' konfigurieren.
    Ordner 'config' unter 'C:\inetpub\wwwroot\phpmyadmin' anlegen, 'IUSR' Vollzugriff Berechtigungen geben.
    localhost/phpmyadmin/setup im Browser aufrufen.
    Benötigte Einstellungen vornehmen.
    Erzeugte 'config.inc.php' in das Verzeichnis 'C:\inetpub\wwwroot\phpmyadmin' kopieren.
    Ordner 'config' löschen.
    localhost/phpmyadmin im Browser aufrufen. Fertig.

E-Mails über PHP versenden

Fake sendmail for Windows

  • Fake sendmail for Windows herunterladen und entpacken
    https://www.glob.com.au/sendmail/sendmail.zip
    Das Archiv 'sendmail.zip' in das Verzeichnis 'C:\PHPext\sendmail\' extrahieren.
  • In der 'php.ini' folgendes einfügen.
    sendmail_path = 'C:\PHPext\sendmail\sendmail.exe -t'
  • Einstellungen in der 'sendmail.ini' vornehmen.
    smtp_server=[SMTP-SERVER]
    smtp_port=[SMTP-PORT]
    smtp_ssl=auto
    error_logfile=C:\PHPext\sendmail\error.log
    debug_logfile=C:\PHPext\sendmail\debug.log
    auth_username=[E-MAIL]
    auth_password=[PASSWORT]
    ;pop3_server=
    ;pop3_username=
    ;pop3_password=
    ;force_sender=[E-MAIL] (Absender erzwingen; hat bei mir NICHT funktioniert)
    ;force_recipient=[E-MAIL] (Empfänger erzwingen; hat bei mir funktioniert)
    hostname=localhost
  • Testen
    Datei sendmail.php erstellen und folgende Zeile einfügen.
    mail('[E-MAIL]','Betreff: Test','E-Mail Nachricht','From: [E-MAIL]');
    Datei im Browser aufrufen und schauen ob die Mail angekommen ist.
    ACHTUNG: Der Absender muss eine E-Mail-Adresse des dazugehörige Accounts sein. Es gibt die Möglichkeit nur Absender-E-Mail-Adressen zu Accounts hinzuzufügen, z.B. bei Google, Yahoo.