Запуск ASP.Net на сервере на базе Linux

Для разработчика с базой Java я заинтересован в изучении разработки программного обеспечения с использованием инструментов/платформы ASP.NET.

Веб-приложения Java (.jsp и сервлеты) могут работать на многих серверных платформах.

Вопрос: сможет ли веб-приложение .NET работать на Linux-сервере? Учитывая сценарий невозможности использования сервера Windows для размещения веб-приложения.

Ответ 1

Это зависит от того, какие именно технологии .NET вы используете. Mono Project предоставляет модуль Apache (mod_mono) для запуска сайтов ASP.NET, и из того, что я собираю, он работает хорошо.

Моно не поддерживает все .NET API, хотя - особенно WPF (и, возможно, WCF тоже, я не могу вспомнить), но он обеспечивает хорошую поддержку для большей части инфраструктуры.

Если вы начинаете с нуля и особенно хотите нацеливаться на серверы, отличные от Windows, то обеспечение работы вашего проекта с Mono будет хорошей целью. Однако, если вам нужны определенные API или языковые функции, которые не поддерживаются Mono, вам потребуется использовать сервер Windows для развертывания. Это дизайн-время/архитектурный выбор, который должен составлять фронт.

Ответ 2

Итак, я знаю, что это старый вопрос, но я думаю, что он может выдержать обновленный ответ.

Корпорация Microsoft официально выпустила asp.net vnext и с открытым исходным кодом и возможностью развертывания как для Linux, так и для Mac. Его все еще довольно нова, но он полагается на последние сборки моно и, следовательно, в настоящее время вам нужно скомпилировать mono-framework, но со временем я подозреваю, что будет легче получить доступ, поскольку различные дистрибутивы Linux выпускают обновленные версии моно. Это способ настройки руководства

Эта информация может быть несколько изменчивой, и обновления могут быть изменены.

Обновление ASP.NET CORE 11/10/2017

Ответ 4

Я могу говорить по опыту. Даже если ваш веб-сайт ASP.net использует только библиотеки .NET, поддерживаемые Mono, вам вряд ли удастся запустить его, если это что-то вне Hello World.

Вам не придется переписывать много кода, но вы будете тратить часы/дни/недели на небольшие проблемы с настройкой mod_mono/xsp/apache и разрешениями на файлы и обработкой ошибок и всеми мелочами, которые попадают в большой Веб-сайт. (Будьте готовы потратить много времени на задание вопросов на serverfault:))

Проблема заключается в том, что многие люди не используют Mono для веб-сайтов ASP.net, и поэтому не так много людей сообщают об ошибках, поэтому многие вещи, которые являются незначительными ошибками, долгое время не фиксируются.

Ответ 6

Поскольку технологии развиваются, и этот вопрос занимает первое место в google, мы должны включить в него mono новое ядро ​​asp.net, который является полным переписанием asp.net для запуска в Linux и Windows и для разработки для Linux, Windows и Mac:

Вы можете разрабатывать и запускать межплатформенную платформу приложений ASP.NET Core Windows, Mac и Linux. Ядро ASP.NET является открытым исходным кодом в GitHub.

Ответ 8

Для ASP.NET в Linux зайдите Mono.

Тем не менее тысячи сайтов работают на Windows Server без каких-либо проблем. Плохо сконфигурированный сервер с любой ОС будет уязвим; Linux не спасет вас от плохого администратора.

Итак, я думаю, что моя "лучшая практика" для обозначения приложения ASP.NET - это использование Windows Server 2008 (вероятно, веб-издание). И нанять хорошего администратора.

Ответ 9

Вы можете использовать Mono для запуска приложений ASP.NET на Apache/Linux, однако он имеет ограниченное подмножество того, что вы можете делать под Windows. Что касается "они" говорят, что Windows более уязвима для атаки - это не так. За последние пару лет у IIS было меньше проблем с безопасностью, чем в Apache, но в любом случае все это касается администрирования ящиков - обе ОС можно легко защитить. В наши дни точки атаки не являются программным обеспечением ОС или веб-сервера, а самими приложениями.

Ответ 10

dotnet является официальным домом .NET на GitHub. Это отличная отправная точка для поиска многих проектов .NET OSS от Microsoft и сообщества, включая многие из них, которые являются частью .NET Foundation.

Это может стать отличным началом для поддержки Linux.

Ответ 11

Теперь дни .Net запускаются на нескольких платформах, таких как linux, Mac os и т.д. но mono не полностью независима от платформы, потому что для развертывания .NET в другой ОС требуется стороннее программное обеспечение. Это не похоже на независимую платформу Java.

Mono работает на разных платформах, поскольку JIT существует в разных os.

Моно не является полным успехом в лунном свете (серебристый свет в .NET). Не только Исследование продолжается.

Mono использует сервер XSP2 или apache. некоторые из крупных компаний используют этот проект. Некоторые из роботизированных проектов также работают на моно.

Подробнее http://www.mono-project.com/Main_Page.

Ответ 13

Проект Mono - ваш лучший вариант. Однако у него много ошибок (например, неполная поддержка API в некоторых областях), и она легально серая (такие люди, как Ричард Столлман, высмеивали использование Mono из-за возможности Microsoft спуститься на Mono, используя свои патентные права, но это другая история).

В любом случае, Apache поддерживает .NET/Mono через модуль, но в последний раз, когда я проверял версию, поставляемую с Debian, она давала поддержку только для языка Perl; Я не могу сказать, изменилось ли это с тех пор, возможно, кто-то другой может исправить меня там.