Развертывание веб-сайта с помощью IIS
186ASP.NET --- Веб-сайты ASP.NET --- Развертывание веб-сайта с помощью IIS
После того как IIS 8 запущен, и вы научились им управлять, можно приступать к развертыванию веб-сайтов. В простейшем случае развертывание веб-приложений ASP.NET сводится к копированию структуры каталогов приложения на целевой компьютер и настройке среды. Для простых приложений это почти всегда так. Однако если приложение использует базы данных или обращается к другим ресурсам, придется выполнить ряд дополнительных шагов. Ниже перечислены обычные факторы, требующие дополнительных действий по конфигурированию:
Скопируйте все необходимые файлы приложения на целевой компьютер. Сверх этого делать ничего не понадобится. Однако при использовании глобальных сборок, доступ к которым осуществляется через GAC, необходимо удостовериться в их существовании. Если они не существуют, их необходимо установить с помощью утилиты командной строки gacutil.exe, входящей в состав .NET Framework.
Создайте и сконфигурируйте базу данных для приложения. Важно не только создать базу данных и ее таблицы, но и настроить учетные записи для входа на сервер базы данных и пользователей базы данных. Не забывайте, что в случае применения встроенной аутентификации для подключения к базе данных SQL Server учетную запись, под которой выполняется ASP.NET (учетная запись пула приложений или учетная запись aspnet_wp.exe), потребуется сконфигурировать в качестве пользователя базы данных приложения. Подход веб-развертывания может упростить развертывание базы данных. Если же применяется другой подход, конфигурирование и заполнение баз данных придется выполнить вручную.
Сконфигурируйте IIS так, как того требует приложение. Создайте необходимые пулы приложений, сделайте каталог приложения доступным для совместного использования в качестве виртуального каталога и должным образом сконфигурируйте виртуальный каталог.
Установите права учетной записи Windows для пользователя рабочего процесса. Пользователь, от имени которого запускается рабочий процесс (w3wp.exe), нуждается в доступе для чтения к каталогам приложения. Если приложение обращается к другим ресурсам, например, к системному реестру или к журналу событий, для учетной записи рабочего процесса понадобится сконфигурировать разрешение на доступ к этим ресурсам.
Если требуется обрабатывать любые URL-адреса с расширениями имен файлов, которые отличаются от расширений, зарегистрированных при установке ASP.NET по умолчанию, добавьте отображения файлов IIS.
Сконфигурируйте ASP.NET (и настройки IIS 8.0, специфичные для приложения) в файле web.config для производственных сред. Другими словами, добавьте (или модифицируйте) любые нужные строки соединения и параметры настройки приложения, а также параметры безопасности и авторизации, параметры настройки состояния сеанса и параметры настройки глобализации.
В некоторых случаях необходимо также модифицировать файл machine.config. Например, если работа выполняется в среде веб-хостинга, а в целях балансировки нагрузки приложение работает на множестве веб-серверов, необходимо синхронизировать любые ключи шифрования, используемые для шифрования мандатов аутентификации с помощью форм или состояния представления на всех этих компьютерах. Эти ключи хранятся в файле machine.config и должны быть одинаковыми на каждом компьютере веб-фермы с тем, чтобы один компьютер мог расшифровать информацию, зашифрованную другим компьютером, ранее обрабатывавшим запрос.
Основная задача связана с развертыванием содержимого приложения на сервере IIS 8. В этой статье предполагается наличие у вас прав администратора и вход в систему сервера от имени учетной записи администратора. Если используется разделяемый сервер или поставщик услуг хостинга, то поставщик пришлет сведения об учетной записи, которая должна применяться при развертывании веб-сайта. Для простоты мы будем считать, что работа выполняется с учетной записью администратора, но при управлении собственным сервером следует подумать об использовании менее привилегированной учетной записи.
Развертывание посредством копирования файлов
Простейший способ развертывания веб-сайта предусматривает копирование файлов с рабочей станции на сервер. Несмотря на простоту, этот подход требует наличия непосредственного доступа к серверу. Именно по этой причине некоторые IT-подразделения и компании, предоставляющие услуги хостинга, не поддерживают эту опцию. Но она может быть простейшей при управлении собственным сервером или наличии особых договоренностей с компанией хостинга.
Подготовка IIS
Прежде чем развертывать веб-сайт, нужно подготовить IIS. Главное решение, которое нужно принять, касается места размещения содержимого и его влияния на конечный URL-адрес. Начнем с очевидного подхода - предположим, что необходимо, чтобы URL-адрес для содержимого данного примера был следующим:
http://<имя__сервера>:80/WebsiteDeployment/FileCopy
IIS нужно подготовить так, чтобы было куда скопировать наш файл. В IIS Manager выберите элемент Default Web Site. Как следует из его имени, это сайт по умолчанию на сервере. Щелкните на нем правой кнопкой мыши и в контекстном меню выберите пункт Explore (Проводник), чтобы отрыть окно проводника Windows для заданного по умолчанию каталога IIS, которым является inetpub\wwwroot на системном томе (как правило, C:\).
Создайте каталог WebsiteDeployment, а в нем - каталог FileCopy (чтобы обеспечить существование пути inetpub\wwwroot\WebsiteDeployment\FileCopy). Закройте окно проводника, чтобы вернуться в IIS Manager. Щелкните правой кнопкой на записи Default Web Site и в контекстном меню выберите пункт Refresh (Обновить), чтобы увидеть новый каталог.
Веб-сайт
Для демонстрации этой методики развертывания мы создали очень простой веб-сайт. Исходный код содержит единственную форму ASP.NET с одной меткой:
<form id="form1" runat="server">
<div class="style1">
<h1><strong>Простой веб-сайт</strong></h1>
</div>
<br />
Версия .NET Framework: <asp:Label ID="Label2" runat="server" Text="Label1" />
</form>
В коде этой формы определен текст метки, отображающей версию .NET Framework, которая используется для обслуживания данного сайта:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Label2.Text = System.Environment.Version.Major.ToString();
}
}
Развертывание веб-сайта
При использовании этой методики развертывания нужно просто скопировать файлы в созданный каталог. Переместите файлы веб-сайта на сервер любым подходящим способом - посредством общего сетевого диска, съемного диска USB и т.п. - и скопируйте файлы Default.aspx и Default.aspx.cs в каталог FileCopy, созданный на сервере.
Когда файлы будут скопированы, вернитесь в окно IIS Manager на сервере, щелкните правой кнопкой на папке FileCopy в древовидном представлении и в контекстном меню выберите пункт Refresh. В нижней части экрана щелкните на кнопке Content View (Просмотр содержимого). В центральной части окна должны отобразиться два файла веб-сайта, как показано на рисунке ниже:

