DISM /online /Set-Edition:ServerStandard /ProductKey:##### /AcceptEula
Natürlich benötigt man hierfür einen entsprechenden Productkey
mit DISM /online /Get-CurrentEdition kann die aktuelle Version angezeigt werden.
mit DISM /online /Get-TargetEditions sieht man, in welche Versionen man die aktuelle Eval-Version umwandeln kann.
Bei der Installation der Windows Server 2016 Evaluierungsverison kann zwischen allen drei Editionen ausgewählt werden: Essentials, Standard und Datacenter.
Unglücklicherweise hat der Standard-Web-Client von ESXi 6.5 einen Zertifikatsfehler. Das Zertifikat ist nämlich durch den VMWare Installer selbst ausgestellt und nicht durch eine Zertifizierungsstelle verifiziert.
So ergibt sich beim Routing über IIS ein Fehler 502.3 Bad Request mit dem Hinweis: Es ist ein Sicherheitsfehler aufgetreten.
Man könnte nun dem ESXI Server ein gültiges Zertifikat erstellen und dieses Einspielen, da ich ein gültiges Zertifikat innerhalb meines Heimnetzes jedoch nicht benötige, ist mir der Zertifikatsfehler intern egal. Nach außen habe ich ein gültiges Let’s Encrypt Zertifikat das durch den IIS auch richtig geliefert wird.
Die Lösung für mich war es also, die Zertifikatsprüfung durch IIS beim Request Routing von HTTPS-Seiten zu deaktivieren.
Hierzu den folgenden Schlüssel in der Registry des IIS-Servers öffnen bzw. bei Bedarf anlegen:
HKLM\SOFTWARE\Microsoft\IIS Extensions\Application Request Routing\Parameters
Hier drin dann einen DWORD (32-bit) Wert mit dem Namen „SecureConnectionIgnoreFlags“ anlegen. Der Default Value 0 ist die Selbe Einstellung wie im Flag SECURITY_FLAG_IGNORE_CERT_CN_INVALID .
In meinem konkreten Fall habe ich hier alle Flags gesetzt und den Wert 0x00003300 eingetragen.
Wert | Beschreibung |
---|---|
0x00001000 | SECURITY_FLAG_IGNORE_CERT_CN_INVALID |
0x00002000 | SECURITY_FLAG_IGNORE_CERT_DATE_INVALID |
0x00000100 | SECURITY_FLAG_IGNORE_UNKNOWN_CA |
0x00000200 | SECURITY_FLAG_IGNORE_CERT_WRONG_USAGE |
Du hast IIS konfiguriert und hast ein Problem damit, Dateien mit einem „+“ im Namen zu öffnen oder hochzuladen.
Der Abschnitt zum Filtern von Anfragen der doppelte Escaping-Sequenzen nicht zulässt.
Um dieses Problem zu beheben, erledige die folgenden Schritte:
Nun sollte es möglich sein, Dateien mit einem „+“ im Namen zu öffnen/hochzuladen.
]]>Um nun nicht regelmäßig die Website besuchen zu müssen und nach verfügbaren Terminen zu schauen und auch um sofort über einen freien Termin benachrichtigt zu werden, wird das folgende PowerShell-Skript in regelmäßigen Abständen über die Windows Aufgabenverwaltung ausgeführt.
$URI = "https://webapl.suntory.co.jp/factory/yamazaki/course/c__00012/td__20180508/?lang=en" $HTML = Invoke-WebRequest -Uri $URI $VALUE = ($HTML.ParsedHtml.getElementsByClassName("emp_select")[0]).innerText $PSEmailServer = "smtp.christianabele.de" $utf8 = New-Object System.Text.utf8encoding if($VALUE -eq "8× ") { #Testergebnis negativ. Keine freien Termine. } else { #Testergebnis positiv. Es gibt freie Termine. Send-MailMessage -Encoding $utf8 -to "XXXXXXXXX@gmail.com" -from "PowerShell <XXXXXXXXX@christianabele.de>" -Subject "Testergebnis POSITIV" -body "VERANSTALTUNGEN ZUR VERFUEGUNG! SCHNELL SEIN" }
Das Skript besucht die Website, sucht das zu prüfende Element anhand der Klasse und liefert dann den Inhalt des Elements als Text zurück. Dieser wird dann mit einem Prüfwert verglichen und bei Bedarf eine Mail versendet.
Um PowerShell-Skripte über die Aufgabenverwaltung auszuführen, müssen diese über PowerShell selbst und nicht direkt aufgerufen werden:
powershell -file "C:\script.ps1"
]]>
Microsoft.Workflow.Client.InvalidRequestException: Failed to query the OAuth S2S metadata endpoint at URI 'http://sitename/_layouts/15/metadata/json/1'. Error details: 'The metadata endpoint responded with an error. HTTP status code: Forbidden.'. HTTP headers received from the server - ActivityId: 4ab628ba-04df-4d36-9425-151a516a7244. NodeId: WORKFLOWHOST01. Scope: /WF - SiteName. Client ActivityId : 4bad9b8e-5231-40f6-a90b-b0775e78c815. ---> System.Net.WebException: The remote server returned an error: (400) Bad Request. at Microsoft.Workflow.Common.AsyncResult.End[TAsyncResult](IAsyncResult result) at Microsoft.Workflow.Client.HttpGetResponseAsyncResult`1.End(IAsyncResult result) at Microsoft.Workflow.Client.ClientHelpers.SendRequest[T](HttpWebRequest request, T content) - -- End of inner exception stack trace --- at Microsoft.Workflow.Client.ClientHelpers.SendRequest[T](HttpWebRequest request, T content) at Microsoft.Workflow.Client.WorkflowManagementClient.SendRequest[T](HttpWebRequest request, T content) at Microsoft.Workflow.Client.ScopeManager.PublishScopeInternal(ScopeDescription description, String[] pathSegments) at Microsoft.SharePoint.WorkflowServices.WorkflowServerPairingContext.EnsureFarmScope(Boolean configureOAuth) at Microsoft.SharePoint.WorkflowServices.PowerShell.RegisterSPWorkflowService.InternalProcessRecord() at Microsoft.SharePoint.PowerShell.SPCmdlet.ProcessRecord()
Wenn dies weiterhin fehlschlägt, versuche den -Force-Parameter hinzuzufügen. Sollte Sharepoint nicht über HTTPS laufen, ergänze außerdem den Paramter -AllowOAuthHttp
Register-SPWorkflowService -SPSite "http://myserver/mysitecollection" -WorkflowHostUri "http://workflow.example.com:12291" -Force -AllowOAuthHttp]]>
Wenn ich die Installationsvoraussetzung ausführe, erscheint der Fehler „Es gab einen Fehler während der Installation. Das Programm war nicht in der Lage XXX zu installieren“.
Manchmal kommt es vor das, dass die ein oder andere Abhängigkeit nicht korrekt installiert wird. Hierfür habe ich das entsprechende Programm dann manuell nachinstalliert. Die folgenden Installer sind SharePoint Voraussetzungen:
Nach der manuellen Installation der fehlerhaften Installer, lief der Prerequisite-Installer erfolgreich durch.
Dieser Fehler tritt auf, während der Konfigurationsassistent für SharePoint-Produkte läuft und wird durch fehlende Update-Patches (Windows 10 Universal Runtime Update) für Windows Server 2012 R2 verursacht. Downloade und installiere Windows Server 2012 R2 Patch KB299926, um dieses Problem zu beheben.
Leider erscheint ein weiteres Problem:“Das Update ist auf Ihrem Computer nicht anwendbar“. OK, Windows 10 Universal C Runtime KB2999226, ist abhängig von einem Windows Server 2012 R2 Update Paket in KB2919355. Also, prüfe auf Windows Updates, wähle den Patch KB2919355 und installieren ihn. Dann sollte dieses Problem behoben sein. Installiere anschließend die Windows 10 Universal C Runtime.
Das liegt meißt daran, dass die WCF Data Services manuell installiert wurden und nicht über den Prerequisite-Installer.
Lösung: Deinstalliere WcfDataServices und installiere die WcfDataServices mit der Prerequisite-Installer neu. Die ist auch über die Befehlszeile möglich:
prerequisiteinstaller.exe /wcfdataservices56: {Pfad zur WcfDataServices.exe}
Danach lösche die zwei Datenbanken im SQL-Server, die während der vorherige Konfiguration erstellt wurden, dann führe den Konfigurations-Wizard erneut aus. Nun sollte er erfolgreich durchlaufen.
]]>Während eines Server-Umzugs ist es eine Menge Arbeit alle Webseiten mit den gleichen Einstellungen neu anzulegen. Hierfür ist es möglich Webseiten in IIS zu exportieren und zu importieren. Dieses Vorgehen ist ebenfalls nützlich bei einem Update des IIS auf eine höhere Version.
Beim Erstellen von Webseiten werden ebenso Application Pool’s angelegt und von der Webseite genutzt. Deshalb ist es zwingend nötig diese zu erst zu kopieren.
%windir%\system32\inetsrv\appcmd list apppool /config /xml > c:\apppools.xml
Dieser Befehl exportiert alle Application Pools auf dem Webserver, deshalb ist es nötig die apppools.xml zu bearbeiten und alle Einträge zu löschen die nicht importiert werden sollen. So zum Beispiel:
Und alle anderen die bereits auf dem neuen Webserver existieren. AppCmd überspringt die bereits existierenden nicht, es bricht ab ohne überhaupt etwas zu kopieren.
%windir%\system32\inetsrv\appcmd add apppool /in < c:\apppools.xml
Alle Application Pools werden mit diesem Befehl auf dem Webserver erstellt.
%windir%\system32\inetsrv\appcmd list site /config /xml > c:\sites.xml
Dieser Befehl exportiert alle Webseiten auf dem Webserver, deshalb ist es nötig die sites.xml zu bearbeiten und alle Einträge zu löschen die nicht importiert werden sollen. So zum Beispiel:
Und alle anderen die bereits auf dem neuen Webserver existieren.
%windir%\system32\inetsrv\appcmd add site /in < c:\sites.xml
]]>Du solltest deine web.config jetzt aktualisieren.
Nach einigen Recherchen hab ich eine Lösung gefunden. In meinem Fall war es nötig, dass die URL über ein URL-Rewrite richtig geroutet wird. Hierfür habe ich die folgenden Regeln erstellt.
<configuration> <system.webServer> <rewrite> <rules> <rule name="WordPress Rule 1" stopProcessing="true"> <match url="^index\.php$" ignoreCase="false" /> <action type="None" /> </rule> <rule name="WordPress Rule 2" stopProcessing="true"> <match url="^([_0-9a-zA-Z-]+/)?files/(.+)" ignoreCase="false" /> <action type="Rewrite" url="wp-includes/ms-files.php?file={R:2}" appendQueryString="false" /> </rule> <rule name="WordPress Rule 3" stopProcessing="true"> <match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" /> <action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" /> </rule> <rule name="WordPress Rule 4" stopProcessing="true"> <match url="^" ignoreCase="false" /> <conditions logicalGrouping="MatchAny"> <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" /> </conditions> <action type="None" /> </rule> <rule name="WordPress Rule 5" stopProcessing="true"> <match url="^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)" ignoreCase="false" /> <action type="Rewrite" url="{R:2}" /> </rule> <rule name="WordPress Rule 6" stopProcessing="true"> <match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" /> <action type="Rewrite" url="{R:2}" /> </rule> <rule name="WordPress Rule 7" stopProcessing="true"> <match url="." ignoreCase="false" /> <action type="Rewrite" url="index.php" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
]]>
Ich nutze in diesem Beispiel die Module von Northscale:
c:\memcached\memcached.exe -d install
Der Memcached-Service kann darauf über einen der folgenden Kommandos gestartet oder gestoppt werden:
c:\memcached\memcached.exe -d start c:\memcached\memcached.exe -d stop
schtasks /create /sc onstart /tn memcached /tr "'c:\memcached\memcached.exe' -m 512"
Seafile ist in Phyton entwickelt. Damit nun Seafile mit Memcached kommunizieren kann benötigen wir eine Schnittstelle von Phyton nach Memcached. Hierfür nutze ich das Modul Phyton-memcached von tummy.com.
phyton setup.py install
Damit dein Seafile-Server nun auch das Memcached-Modul nutzt muss er hierfür konfiguriert werden. Öffne hierfür die Datei seahub_settings.py im Konfigurationsornder von Seafile und füge die folgenden Zeilen hinzu:
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': '127.0.0.1:11211', } }
Siehe hierfür auch die Seafile-Doku.
Das war’s auch schon. Dein Seafile-Server sollte nun, nicht nur messbar sondern auch fühlbar, performanter und agiler antworten.
]]>
Ich arbeite mit einem Windows Server 2012 und IIS 8. Für den Betrieb von Seafile ist außerdem Phyton notwendig. Für die hier verwendete Server-Version 6.0.7 von Seafile installiere ich Phyton in Version 2.7.11 benötigt.
Hinweis: 64bit Versionen von Phyton funktionieren nicht mit Seafile
Jetzt solltest du eine Ordner-Struktur wie diese haben:
C:\SeafileProgram\seafile-server-5.1.3
Um den Seafile-Server zu starten, führe die Datei run.bat im Ordner C:\SeafileProgram\seafile-server-5.1.3 aus. Beim ersten Start folgt ein Dialog um den Speicherort des data-Ordners festzulegen.
Auch beim ersten Start ist es notwendig sich einen Admin-Account anzulegen. Dies ist möglich über den Menüpunkt Add an admin account des Seafile-Tray-Icons.
Nachdem der Seafile Server nun gestartet ist sind noch ein paar Konfigurationen nötig.
to be done…
]]>