Executando ASP.Net em um servidor baseado em Linux

89

Para um desenvolvedor com experiência em Java, estou interessado em explorar o desenvolvimento de software usando as ferramentas / plataforma ASP.NET também.

Os aplicativos da web Java (.jsp e servlets) podem ser executados em muitas plataformas de servidor.

Pergunta : Um aplicativo da web .NET será capaz de ser executado em um servidor baseado em Linux? Considerando o cenário de não ser possível usar um servidor Windows para hospedar um aplicativo da web.

Anand
fonte

Respostas:

69

Depende de quais tecnologias .NET específicas você está usando. O Projeto Mono fornece um módulo Apache (mod_mono) para a execução de sites ASP.NET e, pelo que percebi, funciona bem.

Mono não oferece suporte a todas as APIs do .NET - notavelmente WPF (e possivelmente WCF também, não me lembro) - mas fornece um bom suporte para muitas outras coisas da estrutura.

Se você está começando do zero e deseja ter como alvo servidores que não sejam Windows, garantir que seu projeto funcione com o Mono seria uma boa meta. No entanto, se precisar de APIs ou recursos de linguagem específicos que não são suportados pelo Mono, você precisará usar um servidor Windows para implantação. É uma escolha de tempo de design / arquitetura que deve ser feita desde o início.

Alastairs
fonte
3
fyi, o mantenedor do projeto mono tem uma resposta para essa pergunta também.
Joel Coehoorn
8
Se você não está familiarizado com o projeto Mono e seus mantenedores, esta resposta é aquela a que Joel está se referindo.
Alastairs
Eu tenho uma página asp.net que desejo integrar com o site php principal em um servidor linux. É possível? Na verdade, é possível ter php e asp.net em um mesmo servidor Linux?
Hosein Aqajani
86

Portanto, sei que esta é uma pergunta mais antiga, mas acho que poderia ter uma resposta atualizada.

A Microsoft lançou oficialmente o asp.net vnext e seu código-fonte aberto e pode ser implantado em Linux e Mac. Tudo ainda é muito novo, mas depende das últimas compilações de mono e, portanto, atualmente precisa que você compile o, mono-frameworkmas com o tempo eu suspeito que será mais fácil de acessar conforme várias distros Linux lançarem versões atualizadas de mono. Este é um guia de como configurar

Esta informação pode ser um tanto volátil e com atualizações devido a alterações.

Atualizar ASP.NET CORE 11/10/2017

Terrance
fonte
A partir de hoje, quais servidores da Web Linux são suportados pelo ASP.NET Core?
MrCalvin
12

Posso falar por experiência própria. Mesmo que o seu site ASP.net use apenas bibliotecas .NET suportadas pelo Mono, você terá dificuldade em executá-lo se for algo além do Hello World.

Você não terá que reescrever muito código, mas passará horas / dias / semanas lidando com pequenos problemas com a configuração mod_mono / xsp / apache e permissões de arquivo e tratamento de erros e todas as pequenas coisas que entram em um grande site. (Esteja preparado para gastar muito tempo fazendo perguntas sobre serverfault :))

O problema é que muitas pessoas não usam Mono para sites ASP.net e, portanto, não há tantas pessoas relatando bugs, então muitas coisas que são pequenos bugs não são corrigidas por um longo tempo.

thelsdj
fonte
Admito que estava tendo os mesmos pensamentos e encarei isso em um projeto real.
Eslam Hamouda de
10

Agora você pode publicar o aplicativo ASP.NET 5 no Docker no Linux com Visual Studio. Veja a postagem abaixo de Scott Haselman

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

Tepu
fonte
Não há nenhum servidor web de produção que funcione com ASP.NET 5, exceto Kestrel, que é apenas um servidor de desenvolvimento? Como isso é uma opção válida sem nenhuma maneira de hospedar um site ASP.NET no Linux?
Chris Hawkes
1
e os contêineres do docker para Windows são executados apenas no servidor Windows 16, portanto, não é relevante para a questão
jocelyn
10