В этом состоит наиболее важная часть этой технологии развертывания - вначале должна быть создана структура каталогов, которая представляет необходимый URL-адрес, а затем в готовые каталоги копируются файлы веб-сайта. Посмотрим, как это выглядит на практике. Для этого выберите FileCopy в IIS Manager и щелкните на ссылке Browse (Обзор) в правой части окна. Откроется веб-браузер с загруженным URL-адресом созданной папки. Окно браузера должно выглядеть подобно показанному на рисунке ниже:

Взглянув на URL-адрес адрес, можно удостовериться в том, что был получен желаемый результат. Браузер загрузил веб-сайт из следующего адреса:
http://localhost/WebsiteDeployment/FileCopy/
Вспомните, что localhost - это специальное имя, обозначающее текущий компьютер, а URL-адрес, в котором не указан порт, будет использовать порт 80. (В моем случае я переместил сайт на порт 8080 по причинам, указанным в предыдущей статье). Можете проверить это, направив браузер по следующему URL-адресу:
http://professorweb/WebsiteDeployment/FileCopy/
Результат будет полностью аналогичен предыдущему (professorweb в данном случае имя сервера).
Конфигурирование развертывания
Возможно, вы обратили внимание, что версией .NET Framework, о которой сообщается на рисунке выше является 4. Чтобы изменить целевую версию .NET Framework понадобится изменить параметры настойки используемого по умолчанию пула приложений. Пока не задумывайтесь о том, что собой представляют пулы приложений - они будут подробно рассматриваться позже.
В окне IIS Manager разверните элемент сервера и щелкните на элементе Application Pools (Пулы приложений). Щелкните на ссылке Set Application Pool Defaults (Определить значения по умолчанию для пула приложений) в правой части окна. В открывшемся диалоговом окне Application Pool Defaults (Значения по умолчанию для пула приложений) измените значение настройки .NET Framework Version (Версия среды .NET Framework) на необходимую:

Вернитесь в браузер и перезагрузите страницу.
IIS понадобится также указать, что развернутый сайт является приложением. Это не обязательно, но при развертывании приложений ASP.NET почти всегда будет желательным - активизируется состояние сеанса и другие функциональные средства ASP.NET. Щелкните правой кнопкой мыши на папке FileCopy в области Connections (Подключения) и в контекстном меню выберите пункт Convert to Application (Преобразовать в приложение), как показано на рисунке ниже:

