Значи за свой абсолютен ужас открихте, че WordPress сайтът, който вашата компания е наследила, работи под Windows... под IIS?
Преди да се изправите, изхвърлете компютърния си стол през прозореца, изяжте злобно салатата на колегите си и й се насладете, или зарежете всички производствени бази данни, отпуснете се. Ние ви покриваме.
Добър въпрос. IIS (Information Internet Services) е домашно разработен собствен (засега) уеб сървър, предоставен от Microsoft за клиенти на Windows. IIS е фантастичен в това, което прави, и може да служи като ефективен уеб хост, както и като абсолютно златен обратен прокси сървър.
И така, какъв е проблемът?
Zilch. Нада. Без зарове. WordPress абсолютно не е проектиран да работи на IIS и вероятно никога няма да бъде. Това не означава, че сървърът ви ще избухне в пламъци, когато стартирате сайта, но означава, че когато е необходима поддръжка, можете да сте дяволски сигурни, че първият ви съвет ще бъде „не използвайте Windows“.
Значи не използвайте IIS? просто?
С изключение на това, че в момента NGINX е осакатен в Windows (източник) и Apache, който за щастие е достъпен в Windows чрез неофициални канали… Но все още имате много малка поддръжка, тъй като работи по различен начин в Windows.
Изискванията на WordPress обаче гласят:
Препоръчваме Apache или Nginx като най-стабилния и функционален сървър за стартиране на WordPress, но всеки сървър, който поддържа PHP и MySQL, ще свърши работа.
– така че все още не губете надежда.
Ако идвате от среда на Apache, може да сте свикнали с файл .htaccess. Точно както .htaccess не е съвместим с NGINX, той също не е съвместим с IIS.
За всяка важна за IIS папка в директорията ще се появи файл web.config. Това казва на IIS какви фантастични функции и участие има папката с уеб възможностите. Той ще съхранява всичко по отношение на конфигурацията, така че внимавайте да не изтриете или повредите този файл.
web.config е XML файл и може лесно да се редактира в редактор по ваш избор. След като се почувствате добре с IIS, ще откриете, че редактирате файла ръчно по-често, отколкото да използвате GUI конзолата. Това също ще намали разходите за управление на промяната на настройките на IIS.
Пример за полезни свойства, съхранявани тук, са:
Списък с приоритети на индекса по подразбиране за зареждане. Правила за пренаписване/пренасочване на URL адреси. Искане за филтриране, блокиране и корекции на настройките. Замяна на директорията на родителските настройки (напр. PHP версия).Първо ще ви трябва база данни. Препоръчително е да разполагате с базата данни на друг сървър от съображения за производителност и сигурност, но можете също така да имате MySQL, работещ на същия сървър като IIS.
MySQL работи добре на Windows и се поддържа много добре. Не трябва да очаквате много отстъпки в начина на конфигуриране на MySQL. Въпреки това, ако искате да използвате Microsoft SQL Server, можете да проверите Project Nami.
След като приключите, настройте база данни и осъществете достъп до потребител, както бихте направили при инсталация за настройка, базирана на Linux.
Освен това, въпреки че е най-добре винаги да използвате най-новата версия на Windows Server, моля, обмислете използването на версия не по-късна от IIS 10 (Windows Server 2016). Това е така, защото по-старите версии на IIS нямат поддръжка за HTTP/2. От техническа гледна точка минималното изискване е IIS 7 (Windows Server 2008).
Ще трябва да конфигурирате IIS да използва CGI обработка за IIS (която не е активирана при инсталации на IIS по подразбиране).
Нуждаете се и от модула за пренаписване на URL адреси за IIS, освен ако не планирате да използвате тези супер грозни URL адреси index.php.
PHP се поддържа напълно в Windows*. За да изтеглите PHP, посетете техния уебсайт на windows.php.net. Ще ви е необходим и C++ Redist 2019, който се намира в страничната лента на техните изтегляния на уебсайтове.
Това ръководство ще използва FastCGI, което ще изисква небезопасна версия (NTS) на PHP. Обикновено първото изтегляне, посочено във всяка PHP версия на техния сайт, ще бъде идеалната версия за IIS.
Изтеглете правилния zip файл и го разархивирайте на място по ваш избор на вашия сървър (програмните файлове се приемат). Моят избор обикновено е C:\PHP\X.X.X (номер на версията).
Ако планирате да стартирате PHP инструменти като WP-CLI, би било също така добра идея да добавите горния път към системната променлива на средата Path.
За да направите това, отворете Run (клавиш Win + R) и стартирайте rundll32 sysdm.cpl,EditEnvironmentVariables. Добавете пътя към път, намерен под системни променливи.
Инсталиране на WP-CLI (по избор)Сега е добър момент да инсталирате WordPress CLI, ако планирате да го използвате. Те предоставят фантастично ръководство за настройка на WP-CLI в Windows.
Инсталатор на уеб платформа – лесенWindows Server има незадължителен компонент, наречен инсталатор на уеб платформа. Това изискано приложение предоставя колекция от най-известните и обичани софтуерни пакети и предоставя супер лесни методи за инсталирането им. Познайте какво, WordPress е включен! Просто първо трябва да инсталирате IIS с CGI.
Създайте сайт като обикновен и щракнете двукратно върху него. Трябва да имате опция в Управлението, наречена Инсталатор на уеб платформа (по време на писане това е кръгла, оранжева икона за изтегляне). Отворете това и ще се зареди нов панел. Потърсете WordPress, щракнете върху Добавяне и след това върху Инсталиране.
❓ Нямате инсталатор на уеб платформа? Не е инсталиран по подразбиране. Щракнете върху името на вашия сървър в левия панел Връзки. Във вече видимия десен панел щракнете върху Вземете нови компоненти на уеб платформата. Следвайте инструкциите на Microsoft и ще имате гореспоменатия бутон.
Сега що се отнася до конфигурациите, обикновено винаги трябва да разделяте вашите сървъри (напр. мрежата и базата данни са отделни). Но понякога просто искате да започнете бързо на сайт за разработка. Този инсталатор има страхотен трик. Ако нямате сървър на база данни и текущата машина няма инсталиран MySQL, тя ще създаде екземпляр на MySQL сървър за вас!
Ако сте направили правилно, трябва да сте на този екран. По подразбиране ще се опита да създаде localhost/wordpress. Уверете се, че сте избрали правилния уеб сайт и – ако желаете – правилната конфигурация на подпапка. Ако нещо не е наред, ще трябва да се промени ръчно след това.
Натиснете „Продължи“ и отидете да вземете кафе. Когато се върнете, WordPress е инсталиран! Лесно като това, имате първата си инсталация на WordPress.
За техническа информация:
Microsoft WebMatrix е инсталиран.❗ PHP 7.1 е инсталиран чрез IIS Express. Препоръчва се по-нова версия на PHP. Създаден е глобален FastCGIModule за PHP. Това означава, че всички сайтове на вашия IIS сървър могат да изпълняват PHP код чрез този модул. Променете списъците с приоритети, ако искате да стартирате различни версии. Можете да използвате PHP Manager или ръчен процес, за да отмените това. MySQL 5.1 е инсталиран, ако не е предоставена външна база данни. PHP Manager IIS Plugin – междиненИма плъгин за IIS, наречен PHP Manager, който е в състояние да свърши по-голямата част от тежката работа вместо вас при конфигурирането на PHP. Това ще ви позволи да регистрирате нови версии на PHP, да коригирате плъгини, да редактирате конфигурации и дори да разделяте контейнери към различни версии на IIS възможно най-лесно чрез GUI.
Просто изтеглете тяхното разширение и го инсталирайте на вашия сървър. Когато следващия път стартирате IIS, ще намерите нов PHP модул в конзолната добавка.
Можете да регистрирате родителска PHP версия и тя ще засегне всички дъщерни сайтове. Ако регистрирате алтернативна версия на дъщерен сайт, тя ще замени родителската и така нататък по йерархичен начин. Мултиверсия на PHP, ура, полза!
Ръчно PHP – РазширениАко решите да не използвате IIS мениджър (не сте фен на общностните IIS модули), тогава можете да продължите с ръчно конфигуриране на PHP в IIS контейнера.
Първо трябва да кажете на системата FastCGI за вашата PHP инсталация.
Отворете IIS. Щракнете върху основния сървър (точно под началната страница в левия панел). Отворете настройките на FastCGI. От дясната страна щракнете върху Добавяне на приложение… В пълен път отидете до php-cgi.exe във вашата извлечена php настройка .В Наблюдавайте промените във файла, задайте това на вашия php.ini файл. Щракнете върху … в края на реда с име Environmental Variables. Щракнете върху Добавяне. Добавете PHPRC променлива със стойността на инсталационния път на PHP, където вашият PHP-CGI файл беше по-горе. Създайте друга променлива с име PHP_FCGI_MAX_REQUESTS и я съпоставете със стойността в Instance MaxRequests (препоръката и за двете е 10000). Щракнете върху OK.Страхотно! IIS вече знае, че вашата PHP папка е CGI процес, вече знае как да обработва заявки към PHP с този процесор. Сега нека настроим отделния уебсайт да използва PHP CGI.
Намерете своя контейнер в IIS (напр. Уеб сайт по подразбиране) и щракнете върху него. Отворете съпоставянията на манипулатора. От дясната страна изберете „Добавяне на съпоставяне на модули“. Добавете следния запис:*.php за път на заявка.FastCgiModule за модул.Път към вашия PHP CGI за изпълним файл. Каквото искате за име. Върнете се назад и влезте в документа по подразбиране. Добавете index.php към списъка (по ваш избор). Тествайте във вашия браузър дали PHP се зарежда. Опитайте файла index.php с < p>Ако направите горното за най-горния запис (обикновено името на вашата машина), той ще копира във всички нови контейнери, така че не е необходимо да извършвате този процес за всеки сайт.Препоръчителна конфигурация на php.iniПерфектната конфигурация на php.ini е до голяма степен игра на проба и грешка. Повярвайте ми, трудно е да се намери най-добрият баланс на конфигурацията, когато става въпрос за PHP, WordPress и Windows. Ето някои основни неща:
cgi.force_redirect = 0 (съществено!). fastcgi.impersonate = 1 extension_dir = /extТе се задават при използване на PHP Manager. Това конфигурира PHP да разбере, че работи чрез CGI режим. Втората конфигурация също така помага да се свържат PHP операциите с начина на работа на IIS, позволявайки по-добро взаимодействие между PHP и IIS.
Третият се препоръчва, особено ако вашата PHP инсталация не се намира на C устройство. Абсолютно спира опитите на PHP да интерпретира къде е разширението dir, което може да стане много грешно, ако не се намира на C устройството.
Сега за една лесна част – инсталирането на WordPress! За щастие това е също толкова лесно да се направи, ако не и по-лесно от аналога на Linux сървъра.
Създайте желания сайт в IIS. Ако обвързвате това с домейн или поддомейн, създайте нов сайт. В противен случай можете да създадете подпапка (или виртуална подпапка) в IIS, за да настроите инсталация на подпапка на WordPress.
В папката, която сте обвързали с контейнера, извлечете zip файла за инсталация на WordPress (или използвайте WP-CLI, ако е инсталиран по-рано). Ако е направено правилно, когато посетите URL адреса в браузъра, ще видите добрия 5-минутен инсталационен екран.
Прекарайте инсталацията като нормален сайт и поздравления – имате WordPress сайт, работещ на IIS!
С надеждата да поддържам информацията актуална и подходяща, следните коментатори по-долу ми помогнаха да ме държат под контрол:
Патрик Бейтс, че посочи инсталатора на уеб платформа. Джон Уилкин, че посочи, че не съм покрил web.config.Microsoft спря да компилира PHP за Windows след PHP 8, така че технически да. Въпреки това доставчиците на издания на общността ще продължат да правят компилации за платформата Windows.
SaraMG предоставя липсващия контекст в тази публикация в Reddit. Това си струва да се провери, тъй като общността предоставя алтернативни опции, които можете да използвате след официалните компилации. Ще актуализираме този запис с някои препоръки, след като PHP 8 бъде пуснат.
Получих грешка: 500 The FastCGI Processed exited неочаквано.Всяка версия на PHP за Windows зависи от Visual C++ Redist пакет, който е споменат в заглавието на изтеглянето. Обикновено получаването на тази грешка означава, че вашата система няма този, от който се нуждае, което води до грешка в CGI процеса.
Във всеки сегмент за изтегляне на уебсайта за изтегляне проверете за VCXX (X е число). Лявата странична лента ще ви каже кой пакет за повторно разпространение ви трябва и как да го получите. Веднъж инсталиран, тази грешка ще спре.
Ако – по някаква причина – инсталирате версиите Legacy 5.6, изтеглете 32-битовата версия за повторно разпространение, независимо от типа архитектура на вашия сървър.
Получих грешка: 500.21 Handler „xyz“ има лош модул „FastCGIModule“ в своя списък с модули.Когато инсталирате Internet Information Services (IIS), PHP работи през CGI. Това позволява на IIS да прехвърли обработката на езиков код, който не е на Microsoft, към съответния процесор. За нас той позволява на IIS да хвърли .php код в PHP.
Тази грешка просто означава, че CGI модулът, който използва (FastCGI), не е инсталиран. Това лесно се поправя!
Отворете Server Manager. Горе вдясно отворете Управление, след това Добавяне на роли и функции.
Следващ, следващ, следващ, докато стигнете до Роли. В уеб сървър (IIS) > Уеб сървър > Разработка на приложения > Проверете CGI. Щракнете върху Инсталиране (или следващ, докато можете) и вашият IIS сървър вече трябва да поддържа CGI, включително FastCGI
Красиви постоянни връзки и .htaccessWordPress е достатъчно умен, за да знае, че е в IIS, така че когато отидете да коригирате постоянните връзки, вместо да създавате .htaccess, те ще създадат web.configfile, който е еквивалент на IIS. Ако имате нужда от допълнителни правила, модулът IISrewrite може да се опита да анализира вашия htaccess файл в IISmodule.
Ако създадете .htaccess файл, той ще бъде игнориран – пренаписването на IIS може да се опита да конвертира тези файлове, но не и да ги използва.
Как да деактивирам xmlrpc чрез IIS?В годините ми на WordPress, това едва наскоро изскочи за мен – хора злоупотребяват с интерфейса xmlrpc.php. Има набор от опции за справяне с това в WordPress, но всички те включват зареждане на WordPress. Аз лично смятам, че е по-добре да използвате IIS, за да блокирате интерфейса вместо това.
Чрез web.config
Намерете блока и добавете това (обикновено в долната част):
Всяка заявка за contoso.com/xmlrpc.php вече ще обслужва грешка при отказана заявка, вместо да преминава през интерфейса. Това спира WordPress да обработва споменатите заявки, следователно спрете да губите мощност за обработка на тези фалшиви заявки.
Как да задам разрешения?По подразбиране контейнерът ще използва акаунта IUSR, който няма да има права за достъп по подразбиране. За да започнете, можете просто да дадете на IUSR пълни разрешения за папката и уебсайтът ви ще работи. Ще се появят актуализации, кешът ще пише, всичко е злато.
Това понякога не работи, като алтернатива, която можете да направите, е да промените анонимното удостоверяване в Удостоверяване на контейнера на идентичност на набора от приложения и да дадете пълен достъп на IUSRS групата.
И двете не се препоръчват за производствена употреба, тъй като в случай на компрометиране хакерът ще има пълен достъп за запис. Можете да разгледате ръководството за разрешения от WordPress, тъй като основите на разрешенията са подобни.
Как да активирам HTTP/2?HTTP/2 се поддържа само в IIS 10 или по-нова версия, която изисква Windows Server 2016 или по-нова версия.
Как да увелича ограниченията за време на изпълнение?В PHP Manager, върху контейнера, който искате да коригирате, щракнете върху Задаване на ограничения за време на изпълнение. Това ще покаже опциите за конфигуриране на php.ini за бърза промяна на тези ограничения. За всички останали можете да намерите ограниченията в php.ini, както винаги.
Ако желаете да увеличите максималното време за изпълнение, моля, имайте предвид, че както PHP, така и IIS проследяват времето за изчакване по различен начин. Освен че увеличавате това чрез PHP Manager или php.ini, ще трябва да кажете и на IIS.
Преминете към корена (под началната страница в левия панел в IIS). Отворете настройките на FastCGI и намерете CGI, който искате да промените. Щракнете върху редактиране и трябва да видите две настройки, наречени Време за изчакване на активността и Време за изчакване на заявката. Задайте и двете на какъвто лимит желаете и се уверете, че и трите (вкл. max_execution_time на PHP) съвпадат. Вашето време за изчакване сега трябва да бъде достатъчно увеличено!
Трябва ли да избера Windows пред Linux за WordPress? Мога ли да свържа WordPress към Microsoft SQL Server?Project Nami е разклонение на WordPress, което е проектирано да работи с Microsoft SQL Server вместо MySQL. Този екип замени цялата функционалност на MySQL и добави някои полезни функции от SQL Server. Това си струва да се провери!
Мога ли да стартирам няколко версии на PHP?Да! Вероятно това е едно от единствените предимства на стартирането на PHP на IIS, можете да стартирате множество версии на PHP.
Когато разглеждате сегмента Съпоставяния на модули (за целия сайт или сървър), трябва да има опция в колоната от дясната страна, която казва Преглед на подреден списък…. Най-горната версия на PHP ще бъде избраната версия, така че използвайте това във ваша полза, за да промените с коя версия работи вашият сайт.
Статията беше актуализирана на 15 януари 2021 г., за да коригира емотикони след надграждане на системата.
PREV: Отстраняване на неизправности - Грешка на QRemote „Не може да се свърже със сървъра...
NEXT: Не може да се установи сесия на отдалечен работен плот - Windows Server...