Exécution d'ASP.Net sur un serveur Linux

89

Pour un développeur ayant une formation en Java, je suis intéressé par l'exploration du développement de logiciels en utilisant également les outils / la plate-forme ASP.NET.

Les applications Web Java (.jsp et servlets) peuvent s'exécuter sur de nombreuses plates-formes de serveur.

Question : Une application Web .NET pourra-t-elle s'exécuter sur un serveur Linux? Considérant le scénario de ne pas pouvoir utiliser un serveur Windows pour héberger une application Web.

Anand
la source

Réponses:

69

Cela dépend des technologies .NET spécifiques que vous utilisez. Le projet Mono fournit un module Apache (mod_mono) pour exécuter des sites ASP.NET, et d'après ce que je comprends, cela fonctionne bien.

Cependant, Mono ne prend pas en charge toutes les API .NET - notamment WPF (et peut-être WCF aussi, je ne me souviens pas) - mais il fournit un bon support pour une grande partie du framework.

Si vous partez de zéro et que vous souhaitez en particulier cibler des serveurs non Windows, alors vous assurer que votre projet fonctionne avec Mono serait un bon objectif à atteindre. Cependant, si vous avez besoin d'API ou de fonctionnalités linguistiques particulières qui ne sont pas prises en charge par Mono, vous devrez utiliser un serveur Windows pour le déploiement. C'est un choix d'architecture / de conception qui devrait compenser.

alastairs
la source
3
Pour info, le responsable du projet mono a également une réponse à cette question.
Joel Coehoorn
8
Si vous n'êtes pas familier avec le projet Mono et ses mainteneurs, cette réponse est celle à laquelle Joel fait référence.
alastairs
J'ai une page asp.net que je souhaite intégrer au site principal de php dans un serveur Linux. C'est possible? En effet, est-il possible d'avoir php et asp.net sur un même serveur Linux?
Hosein Aqajani
86

Je sais donc que c'est une question plus ancienne, mais je pense qu'elle pourrait supporter une réponse mise à jour.

Microsoft a officiellement publié asp.net vnext et son open source et déployable à la fois sur Linux et Mac. Tout est encore assez nouveau mais repose sur les dernières versions de mono et a donc actuellement besoin de vous pour le compiler, mono-frameworkmais avec le temps, je soupçonne qu'il sera plus facile d'y accéder car diverses distributions Linux publient des versions mises à jour de mono. Ceci est un guide de configuration

Ces informations peuvent être quelque peu volatiles et avec les mises à jour, elles doivent changer.

Mettre à jour ASP.NET CORE 11/10/2017

Terrance
la source
À partir d'aujourd'hui, quels serveurs Web Linux sont pris en charge par ASP.NET Core?
MrCalvin
12

Je peux parler d'expérience. Même si votre site Web ASP.net n'utilise que des bibliothèques .NET prises en charge par Mono, vous aurez du mal à le faire fonctionner si cela dépasse Hello World.

Vous n'aurez pas à réécrire beaucoup de code, mais vous passerez des heures / jours / semaines à gérer de petits problèmes avec la configuration de mod_mono / xsp / apache et les autorisations de fichiers et la gestion des erreurs et toutes les petites choses qui entrent dans un grand site Web. (Soyez prêt à passer beaucoup de temps à poser des questions sur serverfault :))

Le problème est que beaucoup de gens n'utilisent pas Mono pour les sites Web ASP.net et qu'il n'y a donc pas autant de gens qui signalent des bogues, donc beaucoup de choses qui sont des bogues mineurs ne sont pas corrigées pendant longtemps.

thelsdj
la source
J'avoue que j'avais les mêmes pensées et que j'y suis moi-même confronté sur un vrai projet.
Eslam Hamouda
10

Vous pouvez maintenant publier l'application ASP.NET 5 sur Docker sous Linux avec Visual Studio. Voir le post ci-dessous de Scott Haselman

http://www.hanselman.com/blog/PublishingAnASPNET5AppToDockerOnLinuxWithVisualStudio.aspx

Tepu
la source
N'existe-t-il pas de serveur Web de production qui fonctionnera avec ASP.NET 5 à l'exception de Kestrel qui n'est qu'un serveur de développement? En quoi est-ce une option valide sans moyen d'héberger un site Web ASP.NET sur Linux?
Chris Hawkes
1
et les conteneurs Docker construits pour Windows ne fonctionnent que sur le serveur Windows 16, donc ce n'est pas pertinent pour la question
jocelyn
10