Откроется диалоговое окно Add Application (Добавление приложения). Используемый пул приложений можно изменить, щелкнув на кнопке Select (Выбрать). Настроить учетную запись пользователя, которую IIS будет применять для доступа к содержимому сайта, можно с помощью кнопок Connect as... (Подкл. как...) и Test Settings... (Тест настроек...). Пока что просто щелкните на кнопке ОК. Возможно, придется выбрать пункт Refresh (Обновить) в меню View (Вид) (или, как это часто имеет место, закрыть и снова открыть IIS Manager), но теперь значок записи FileCopy в древовидном представлении должен измениться.
Развертывание с помощью Visual Studio
Visual Studio предлагает встроенные возможности для упрощения развертывания веб-приложений, что облегчает задачу проектирования сложных веб-сайтов. Visual Studio включает в себя функции, которые интегрируются с IIS и позволяют создавать виртуальные каталоги, не выходя из комфортной среды разработки. Visual Studio предлагает несколько возможностей для интеграции с IIS:
Вы можете создавать виртуальный каталог при создании нового проекта.
Вы можете использовать функцию Copy Web Site (Копировать веб-сайт) для передачи существующего веб-сайта в виртуальный каталог.
Вы можете использовать функцию Publish Web Site чтобы скомпилировать свой сайт и передать его по новому адресу.
Создание виртуального каталога для нового веб-сайта
При создании веб-сайта в Visual Studio, вы можете одновременно создать виртуальный каталог для этого веб-сайта. Если вы сделаете это, Visual Studio не будет использовать встроенный тестовый сервер IIS Express. Вместо этого, все ваши запросы будут обрабатываться полной версией IIS.
Для создания виртуального каталога IIS сначала необходимо запустить Visual Studio с правами администратора. Затем выберите пункт меню File --> New --> Web Site и в открывшемся диалоговом окне "New Web Site" выберите HTTP для расположения сайта (вместо файловой системы). Вы можете вставить строку URL. Например, если вы укажете http://localhost/MyWebSite, Visual Studio создаст каталог MyWebSite в виртуальном каталоге C:\Inetpub\Wwwroot используемым по умолчанию:

Такой подход не является лучшим т.к. вы не сможете настроить некоторые параметры, такие как страницы по умолчанию, пользовательские ошибки и т.п. Вместо создания нового виртуального каталога с помощью Visual Studio лучше будет выбрать существующий каталог IIS, который в свою очередь можно сконфигурировать с помощью IIS Manager. Для этого щелкните по кнопке Browse (Обзор) и выберите нужный виртуальный каталог:

В этом окне вы можете добавить или удалить виртуальный каталог используя кнопки вверху справа.
Копирование веб-сайта
Visual Studio также включает в себя быстрый и простой способ для передачи файлов веб-приложения. Вам просто нужно выбрать в меню WebSite --> Copy Web Site. Откроется новое диалоговое окно Visual Studio, которое покажется знакомым любому, кто имел дело с различными IDE-программами для работы с сайтами, такими как Dreamweaver или Expression Web:

Это окно состоит из двух списков файлов. Слева находятся файлы в текущем проекте (на локальном жестком диске). Справа находятся файлы на целевом месте (удаленный веб-сервер). При первом открытии этого окна вы ничего не увидите справа, потому что вы не указали цель. Вы должны нажать кнопку Connect вверху, чтобы предоставить эту информацию. При этом Visual Studio откроет знакомое диалоговое окно, которое выглядит почти так же, как то, что вы видели при создании виртуального каталога для нового проекта. В этом окне вы можете выбрать одно из мест, куда нужно копировать веб-сайт:
- File System
Это самый простой выбор - вы копируете файлы сайта внутри текущей файловой системы.
- Local IIS
Позволяет выбирать виртуальные каталоги локального сервера IIS. Это удобно если сайт нужно будет разместить в другом каталоге.
- FTP Site
Обеспечивает доступ к удаленному сайту через FTP. Многие хостинг-провайдеры предлагают доступ к сайтам через FTP, так что благодаря этой настройке вы можете сразу разворачивать свой сайт на удаленном веб-сервере, не прибегая к услугам различных FTP-программ наподобие TotalCommander:
- Remote Web Server
Эта опция предлагает подключение к сайту по URL-адресу с использованием расширения FrontPage Extensions.
Как только вы выберите соответствующий пункт назначения, нажмите кнопку Open. Visual Studio попытается подключиться к удаленному сайт и получить список файлов.