Como as tecnologias evoluem e esta questão é a melhor classificada no google, precisamos incluir além do mono o novo núcleo do asp.net, que é uma reescrita completa do asp.net para execução em produção em Linux e Windows e para desenvolvimento em Linux , Windows e Mac :

Você pode desenvolver e executar seus aplicativos ASP.NET Core entre plataformas no Windows, Mac e Linux. ASP.NET Core é open source no GitHub.

Mqueirozcorreia
fonte
5

Sim, nós podemos. familiarize-se com o Mono Project e leia este artigo para começar.

dde
fonte
Será que todas as Bibliotecas definidas corretamente no ASP.NET Web Forms com Monoem Linux ambiente?
Raja
4

Para ASP.NET no Linux, verifique Mono .

Dito isso, milhares de sites são executados no Windows Server sem problemas. Um servidor mal configurado com qualquer sistema operacional ficará vulnerável; O Linux não o salvará de um administrador pobre.

Portanto, acho que minha "prática recomendada" para desenvolver um aplicativo ASP.NET seria usar o Windows Server 2008 (provavelmente edição da Web). E contrate um bom administrador.

Dahlbyk
fonte
o que acontece com o problema de antivírus .. windows requer software antivírus .. eu acho que isso vai aumentar o custo da área do lado do servidor .. estou certo?
Anand
A maioria das edições de "servidor" de produtos antivírus são mais caras do que suas edições de "desktop", muitas vezes várias vezes mais, principalmente devido ao uso esperado. Eu recomendo AVG (www.avg.com), ESET (www.eset.com) ou Computer Associates (www.ca.com).
devstuff
4

Você pode usar o Mono para executar aplicativos ASP.NET no Apache / Linux, no entanto, ele tem um subconjunto limitado do que você pode fazer no Windows. Quanto a "eles" dizendo que o Windows é mais vulnerável a ataques - não é verdade. O IIS teve menos problemas de segurança nos últimos anos que o Apache, mas em ambos os casos, tudo se resume à administração das caixas - ambos os sistemas operacionais podem ser facilmente protegidos. Hoje em dia, os pontos de ataque não são o sistema operacional ou o software do servidor da Web, mas os próprios aplicativos.

dardo
fonte
3
qualquer coisa pode ser vulnerável. nada é seguro a menos que seja desligado e desconectado da rede
blowdart
@blowdart, agora dê uma olhada no Facebook executado em apache makeuseof.com/tag/facebook-work-nuts-bolts-technology-explained
Anirudha Gupta
3

dotnet é a casa oficial do .NET no GitHub. É um ótimo ponto de partida encontrar muitos projetos de software de fonte aberta da Microsoft e da comunidade, incluindo muitos que fazem parte da .NET Foundation.

Este pode ser um ótimo começo para oferecer suporte ao Linux.

Kurkula
fonte
2

Hoje em dia .Net é executado em várias plataformas, como Linux, Mac os etc., mas mono não é totalmente independente de plataforma, porque implantar .NET em outro sistema operacional requer software de terceiros. Portanto, não é como plataforma Java independente.

O Mono está rodando em uma plataforma diferente, porque o JIT está lá em um sistema operacional diferente.

Mono não é um sucesso total no luar (luz prateada no .NET) .Não só há pesquisas em andamento.

Mono usa servidor XSP2 ou apache. algumas das grandes empresas estão usando este projeto. Alguns dos projetos robóticos também estão rodando em mono.

Para mais detalhes http://www.mono-project.com/Main_Page .

anishMarokey
fonte
1

O projeto Mono é a sua melhor opção. No entanto, ele tem muitas armadilhas (como suporte API incompleto em algumas áreas) e é legalmente cinza (pessoas como Richard Stallman ridicularizaram o uso do Mono por causa da possibilidade de a Microsoft usar o Mono usando seus direitos de patente, mas essa é outra história).

De qualquer forma, o Apache oferece suporte a .NET / Mono por meio de um módulo, mas a última vez que verifiquei a versão fornecida com o Debian, ele fornecia suporte apenas para linguagem Perl; Não posso dizer se mudou desde então, talvez outra pessoa possa me corrigir lá.

Ben
fonte