ASP.NET + Mono + Apache

Published 9/22/2009 by e0ne in Mono | Web Development

Всё больше и больше можлно услышать о Mono. Как изестно, основное его идеей является реализация действительно кроссплатформенной среды .NET. Таким образом, чеще всего Mono испльзуют в операционной системе, отличной от MS Windows. А если не Windows, то Linux или какой-то из Unix. И всё было бы хорошо, если б не 2 момента (в данном случае я не акцентрирую внимание на степень готовности реализации Mono: аналог WinForms и замена Internet Information Services (IIS).На за мену WinForms приходят GTK, QTи другие библиотеки. А вот с заменой IIS все не тах хорошо: либо Apache с соответствующими модуляли, либо "родной" для Mono веб-сервер XSP2. А так как Apache наиболее популярен, то будем пользоваться им.

Все примеры я буду приводить для Ubuntu linux, но для других nix-подобных ОС все будет делаться таким же способом, за исключением установки пакетов.

Для начала нам все же надо установить Mono и IDE для нее. В качестве IDE  будем использовать MonoDevelop. Устанавливаем всё необходимое:

apt-get install mono-2.0-runtime mono-2.0-gac mono-2.0-service mono-2.0-devel mono-xsp2 mono-xsp2-base 

После чего можно запустить MonoDevelop, созать простое ASP.NET приложение и запустить. В результате получаем что-то похожее на это:

Теперь мы уже можем без проблем заниматься разработкой вплоть до момента, когда нужно запустить приложение на test-сервере, на которов, в качестве web-сервера, должен стоять Apache. Дело за малым - установить Apache и настроить его для работы с Mono.

Для наала, устанавливаем необходимы пакеты:

sudo apt-get install apache2 mono-apache-server2 libapache2-mod-mono

 

Говорим веб-серверу о необходимости загрузки нового модуля:

sudo a2enmod mod_mono

И создаём новый конфиг (/etc/mono-server2/monotest.webapp) для нашего приложения:

  <apps>
      <web-application>
         <name>Mono test</name>
         <vpath>/mono</vpath>
         <path>/var/www/</path>
        <vhost>localhost</vhost>
      </web-application>
</apps>


Последние что нас осталось сделать - это подправить конфигурационный файл Apache'а для нашего сайта (/etc/mono-server2/mono-server2-hosts.conf). Добавляем в него такие строки:

Alias /mono "/var/www"
AddMonoApplications default "/mono:/var/www"
    <Directory /var/www>
       SetHandler mono
          <IfModule mod_dir.c>
             DirectoryIndex Default.aspx
          </IfModule>
    </Directory>

Перезагружаем Apache командой:

sudo /etc/init.d/apache2 restart

И смотрим в браузере что у нас получилось: