Как разместить сайт на облачном сервере с 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:
- Создайте папку сайта, например
C:\inetpub\example.ru, и скопируйте в неё файлы. - В IIS Manager в контекстном меню раздела Sites выберите Add Website. Укажите имя сайта, папку (Physical path) и имя узла (Host name) —
example.ru. - Второе имя,
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. Порядок установки:
- Установите компонент CGI:
Install-WindowsFeature Web-CGI. - Скачайте с сайта windows.php.net архив PHP в варианте Non Thread Safe (NTS) x64 и распакуйте его в папку
C:\PHP. Установите распространяемый пакет Microsoft Visual C++ 2015–2022 (x64): требуемая версия указана на странице загрузки PHP. - Переименуйте
C:\PHP\php.ini-productionвphp.iniи включите нужные расширения — строкиextension=mysqli,extension=pdo_mysql,extension=mbstring,extension=openssl. - В IIS Manager выберите уровень сервера, откройте Handler Mappings и нажмите Add Module Mapping: Request path —
*.php, Module — FastCgiModule, Executable —C:\PHP\php-cgi.exe, Name — PHP. На предложение создать приложение FastCGI ответьте Yes. - В разделе Default Document добавьте
index.php.
Для проверки создайте в папке сайта файл info.php с текстом <?php phpinfo(); и откройте его в браузере. После проверки удалите файл: он раскрывает настройки сервера.
Бесплатный сертификат Let’s Encrypt
Сертификат для IIS удобно получать программой win-acme: она привязывает сертификат к сайту и сама продлевает его. К этому моменту домен должен указывать на сервер, а порт 80 — быть открыт: по нему Let’s Encrypt проверяет право на домен.
- Скачайте архив win-acme для x64 с сайта win-acme.com и распакуйте его в папку
C:\Program Files\win-acme. Не переносите папку после настройки: из неё запускается задача продления. - Запустите
wacs.exeот имени администратора и выберите пункт N — создание сертификата с настройками по умолчанию. - Выберите сайт 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.
Не нашли ответ? Напишите в поддержку — подскажем.


