Specifika Windows serveru

Virtuální servery zřízené s operačním systémem Windows mají oproti Linux serverů rozdílné vlastnosti a služby, které vyplývají z dané platformy. Virtuální server lze objednat v rámci balíčků Komplet, Firma a Expert.

Níže naleznete specifické vlastnosti a služby Windows řešení.

 

 


 

Pojmenování souborů

Jméno souboru nebo adresáře nesmí přesáhnou 256 znaků (včetně přípony) a nesmí obsahovat následující znaky: ? \ * " < > | /.  Operační systém Windows nerozlišuje velká a malé písmena v názvech souborů a nezáleží tedy například jestli odkaz v HTML na nějaký soubor je zapsán malými písmeny a skutečné jméno souboru na souborovém systému je písmeny velkými.


Nastavení práv souborů

Hostingy umístěné na serverech s operačním systémem Windows mají pouze dvě možnosti nastavení přístupových práv. Změnu lze provést v případě zájmu pouze přes zaslaný Autorizovaný požadavek. Prostřednictvím FTP práva souborů měnit nelze.
Základním nastavením práv souborů po vytvoření služby hostingu je Standardní bezpečnost.

  1. Vysoká bezpečnost: s tímto nastavením jsou servery zřizovány. Skriptům je povolen zápis pouze do adresářů /Upload a /WWWRoot/Dread
  2. Standardní bezpečnost: obdoba Linuxového nastavení 777 - plná práva zápisu všem do všech složek a souborů v adresáři /WWWRoot/ a níže.

Struktura adresářů

Při přihlášení na FTP Windows serveru můžete najít následujících pět adresářů - 

  • WWWRoot - rootová složka pro nahrání Vaší aplikace. Soubory zde nahrané se zobrazí na nasměrované doméně. Podadresář DRead je určen pro umístění souborů, které není dovoleno anonymně číst nebo stahovat pomocí http. Nejčastěji jde o databázové soubory typu access atp.
  • Store - Zde je možno umístit soubory, ke kterým je možný pouze autorizovaný přístup pomocí FTP.
  • ErrMsg - Zde jsou umístěny html soubory, které server posílá v případě chyby. Změnou souborů je možno definovat uživatelské chyby. Např. modifikací souboru 404.htm
  • Logs - V tomto adresáři jsou umístěny HTTP logy od virtuálního serveru. Logy starší čtyřiceti dnů jsou automaticky mazány.

Provoz ASP.NET

Pokud vytváříte kód svojí aplikace pomocí "Visual Studio .net", tak při založení nového projektu, automaticky vzniká i aplikace na podadresáři. To je pochopitelné vzhledem k tomu, že v rootu webu mohou být specifická nastavení pro jiný projekt, která by mohla při ladění scriptů působit problémy. Naše hostingové stroje ovšem nejsou určeny pro ladění kódu a tudíž není provoz více aplikací na jednom virtuálním serveru potřebný.

Pro provoz tedy vyplývá následující:

  1. Soubory z adresáře bin musí být umístěny v tomto adresáři, který je v rootu WEBu (ve WWWRoot). Aplikace hledá tyto soubory vždy jen od rootu webu, kde je aplikace nastavena a pokud je adresář bin ještě v dalším podadresáři, nejsou soubory nalezeny a dojde k chybovému hlášení.
  2. Ve web.config, který je umístěn jinde než v rootu WEBu (v podadresáři), nesmí být uvedeny parametry pro nastavení aplikace. Jednak nemají žádný význam, ale hlavně způsobují chybové hlášení při pokusu spustit script z tohoto podadresáře.
  3. Soubor global.aspx umístěný jinde než v rootu webu není zpracováván.

Výše uvedené skutečnosti jsou nastavovány při založení projektu na podadresáři pomocí "Visual Studio .net" automaticky a je tedy nutno na ně dávat pozor. Soubory global.aspx a web.config vznikají vždy a rovněž nějaké soubory jsou vždy vytvořeny i v adresáři bin. Je ale nutno konstatovat, že uvedené soubory (nebo jejich obsah) nejsou vždy nezbytné pro běh vaší aplikace. Platí, že jakýkoli zbytečný kód navíc zpomaluje zkompilování (spuštění) vaší aplikace na WEB serveru, jakož i znamená vyšší nároky na paměť. Proto Vám doporučujeme prostudovat, zda uvedené soubory je skutečně nutné na virtuální server kopírovat.


Aplikační pool

Aplikační pool u Windows serverů zajišťuje rozdělení aplikací na serveru sdíleného hostingu. Zároveň umožňuje nastavení úrovně izolace mezi jednotlivými webovými aplikacemi. Toto je opatření, které primárně zabraňuje přetěžování serveru. Přetěžování může vznikat jednak velkým provozem na virtuálním serveru, častěji však chybnými (špatně sestavenými) scripty a dotazy na databáze. 

  • Recyklování paměti

    Application pool který je samostatný pro každý virtuální server, je sledován z hlediska množství paměti kterou má zaalokovánu. Sledují se dvě hodnoty, Virtual Memory (Wokring Set) a Used Memory (Private). Při překročení nastavených hodnot je spuštěn nový proces, který přebere běh aplikace virtuálního serveru. Původní (starý) proces je pak ukončen. V praxi se věc projevuje zrušením sessions u ASP aplikací a zneplatněním viewstate u ASPX aplikací.
  • Sledování spotřeby procesorového času

    Aplikační pool, který je samostatný pro každý virtuální server, je sledován z hlediska času procesoru spotřebovaného aplikacemi (scripty) které jsou v rámci virtuálního serveru spouštěny. Nasčítaná hodnota je periodicky porovnávána s nastaveným limitem, a pokud je vyšší, dojde k vypnutí application poolu. Omezení výkonu není nijak škálováno a web je rovnou vypnut. Rovněž se nikam nezaznamenávají hodnoty o spotřebovaném procesorovém času. Navenek se virtuání server s překročenými procesorovými limity projevuje hlášením "Service Unavailable" a to i v případě požadavku na statický obsah.
Důležité: Aplikační pooly jsou kontrolovány každou půlhodinu a vypnuté pooly jsou každých 30 min automaticky startovány.

Soubor web.config

Soubor web.config slouží k nastavení vašeho virtuálního serveru. Po vytvoření nového virtuálního serveru je vkládán web.config s následujícím výchozím obsahem -

<!--l version="1.0" encoding="utf-8-->
<configuration>

<system.web>
<compilation tempdirectory="P:\%username_without_suffix%\" >
</compilation>

<customerrors mode="on">
</customerrors>

</system.web>

</configuration>

Položka "tempDirectory" v sekci "compilation" je nastavena a určena pro každý virtuální server zvlášť. Pokud neexistuje, nebo je vyplněna chybně, dochází buď zcela nebo částečně k nefunkčnosti hlavně zkompilovaných knihoven *.dll, objevuje se hlášení "Access is denied". Takése může stát, že ostatní uživatelé virtuálních serverů běžících na stejném stroji mohou číst kód Vašeho virtuálního serveru a tak eventuelně zjistit přístupy k databázím, či do neveřejných částí Vašeho WEBu. Proto nedoporučujeme "tempDirectory" měnit.
Položka "mode" v sekci "customErrors" určuje, zda se budou zobrazovat chybová hlášení při zpracování *.aspx či *.dll. Pokud chcete zobrazovat podrobná chybová hlášení, změňte ji na "Off". 

Přesměrování do podsložky pomocí web.config

<configuration>
   <system.webServer>
<rewrite>
           <rules>
       <rule name="sub1 redirect" stopProcessing="true">
       <match url="(.*)" />
       <conditions>
       <add input="{HTTP_HOST}" pattern="^test\.papundekl\.cz(/)?$" />
       <add input="{PATH_INFO}" pattern="^/test/" negate="true" />
       </conditions>
       <action type="Rewrite" url="\test\{R:0}" />
       </rule>
           </rules>
       </rewrite>
   </system.webServer>
</configuration>

 Daný kód přesměruje subdoménu test.domena.cz do podsložky /test/.

PHP limity a změna PHP verze

Velikost uploadu:
(upload_max_filesize)
Velikost paměti:
(memory_limit)
Maximální doba běhu skriptu:
(max_execution_time)
 
2 MB
128 MB
300 vteřin
 

Na všech hostingových serverech s OS Windows je plně podporováno scriptování v PHP.
V případě zájmu je možné nás kontaktovat autorizovaně, změnu PHP verze Vám nastavíme z naší strany na 5.6, 7.3 nebo 8.0 verzi.

Každý zákazník si může sám nastavením souboru web.config změnit verzi PHP scriptů a
to editací konfiguračního souboru web.config, který se nalézá v adresáři wwwroot.

Vzorový web.config pro verzi PHP 7.3 si můžete stáhnout ZDE.
Vzorový web.config pro verzi PHP 8.0.12 si můžete stáhnout ZDE.

Vzorový soubor je možné použít přímo ve Vašem webu, jediné co je nutné je ruční editace
kompilačního adresáře. Konkrétně na čtvrtém řádku změníte cestu ke kompilačnímu
adresáři a to buď dle původního web.configu nebo dle FTP účtu (např. máte-li účet
v001234a nastavíte kompilační adresář P:\v001234\.

Upozornění: Pokud Váš web.config soubor již obsahuje jiné nastavení jako je např. přesměrování na HTTPS protokol, je nutné toto nastavení do nového web.config souboru zahrnout, jinak přestane fungovat.