Étant donné que les technologies évoluent et que cette question occupe la première place dans Google, nous devons inclure au-delà du mono le nouveau noyau asp.net, qui est une réécriture complète de asp.net pour fonctionner pour la production sous Linux et Windows et pour le développement pour Linux , Windows et Mac :

Vous pouvez développer et exécuter vos applications ASP.NET Core multiplateformes sur Windows, Mac et Linux. ASP.NET Core est open source sur GitHub.

mqueirozcorreia
la source
5

Oui nous pouvons. Familiarisez-vous avec Mono Project et lisez cet article pour commencer.

dde
la source
Est-ce que toutes les bibliothèques définies correctement dans les formulaires Web ASP.Net avec Monodans Linux environnement?
Raja
4

Pour ASP.NET sur Linux, consultez Mono .

Cela dit, des milliers de sites fonctionnent sur Windows Server sans aucun problème. Un serveur mal configuré avec n'importe quel système d'exploitation sera vulnérable; Linux ne vous sauvera pas d'un mauvais administrateur.

Donc, je suppose que ma «meilleure pratique» pour épuiser une application ASP.NET serait d'utiliser Windows Server 2008 (probablement l'édition Web). Et engagez un bon administrateur.

Dahlbyk
la source
Qu'en est-il du problème antivirus .. Windows nécessite un logiciel antivirus .. Je pense que cela augmentera le coût de la zone côté serveur..ai-je raison?
Anand
La plupart des éditions «serveur» des produits antivirus sont plus chères que leurs éditions «bureau», souvent plusieurs fois plus, principalement en raison de l'utilisation prévue. Je recommande AVG (www.avg.com), ESET (www.eset.com) ou Computer Associates (www.ca.com).
devstuff
4

Vous pouvez utiliser Mono pour exécuter des applications ASP.NET sur Apache / Linux, mais il a un sous-ensemble limité de ce que vous pouvez faire sous Windows. Quant à "ils" disent que Windows est plus vulnérable aux attaques - ce n'est pas vrai. IIS a eu moins de problèmes de sécurité au cours des deux dernières années qu'Apache, mais dans les deux cas, tout dépend de l'administration des boîtiers - les deux systèmes d'exploitation peuvent être facilement sécurisés. De nos jours, les points d'attaque ne sont pas le système d'exploitation ou le logiciel du serveur Web, mais les applications elles-mêmes.

blowdart
la source
3
tout peut être vulnérable. rien n'est sécurisé à moins qu'il ne soit éteint et déconnecté du réseau
blowdart
@blowdart, en ce moment, jetez un œil sur facebook run sur apache makeuseof.com/tag/facebook-work-nuts-bolts-technology-explained
Anirudha Gupta
3

dotnet est le site officiel de .NET sur GitHub. C'est un excellent point de départ pour trouver de nombreux projets .NET OSS de Microsoft et de la communauté, dont beaucoup font partie de la Fondation .NET.

Cela peut être un bon début pour prendre en charge Linux.

Kurkula
la source
2

Aujourd'hui, .Net est exécuté sur plusieurs plates-formes, comme Linux, Mac OS, etc.

Mono fonctionne sur une plate-forme différente, car JIT est présent dans différents systèmes d'exploitation.

Mono ne réussit pas pleinement au clair de lune (lumière argentée dans .NET) .Non seulement des recherches sont en cours.

Mono utilise le serveur XSP2 ou apache. certaines des grandes entreprises utilisent ce projet, certains des projets robotiques fonctionnent également en mono.

Pour plus de détails, http://www.mono-project.com/Main_Page .

anishMarokey
la source
1

Le projet Mono est votre meilleure option. Cependant, il présente de nombreux pièges (comme un support API incomplet dans certains domaines), et il est juridiquement gris (des gens comme Richard Stallman ont tourné en dérision l'utilisation de Mono en raison de la possibilité que Microsoft tombe sur Mono en utilisant ses droits de brevet, mais c'est une autre histoire).

Quoi qu'il en soit, Apache prend en charge .NET / Mono via un module, mais la dernière fois que j'ai vérifié la version fournie avec Debian, il ne prenait en charge que le langage Perl; Je ne peux pas dire si cela a changé depuis, peut-être que quelqu'un d'autre peut me corriger.

Ben
la source