Перейти к содержимому

Сайт на IIS в Windows Server: установка, PHP и сертификат Let’s Encrypt

Облачные серверы3 мин чтения

Как разместить сайт на облачном сервере с Windows Server: установка веб-сервера IIS, привязка домена, PHP через FastCGI, сайты на ASP.NET и бесплатный сертификат Let’s Encrypt с автоматическим продлением через win-acme.

Содержание

IIS (Internet Information Services) — веб-сервер, входящий в Windows Server. На нём работают сайты на ASP.NET и PHP, а также статические страницы. Ниже описан порядок размещения сайта на облачном сервере с Windows Server 2019 или 2022. Команды выполняйте в PowerShell, запущенном от имени администратора.

Установка IIS

Install-WindowsFeature Web-Server -IncludeManagementTools

После установки откройте в браузере адрес http://203.0.113.10 — должна появиться стартовая страница IIS. Файлы сайта по умолчанию находятся в папке C:\inetpub\wwwroot, а консоль управления IIS Manager открывается командой inetmgr. Если страница не открывается, проверьте, что в брандмауэре открыты порты 80 и 443, — см. раздел «Брандмауэр Windows: открыть порт».

Сайт и домен

Сначала создайте у DNS-провайдера домена A-запись, указывающую на IP-адрес сервера, для самого домена и для www. Затем добавьте сайт в IIS:

  1. Создайте папку сайта, например C:\inetpub\example.ru, и скопируйте в неё файлы.
  2. В IIS Manager в контекстном меню раздела Sites выберите Add Website. Укажите имя сайта, папку (Physical path) и имя узла (Host name) — example.ru.
  3. Второе имя, www.example.ru, добавьте в панели действий сайта: Bindings → Add.

Если сайт выдаёт ошибку 401 или 500 из-за прав доступа, разрешите группе IIS_IUSRS чтение папки сайта, а для папок, куда сайт записывает файлы (загрузки, кэш), — изменение:

icacls "C:\inetpub\example.ru" /grant "IIS_IUSRS:(OI)(CI)RX"
icacls "C:\inetpub\example.ru\uploads" /grant "IIS_IUSRS:(OI)(CI)M"

PHP

Сайты на PHP работают в IIS через модуль FastCGI. Порядок установки:

  1. Установите компонент CGI: Install-WindowsFeature Web-CGI.
  2. Скачайте с сайта windows.php.net архив PHP в варианте Non Thread Safe (NTS) x64 и распакуйте его в папку C:\PHP. Установите распространяемый пакет Microsoft Visual C++ 2015–2022 (x64): требуемая версия указана на странице загрузки PHP.
  3. Переименуйте C:\PHP\php.ini-production в php.ini и включите нужные расширения — строки extension=mysqli, extension=pdo_mysql, extension=mbstring, extension=openssl.
  4. В IIS Manager выберите уровень сервера, откройте Handler Mappings и нажмите Add Module Mapping: Request path — *.php, Module — FastCgiModule, Executable — C:\PHP\php-cgi.exe, Name — PHP. На предложение создать приложение FastCGI ответьте Yes.
  5. В разделе Default Document добавьте index.php.

Для проверки создайте в папке сайта файл info.php с текстом <?php phpinfo(); и откройте его в браузере. После проверки удалите файл: он раскрывает настройки сервера.

Бесплатный сертификат Let’s Encrypt

Сертификат для IIS удобно получать программой win-acme: она привязывает сертификат к сайту и сама продлевает его. К этому моменту домен должен указывать на сервер, а порт 80 — быть открыт: по нему Let’s Encrypt проверяет право на домен.

  1. Скачайте архив win-acme для x64 с сайта win-acme.com и распакуйте его в папку C:\Program Files\win-acme. Не переносите папку после настройки: из неё запускается задача продления.
  2. Запустите wacs.exe от имени администратора и выберите пункт N — создание сертификата с настройками по умолчанию.
  3. Выберите сайт IIS из списка, подтвердите имена домена, укажите адрес электронной почты для уведомлений и примите условия Let’s Encrypt.

win-acme добавит сайту привязку HTTPS на порту 443 и создаст в планировщике заданий ежедневную задачу продления. Переадресацию с HTTP на HTTPS настраивают правилом модуля URL Rewrite, который устанавливается отдельно с сайта Microsoft (iis.net).

Сайты на ASP.NET

Для приложений на ASP.NET Framework установите компонент Install-WindowsFeature Web-Asp-Net45. Для приложений на ASP.NET Core установите с сайта dotnet.microsoft.com пакет ASP.NET Core Hosting Bundle нужной версии и перезапустите IIS командой iisreset.

Журналы и ошибки

Журналы запросов IIS хранятся в папке C:\inetpub\logs\LogFiles, для каждого сайта — в отдельной подпапке. Подробное описание ошибки IIS по умолчанию показывает только при обращении с самого сервера, поэтому для диагностики откройте сайт в браузере на сервере, подключившись к нему по RDP.

Перед изменением настроек сайта сделайте снимок сервера. О защите сервера и открытии портов — в статье Как защитить сервер Windows.

Не нашли ответ? Напишите в поддержку — подскажем.