Связка Mono и Apache. Запуск ASP.NET-приложений на платформе Linux

В данной статье рассмотрим подготовку Web-сервера Apache для запуска Web-приложений на основе ASP.NET на платформе Linux, использование среды разработки MonoDevelop IDE для создания ASP.NET-приложений и общие вопросы миграции ASP.NET-приложений.

ASP.NET — новая технология, созданная компанией Microsoft в рамках идеологии .NET для создания высоко функциональных Web-приложений. Одной из основных задач технологии ASP.NET является создание динамических Web-страниц. Текущая реализация Mono полностью поддерживает ASP.NET версии 1.1 и большинство возможностей ASP.NET версии 2.0.

Основным сервером для запуска ASP.NET-приложений является Microsoft Internet Information Server (IIS), предназначенный исключительно для использования на ОС семейства MS Windows. Однако на платформе Linux существуют не менее мощные Web-серверы, например, возможно, самый известный Web-сервер — Apache. Web-сервер Apache поддерживает расширение функциональности с помощью плагинов. Для совместного использования Apache и Mono был разработан плагин mod_mono, который позволяет использовать ASP.NET на Linux-системах.

Другим вариантом является сервер XSP. XSP — это облегченный Web-сервер, предназначенный для разработки и тестирования Web-приложений. Сервер XSP не рекомендуется использовать для развертывания коммерческих проектов в силу ограниченной функциональности, однако он незаменим в ходе разработки. Web-сервер XSP, написанный на C#, входит в комплект инструментов Mono. С его помощью можно просматривать ASP.NET-страницы непосредственно из среды разработки MonoDevelop в режиме отладки. Если этот Web-cервер не установлен, то его можно установить следующей командой:

sudo apt-get install mono-xsp

Web-сервер Apache можно использовать для развертывания ASP.NET-приложений и без подключения плагина mod_mono, заменив этот плагин на комбинацию плагинов mod_proxy и mod_proxy_http и Web-сервер XSP. Однако такой способ не рекомендуется разработчиками Mono по ряду причин, среди которых снижение быстродействия и тот факт, что Web-сервер XSP не поддерживает все возможности стандарта HTTP 1.1.

Настройка Web-сервера Apache для работы с ASP.NET-приложениями

Существуют два способа настройки сервера Apache для работы с ASP.NET-приложениями. Самым простым вариантом является автоматическая настройка, для которой достаточно установить на Web-сервер плагин mod_mono. Перед установкой mod_mono следует проверить наличие плагина для работы с PHP и в случае, если он установлен — удалить, так как данные плагины несовместимы между собой.

Установка и настройка mod_mono может немного отличаться для различных Linux-дистрибутивов Linux. В данной статье будет использоваться дистрибутив Ubuntu Server 16.04 с уже установленным Web-сервером Apache.

Сначала потребуется установить пакеты libapache2-mod-mono и mono-apache-server или mono-apache-server4:

sudo apt install libapache2-mod-mono mono-apache-server

Пакет libapache2-mod-mono содержит плагин mod_mono для Apache, который распознает файлы, относящиеся к приложениям ASP.NET, и передает их mono-серверу, находящемуся в пакете mono-apache-server. После этого необходимо установить пакет mono-devel, содержащий некоторые инструменты, которые могут потребоваться для работы приложений:

sudo apt install mono-devel

Далее подключаем модуль и перезапустим Web-сервер Apache:

sudo a2enmod mod_mono_auto
sudo /etc/init.d/apache2 restart

В листинге приведен исходный код демонстрационной ASP.NET-страницы для проверки правильности установки mod_mono

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<HTML>
 <HEAD>
 <TITLE>Первое ASP.NET приложение в среде Mono</TITLE>
 </HEAD>
 <BODY>
 <FORM id="form" runat="server">
 <asp:label id="label" runat="server">Привет из ASP.NET (Mono)</asp:label>
 </FORM>
 </BODY>
</HTML>

Код страницы необходимо сохранить в файле sample.aspx и скопировать его в папку /var/www/. Для просмотра получившегося результата в адресной строке Web-браузера следует ввести следующий URL: http://localhost/sample.aspx. Если установка пакета mod_mono прошла успешно, то будет показана HTML-страница c приветствием.

Второй вариант установки требует «ручной» конфигурации пакета mod_mono. Если на целевой системе уже был применен первый вариант, то следует отключить автоматическое конфигурирование и перезапустить Web-сервер Apache, как показано ниже:

sudo a2dismod mod_mono_auto
sudo /etc/init.d/apache2 restart

Как и в первом случае, сначала потребуется установить пакеты libapache2-mod-mono и mono-apache-server. Затем необходимо будет снова активировать поддержку mod_mono (но без поддержки автоматической конфигурации):

sudo a2enmod mod_mono

После этого в конфигурационном файле /etc/apache2/mods-available/mod_mono.conf необходимо будет определить версию ASP.NET, которая будет поддерживаться сервером. Для поддержки ASP.NET версии 2.0 в данном файле должна быть строка:

Include /etc/mono-server2/mono-server2-hosts.conf

Для поддержки версии 1.1 потребуется другая запись:

Include /etc/mono-server/mono-server-hosts.conf

Далее необходимо сконфигурировать ASP.NET приложение, создав конфигурационный файл Web-сервера в каталоге /etc/apache2/sites-available/, и активировать его командой a2ensite, указав в качестве параметра имя конфигурационного файла. После этого останется только перезапустить сервер, как было показано выше.

В заключение

В данной статье рассматривались настройка Linux-платформы для запуска приложений на основе технологии ASP.NET. Как было показано, технология Mono позволяет легко перенести ASP.NET-приложения с платформы MS Windows на платформу Linux и отказаться от закрытого коммерческого ПО в пользу свободных продуктов.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Связка Mono и Apache. Запуск ASP.NET-приложений на платформе Linux
5 (100%) 1 vote

1
Оставить комментарий

avatar
1 Цепочка комментария
0 Ответы по цепочке
0 Последователи
 
Популярнейший комментарий
Цепочка актуального комментария
1 Авторы комментариев
Umid Vandamov Авторы недавних комментариев
  Подписаться  
новее старее большинство голосов
Уведомление о
Umid Vandamov
Гость
Umid Vandamov

Спасибо за статью!

Меню

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Рейтинг@Mail.ru