Автор Тема: Asp.net+MVC+Apache2+mod_mono  (Прочитано 2249 раз)

Оффлайн lexgp

  • Участник
  • *
  • Сообщений: 5
Asp.net+MVC+Apache2+mod_mono
« : 30.12.2016 15:21:18 »
В общем тоже требуется перенести некоторую функциональность с Win сервера, к вам на Alt.
Был бы весьма признателен за подсказку, как всё это дело настроить.

Пробую развернуть под p7 Кентаврус

Поставил, либо уже стояло:
- apache2-mod_mono 1.9
- mono 2.10.11
- apache2 2.2.24
- xsp 2.10.2
- xsp-samples 2.10.2
________________________________________________________

// Подключаю: /usr/sbin/a2enmod mono
Результат: module mono is already installed (странно, ну и ладно)

// На всякий случай
service httpd2 condreload
service httpd2 start
________________________________________________________

// Редактирую конфигурацию
# pluma /etc/httpd2/conf/httpd2.conf
// В конец файла добавляю примеры для моно:
LoadModule mono_module /etc/http2/modules/mod_mono.so #тут не суть, он и без меня загружается через другие конфиги. добавлял/убирал
Alias "/var/www/xsp"
MonoApplications "/monodemo:/var/www/xsp"
<Location /monodemo>
    SetHandler mono
    Order allow,deny
    Allow from all
</Location>

// Сохраняю
// И ещё разок
service httpd2 condreload
service httpd2 start
________________________________________________________

// Смотрю логи: /etc/httpd2/logs/error_log
Listening on: /var/run/mod_mono_server_global
Root directory: /var/www/xsp
// Вроде бы хороший знак
________________________________________________________

// Вбиваю в браузер адрес http://127.0.0.1/monodemo
Падает с 500 ошибкой.
// Смотрю логи
mod_mono and xsp have different versions. Expected '9', got 8
  at Mono.WebServer.ModMonoRequest.GetInitialData () [0x00000]
  at Mono.WebServer.ModMonoRequest..ctor (System.Net.Sockets.NetworkStream ns) [0x00000]
  at Mono.WebServer.RequestReader..ctor (System.Net.Sockets.NetworkStream ns) [0x00000]
  at Mono.WebServer.ModMonoWorker.InnerRun (System.Object state) [0x00000]
  at Mono.WebServer.ModMonoWorker.Run (System.Object state) [0x00000]

В нете правда пишут что совпадать должны mod_mono и mono но не суть, проблема моя думаю понятна, варианта по идее два:
1. Либо у меня пакеты не той системы:
- apache2-mod_mono 1.9
- mono 2.10.11
- xsp 2.10.2
И я не понимаю как поставить их одинаковых версий.

2. Либо я что-то перепутал.

Есть идеи как эту ошибку исправить?

Параллельно копаю вариант под p8 workstation c mono4. Тоже пока не получается, но об этом позже напишу, ещё поковырять надобно.
Вообще смотрю здесь на форуме есть аналогичные темы, и явно инструкции по установке и настройке asp.net+apache не хватает. Если справлюсь с данной задачей, готов инструкцию такую сделать.
И да, в линуксах совсем не специалист, во многих моментах могу тупить.

Оффлайн yaleks

  • Мастер
  • ***
  • Сообщений: 6 242
Re: Asp.net+MVC+Apache2+mod_mono
« Ответ #1 : 30.12.2016 16:22:15 »
- xsp 2.10.2
напишите в https://bugzilla.altlinux.org/ чтобы обновили версию.

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 164
    • Домашняя страница
Re: Asp.net+MVC+Apache2+mod_mono
« Ответ #2 : 30.12.2016 17:31:24 »
В неподдерживаемый p7 никто делать не будет. В p8 есть mono4 и mono4-xsp 4.4.
Андрей Черепанов (cas@)

Оффлайн berkut_174

  • Мастер
  • ***
  • Сообщений: 7 152
Re: Asp.net+MVC+Apache2+mod_mono
« Ответ #3 : 30.12.2016 19:03:46 »
Цитировать
Параллельно копаю вариант под p8 workstation c mono4.
Видимо, и на p8 проблема...

Я думал, что ASP.NET - это технология, гвоздями прибитая к Windows...
Интересно, кто пользуется на Linux - напишите как оно ?
Сноси Винду, переходи на Линукс ! :)

Оффлайн lexgp

  • Участник
  • *
  • Сообщений: 5
Re: Asp.net+MVC+Apache2+mod_mono
« Ответ #4 : 10.01.2017 12:52:37 »
Вот я и вернулся. Если честно в праздничные выходные изображал тюленя, поэтому пропал.

Итак, немного сдвинулся.
Поставил p8 workstation.

Накатил пакетов: mono4-full, mono4-devel-full, mono4-xsp, apache2, apache2-mod_mono

В консоле дёрнул # /usr/sbin/a2enmod
Модуля mono нету.

Решил прописать его руками в /etc/httpd2/conf/httpd2.conf:
LoadModule mono_module modules/mod_mono.so

После рестарта (# /sbin/service httpd2 restart) в лог (/var/log/httpd2/error_log) валится ошибка:
Cannot open assembly '/usr/lib/mono/4.5/mod-mono-server2.exe': No such file or directory.

Раз так, заполняю секцию httpd2.conf с настройкой на каталог и работой через mod-mono-server4:
LoadModule mono_module modules/mod_mono.so
Alias /jane "/var/www/mono"
AddMonoApplications jane "/jane:/var/www/mono"
#AddHandler mono .aspx .ascx .asax .ashx .config .cs .asmx
MonoServerPath jane "/usr/bin/mod-mono-server4"
<Location /jane>
MonoSetServerAlias jane
SetHandler mono
Order allow,deny
Allow from all
</Location>
Снова рестартую: # /sbin/service httpd2 restart

В директории "/var/www/mono" (права 777) создаю файл sample.aspx следующего содержания:
<%@ 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>

Обращаюсь к нему: http://127.0.0.1/jane/sample.aspx
Вроде бы даже работает. Но при первом обращении в логи падает ошибка с длиннющим стектрейсом: System.UnauthorizedAccessException: Access to the path "/var/www/.mono" is denied.

А гори оно всё синим пламенем думаю:
# chmod 777 /var/www
# /sbin/service httpd2 restart

Ошибка пропала. Надо будет разобраться как права тут правильно раздавать.

Так, теперь попробую mvc приложение запилить и запустить его вместо тестовой страницы.

Оффлайн lexgp

  • Участник
  • *
  • Сообщений: 5
Re: Asp.net+MVC+Apache2+mod_mono
« Ответ #5 : 10.01.2017 14:23:02 »
Тю.
Создал в monodevelop простейший mvc проект. Перекинул в виртуалку, в которой у меня apache2 развёрнут. Скопировал содержимое в рабочую папку из прошлого поста, обновил страницу - всё заработало:

http://127.0.0.1/jane/

Welcome to ASP.NET MVC on Mono!

Естественно нужны пакеты mono4-mvc и mono4-mvc-devel

Единственное, что кажется странным - monodevelop вынужден запускать на другой машине, её не получится поставить вместе с четвёртым моно.
Ну да ладно.

Конечно чую словлю ещё немало траблов при наполнении приложения функционалом, но принципиально задача решена - mvc asp.net на altlinux работает.