Takže jste ke své naprosté hrůze zjistili, že web WordPress, který vaše společnost zdědila, běží na Windows... na IIS?
Než vstanete, vyhoďte židli k počítači z okna, snězte škodolibě salát se svými spolupracovníky a vychutnejte si ho, nebo zahoďte všechny produkční databáze a odpočiňte si. Pokryli jsme vás.
Dobrá poznámka. IIS (Information Internet Services) je proprietární (prozatím) vlastní webový server poskytovaný společností Microsoft pro zákazníky se systémem Windows. IIS je fantastický v tom, co dělá, a může sloužit jako efektivní webový hostitel i jako absolutně zlatý reverzní proxy server.
V čem je tedy problém?
Zilchi. Nada. Žádné kostky. WordPress absolutně není navržen pro provoz na IIS a pravděpodobně nikdy nebude. To neznamená, že váš server vzplane při spuštění webu, ale znamená to, že když je potřeba podpora, můžete si být zatraceně jisti, že vaše první rada bude „nepoužívat Windows“.
Takže IIS nepoužíváte? Jednoduchý?
Až na to, že v současné době je NGINX zmrzačený na Windows (zdroj) a Apache, který je naštěstí dostupný na Windows prostřednictvím neoficiálních kanálů... Ale stále máte velmi malou podporu, protože ve Windows funguje jinak.
Požadavky WordPress však uvádějí:
Doporučujeme Apache nebo Nginx jako nejrobustnější a nejfunkčnější server pro provozování WordPress, ale bude stačit jakýkoli server, který podporuje PHP a MySQL.
– tak ještě neztrácejte naději.
Pokud přicházíte z prostředí Apache, možná jste zvyklí na soubor .htaccess. Stejně jako .htaccess není kompatibilní s NGINX, není kompatibilní ani s IIS.
Pro každou složku důležitou pro IIS se v adresáři zobrazí soubor web.config. To IIS říká, jaké funkce a zapojení má složka s webovými možnostmi. Uloží vše z hlediska konfigurace, takže buďte opatrní, abyste tento soubor nesmazali nebo nepoškodili.
web.config je soubor XML a lze jej snadno upravovat v editoru dle vašeho výběru. Jakmile se velmi dobře seznámíte s IIS, zjistíte, že upravujete soubor ručně častěji než pomocí konzole GUI. To také sníží režii správy změn nastavení IIS.
Příklady užitečných vlastností zde uložených jsou:
Prioritní seznam výchozího indexu pro načtení.Pravidla přepisování/přesměrování URL.Požadavek na filtrování, blokování a úpravy nastavení.Přepisování nadřazených nastavení adresáře (např. verze PHP).Nejprve budete potřebovat databázi. Z důvodu výkonu a bezpečnosti se doporučuje mít databázi na jiném serveru, ale také můžete mít MySQL spuštěnou na stejném serveru jako IIS.
MySQL běží dobře na Windows a je velmi dobře podporován. Při konfiguraci MySQL byste neměli očekávat velké tlaky. Pokud však chcete používat Microsoft SQL Server, možná budete chtít vyzkoušet Project Nami.
Po dokončení nastavte databázi a přistupujte k uživateli jako při instalaci v systému Linux.
I když je nejlepší vždy používat nejnovější verzi systému Windows Server, zvažte použití verze nejpozději IIS 10 (Windows Server 2016). Důvodem je, že starší verze IIS nemají podporu pro HTTP/2. Technicky vzato minimální požadavek je IIS 7 (Windows Server 2008).
Budete muset nakonfigurovat IIS tak, aby pro IIS používala zpracování CGI (což není ve výchozích instalacích IIS povoleno).
Potřebujete také modul URL Rewriting pro IIS, pokud neplánujete používat tyto super ošklivé adresy URL index.php.
PHP je plně podporováno v systému Windows*. Chcete-li stáhnout PHP, navštivte jejich webové stránky na adrese windows.php.net. Budete také potřebovat C++ Redist 2019, který najdete na postranním panelu na jejich webových stránkách ke stažení.
Tato příručka bude používat FastCGI, která bude vyžadovat nezávadnou bezpečnou verzi (NTS) PHP. Typicky první stažení uvedené v každé verzi PHP na jejich webu bude ideální verzí pro IIS.
Stáhněte si správný soubor zip a rozbalte jej na vámi zvolené místo na serveru (soubory programu jsou přijatelné). Moje volba je normálně C:\PHP\X.X.X (číslo verze).
Pokud plánujete spouštět nějaké nástroje PHP, jako je WP-CLI, bylo by také dobré přidat výše uvedenou cestu do systémové proměnné prostředí Path.
Chcete-li tak učinit, otevřete Spustit (klávesa Win + R) a spusťte rundll32 sysdm.cpl,EditEnvironmentVariables. Připojte cestu k cestě nalezené v části Systémové proměnné.
Instalace WP-CLI (volitelné)Nyní je vhodná doba k instalaci WordPress CLI, pokud jej plánujete používat. Poskytují fantastický průvodce nastavením WP-CLI ve Windows.
Web Platform Installer – EasyWindows Server má volitelnou komponentu nazvanou Web Platform Installer. Tato úhledná aplikace poskytuje sbírku nejznámějších a nejoblíbenějších softwarových balíčků a poskytuje velmi snadné způsoby jejich instalace. Hádejte co, včetně WordPressu! Nejprve musíte nainstalovat IIS s CGI.
Vytvořte web jako normální a dvakrát na něj klikněte. Ve správě byste měli mít možnost s názvem Web Platform Installer (v době psaní tohoto článku je to kruhová oranžová ikona stahování). Otevřete toto a načte se nový panel. Vyhledejte WordPress, klikněte na Přidat a poté na Instalovat.
❓ Nemáte instalátor webové platformy? Ve výchozím nastavení není nainstalován. Klikněte na název serveru na levém panelu Připojení. V nyní viditelném pravém panelu klikněte na Získat nové komponenty webové platformy. Postupujte podle pokynů společnosti Microsoft a budete mít výše uvedené tlačítko.
Nyní u konfigurací byste měli obecně vždy oddělit své servery (např. web a databáze jsou oddělené). Ale někdy prostě chcete rychle začít na vývojovém webu. Tento instalační program má skvělý trik. Pokud nemáte databázový server a aktuální počítač nemá nainstalovanou MySQL, vytvoří za vás instanci serveru MySQL!
Pokud to uděláte správně, měli byste být na této obrazovce. Ve výchozím nastavení se pokusí vytvořit localhost/wordpress. Ujistěte se, že jste vybrali správný web a v případě potřeby i správnou konfiguraci podsložky. Pokud je něco v nepořádku, bude nutné to poté ručně změnit.
Klikněte na Pokračovat a jděte si dát kávu. Když se vrátíte, WordPress je nainstalován! Snadno, máte první instalaci WordPressu.
Pro technické informace:
Je nainstalován Microsoft WebMatrix.❗ PHP 7.1 se instaluje přes IIS Express.Doporučujeme novější verzi PHP.Je vytvořen globální modul FastCGIModule pro PHP.To znamená, že všechny weby na vašem serveru IIS mohou spouštět kód PHP prostřednictvím tohoto modulu. Pokud chcete spouštět různé verze, změňte seznamy priorit. Chcete-li to překonat, můžete použít PHP Manager nebo ruční proces. Pokud nebyla poskytnuta žádná externí databáze, je nainstalována MySQL 5.1. Plugin PHP Manager IIS – středně pokročilýExistuje plugin pro IIS s názvem PHP Manager, který je schopen udělat většinu těžké práce za vás při konfiguraci PHP. To vám umožní zaregistrovat nové verze PHP, upravit pluginy, upravit konfigurace a dokonce rozdělit kontejnery na různé verze IIS co nejjednodušeji pomocí GUI.
Stačí si stáhnout jejich rozšíření a nainstalovat je na svůj server. Při příštím spuštění IIS najdete v modulu snap-in nový modul PHP.
Můžete zaregistrovat nadřazenou verzi PHP a ovlivní to všechny podřízené stránky. Pokud zaregistrujete alternativní verzi na podřízeném webu, přepíše nadřazenou verzi a tak dále hierarchickým způsobem. Multiverze PHP, hurá výhoda!
PHP ručně – PokročiléPokud se rozhodnete nepoužít správce IIS (nejste fanouškem komunitních modulů IIS), můžete přesto pokračovat v ruční konfiguraci PHP do kontejneru IIS.
Nejprve musíte systému FastCGI říci o své instalaci PHP.
Otevřete IIS. Klikněte na kořenový server (hned pod Úvodní stránkou v levém podokně). Otevřete Nastavení FastCGI. Na pravé straně klikněte na Přidat aplikaci… V úplné cestě přejděte na php-cgi.exe v extrahovaném nastavení php .V Monitor changes to file nastavte toto na váš soubor php.ini.Klikněte na … na konci řádku s názvem Environmentální proměnné.Klikněte na Přidat.Přidejte proměnnou PHPRC s hodnotou instalační cesty PHP, kde je váš soubor PHP-CGI byla výše. Vytvořte další proměnnou s názvem PHP_FCGI_MAX_REQUESTS a porovnejte ji s hodnotou v Instance MaxRequests (doporučení pro obě hodnoty je 10 000). Klikněte na OK.Super! IIS nyní ví, že vaše složka PHP je proces CGI, nyní ví, jak zpracovat požadavky na PHP s tímto procesorem. Nyní nastavíme jednotlivé webové stránky pro použití PHP CGI.
Najděte svůj kontejner ve službě IIS (např. Výchozí webová stránka) a klikněte na něj. Otevřít mapování obslužného programu. Na pravé straně vyberte možnost Přidat mapování modulu. Přidejte následující položku:*.php pro cestu požadavku.FastCgiModule pro Module.Path do vašeho PHP CGI pro Executable.Cokoliv chcete pro Name.Vraťte se zpět a přejděte do Výchozího dokumentu.Přidejte index.php do seznamu (podle vašeho výběru).Otestujte ve svém prohlížeči, zda se PHP načte.Vyzkoušejte soubor index.php s < p>Pokud provedete výše uvedené pro nejvyšší položku (obvykle název vašeho počítače), zkopíruje se do všech nových kontejnerů, takže tento proces nemusíte provádět pro každou lokalitu.Doporučená konfigurace php.iniDokonalá konfigurace php.ini je do značné míry hrou pokusů a omylů. Věřte mi, že je těžké najít nejlepší vyvážení konfigurace, pokud jde o PHP, WordPress a Windows. Zde jsou některé podstatné věci:
cgi.force_redirect = 0 (nezbytné!). fastcgi.impersonate = 1 extension_dir = /extNastavují se při použití PHP Manageru. To nakonfiguruje PHP, aby pochopilo, že pracuje v režimu CGI. Druhá konfigurace také pomáhá propojit operace PHP s tím, jak funguje IIS, což umožňuje lepší souhru mezi PHP a IIS.
Třetí se doporučuje zejména v případě, že vaše instalace PHP není umístěna na jednotce C. Absolute zastaví PHP ve snaze interpretovat, kde je adresář rozšíření, což může být velmi špatné, pokud není umístěno na jednotce C.
Nyní jednoduchá část – instalace WordPressu! Naštěstí je to stejně snadné, ne-li jednodušší než protějšek serveru Linux.
Vytvořte požadovaný web ve službě IIS. Pokud toto vážete jako doménu nebo subdoménu, vytvořte nový web. V opačném případě můžete vytvořit podsložku (nebo virtuální podsložku) ve službě IIS a nastavit instalaci podsložky WordPress.
Ve složce, kterou jste svázali s kontejnerem, rozbalte instalační zip WordPress (nebo použijte WP-CLI, pokud bylo nainstalováno dříve). Pokud to uděláte správně, když navštívíte URL v prohlížeči, uvidíte starou dobrou 5minutovou instalační obrazovku.
Proveďte instalaci jako na normálním webu a gratulujeme – máte web WordPress běžící na IIS!
V naději, že informace budou aktuální a relevantní, mi následující komentátoři níže pomohli udržet kontrolu:
Patrick Bates za upozornění na instalátor webové platformy.John Wilkin za upozornění, že jsem se nezabýval web.config.Microsoft přestal kompilovat PHP pro Windows po PHP 8, takže technicky ano. Poskytovatelé komunitních edic však budou nadále vytvářet sestavení pro platformu Windows.
SaraMG poskytuje chybějící kontext v tomto příspěvku na Redditu. To stojí za to vyzkoušet, protože komunita poskytuje alternativní možnosti, které můžete použít post-oficiální sestavení. Jakmile bude PHP 8 vydáno, aktualizujeme tento záznam o některá doporučení.
Zobrazila se mi chyba: 500 Proces FastCGI se neočekávaně ukončil.Každá verze PHP pro Windows závisí na balíčku Visual C++ Redist, který je zmíněn v názvu ke stažení. Normální příjem této chyby znamená, že váš systém nemá ten, který potřebuje, což způsobuje chybu procesu CGI.
V každém segmentu stahování na webu pro stahování zkontrolujte VCXX (X je číslo). Levý postranní panel vám řekne, který redistribuovatelný balíček potřebujete a jak jej získat. Po instalaci se tato chyba zastaví.
Pokud – z jakéhokoli důvodu – instalujete vydání Legacy 5.6, stáhněte si 32bitovou redistribuovatelnou položku bez ohledu na typ architektury vašeho serveru.
Zobrazila se mi chyba: 500.21 Handler „xyz“ má ve svém seznamu modulů špatný modul „FastCGIModule“.Při instalaci Internet Information Services (IIS) běží PHP přes CGI. To umožňuje službě IIS předat zpracování kódu jazyka jiného než Microsoft příslušnému procesoru. Pro nás to umožňuje IIS chuck .php kód v PHP.
Tato chyba jednoduše znamená, že modul CGI, který používá (FastCGI), nebyl nainstalován. To se dá snadno opravit!
Otevřete Správce serveru. Vpravo nahoře otevřete Spravovat a poté Přidat role a funkce.
Další, další, až se dostanete do Roles. Na webovém serveru (IIS) > Webový server > Vývoj aplikací > Zkontrolujte CGI. Klikněte na Instalovat (nebo na Další, dokud to nebude možné) a váš server IIS by nyní měl podporovat CGI, včetně FastCGI
Pretty Permalinks a .htaccessWordPress je dostatečně chytrý, aby věděl, že je na IIS, takže když místo vytváření .htaccess upravíte trvalé odkazy, vytvoří soubor web.config, který je ekvivalentem IIS. Pokud potřebujete další pravidla, modul IISrewrite se může pokusit analyzovat váš soubor htaccess v modulu IIS.
Pokud vytvoříte soubor .htaccess, bude ignorován – přepis IIS se může pokusit tyto soubory převést, ale nepoužít je.
Jak deaktivuji xmlrpc přes IIS?Za léta používání WordPressu se to na mě objevilo teprve nedávno – lidé zneužívající rozhraní xmlrpc.php. Ve WordPressu existuje řada možností, jak se s tím vypořádat, ale všechny zahrnují načítání WordPress. Osobně si myslím, že je lepší použít IIS k blokování rozhraní.
Přes web.config
Vyhledejte blok a přidejte toto (obvykle dole):
Jakýkoli požadavek contoso.com/xmlrpc.php nyní namísto toho, aby prošel rozhraním, obslouží chybu odmítnutí požadavku. Tím přestane WordPress zpracovávat uvedené požadavky, a proto přestaňte plýtvat výkonem zpracování těchto falešných požadavků.
Jak nastavím oprávnění?Kontejner bude ve výchozím nastavení používat účet IUSR, který ve výchozím nastavení nebude mít přístupová práva. Pro začátek můžete jednoduše udělit IUSR plná oprávnění ke složce a váš web bude fungovat. Proběhnou aktualizace, mezipaměť se zapíše, všechno zlato.
To někdy nefunguje, alternativou, kterou můžete udělat, je změnit anonymní ověřování v Authentication na kontejneru na identitu fondu aplikací a dát skupině IUSRS plný přístup.
Obojí se nedoporučuje pro produkční použití, protože v případě kompromisu bude mít hacker plný přístup pro zápis. Můžete se podívat na příručku o oprávněních z WordPress, protože základy oprávnění jsou podobné.
Jak povolím HTTP/2?HTTP/2 je podporováno pouze ve službě IIS 10 nebo vyšší, která vyžaduje Windows Server 2016 nebo vyšší.
Jak zvýším limity běhu?Ve Správci PHP klikněte na kontejneru, který chcete upravit, na Nastavit limity běhu. Zobrazí se konfigurační možnosti php.ini pro rychlou změnu těchto limitů. Pro všechny ostatní můžete najít limity v php.ini jako vždy.
Pokud si přejete prodloužit maximální dobu provádění, mějte na paměti, že jak PHP, tak IIS sledují časové limity odlišně. Kromě zvýšení tohoto pomocí buď PHP Manager nebo php.ini, budete muset říct IIS také.
Přejděte do kořenového adresáře (pod Úvodní stránkou na levém panelu ve službě IIS). Otevřete Nastavení FastCGI a najděte CGI, které chcete upravit. Klikněte na Upravit a měli byste vidět dvě nastavení s názvem Časový limit aktivity a Časový limit požadavku. Nastavte oba na libovolný limit a ujistěte se, že se všechny tři (včetně maximálního času_provádění PHP) shodují. Váš časový limit by nyní měl být dostatečně zvýšen!
Mám zvolit Windows před Linuxem pro WordPress? Mohu připojit WordPress k Microsoft SQL Server?Projekt Nami je fork WordPress, který je navržen tak, aby spolupracoval s Microsoft SQL Server místo MySQL. Tento tým nahradil všechny funkce MySQL a přidal některé užitečné funkce ze serveru SQL Server. Tohle stojí za vyzkoušení!
Mohu spustit více verzí PHP?Ano! Pravděpodobně je to jedna z mála výhod běhu PHP na IIS, můžete spustit více verzí PHP.
Když se díváte na segment Module Mappings (buď na webu nebo na celém serveru), v pravém sloupci by měla být možnost, která říká Zobrazit uspořádaný seznam…. Nejvyšší verzí PHP bude zvolená verze, takže to využijte ke změně verze, se kterou váš web pracuje.
Článek byl aktualizován 15. ledna 2021, aby opravoval emotikony po upgradu systému.
PREV: Odstraňování problémů – QRemote Error „Nelze se připojit k serveru...
NEXT: Nelze navázat relaci vzdálené plochy - Windows Server...