ASP.Net'i Linux tabanlı bir sunucuda çalıştırma


89

Java geçmişi olan bir geliştirici için, ASP.NET araçlarını / platformunu kullanarak yazılım geliştirmeyi keşfetmekle ilgileniyorum.

Java web uygulamaları (.jsp ve servletler) birçok sunucu platformunda çalışabilir.

Soru : Bir .NET web uygulaması Linux tabanlı bir sunucuda çalışabilir mi? Bir web uygulamasını barındırmak için bir Windows sunucusunu kullanamama senaryosunu düşünün.

Yanıtlar:


70

Hangi belirli .NET teknolojilerini kullandığınıza bağlıdır. Mono Projesi ASP.NET siteleri çalıştırmak için bir Apache modülü (mod_mono) sağlar ve anladığım kadarıyla çok iyi çalışıyor.

Mono, tüm .NET API'lerini desteklemiyor, özellikle de WPF'yi (ve muhtemelen WCF'yi de hatırlayamıyorum) - ancak çerçevenin çoğu için iyi bir destek sağlıyor.

Sıfırdan başlıyorsanız ve özellikle Windows olmayan sunucuları hedeflemek istiyorsanız, projenizin Mono ile çalışmasını sağlamak, hedeflemek için iyi bir hedef olacaktır. Ancak, Mono tarafından desteklenmeyen belirli API'lere veya dil özelliklerine ihtiyacınız varsa, dağıtım için bir Windows sunucusu kullanmanız gerekecektir. Bu, ön plana çıkması gereken bir tasarım zamanı / mimari seçimdir.


3
fyi, mono proje sorumlusunun da bu soruya bir cevabı var.
Joel Coehoorn

8
Mono projesine aşina değilseniz ve projenin geliştiricileri, bu cevap Joel'in bahsettiği cevaptır .
alastairs

Linux sunucusundaki ana php web sitesi ile entegre etmek istediğim bir asp.net sayfam var. Mümkün mü? Gerçekten, aynı linux sunucusunda php ve asp.net'e sahip olmak mümkün müdür?
Hosein Aqajani

86

Bu yüzden bunun daha eski bir soru olduğunu biliyorum, ancak güncellenmiş bir cevaba dayanabileceğini düşünüyorum.

Microsoft resmen asp.net vnext ve açık kaynağını yayınladı ve hem Linux hem de Mac'e dağıtılabilir. Hepsi hala oldukça yeni ancak en son mono sürümlerine güveniyor ve bu nedenle şu anda derlemenize ihtiyaç duyuyor, mono-frameworkancak zamanla çeşitli linux dağıtımları güncellenmiş mono sürümlerini yayınladıkça erişimin daha kolay olacağından şüpheleniyorum. Bu bir nasıl kurulur kılavuzudur

Bu bilgiler biraz uçucu olabilir ve güncellemelerde değişiklik olabilir.

ASP.NET CORE 11/10/2017 güncellemesi


Bugün itibariyle, ASP.NET Core tarafından hangi linux web sunucuları desteklenmektedir?
MrCalvin


12

Deneyimden konuşabilirim. ASP.net web siteniz yalnızca Mono tarafından desteklenen .NET kitaplıklarını kullansa bile, Hello World'ün ötesinde bir şey varsa çalıştırmakta zorlanacaksınız.

Çok fazla kod yazmak zorunda kalmayacaksınız, ancak mod_mono / xsp / apache yapılandırması, dosya izinleri ve hata işleme ve büyük bir web sitesine giden tüm küçük şeylerle ilgili küçük sorunlarla uğraşmak için saatler / günler / haftalar harcayacaksınız. (Sunucu hatasıyla ilgili soru sormaya çok zaman ayırmaya hazır olun :))

Sorun şu ki, pek çok kişi ASP.net web siteleri için Mono kullanmıyor ve bu nedenle hataları bildiren pek çok insan yok, bu nedenle küçük hatalar olan pek çok şey uzun süre düzeltilmemiş durumda.


Kabul ediyorum, aynı düşünceler içindeydim ve kendimle gerçek bir projede yüzleştim.
Eslam Hamouda

10

Artık Visual Studio ile Linux üzerinde Docker'da ASP.NET 5 uygulamasını yayımlayabilirsiniz. Scott Haselman'dan aşağıdaki gönderiye bakın

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


Yalnızca geliştirme sunucusu olan Kestrel dışında ASP.NET 5 ile çalışacak üretim web sunucusu yok mu? Linux'ta bir ASP.NET web sitesini barındırmanın yolu olmadan bu nasıl geçerli bir seçenek olabilir?
Chris Hawkes

1
ve docker container'lar yalnızca windows server 16 üzerinde çalışır, bu yüzden soruyla alakalı değildir
jocelyn

10

Teknolojiler geliştiğinden ve bu soru google'da en üst sırada yer aldığından, Linux ve Windows'ta üretim için ve Linux için geliştirme için çalıştırmak üzere asp.net'in tamamen yeniden yazılması olan yeni asp.net çekirdeğini mono'nun ötesine eklememiz gerekir. , Windows ve Mac :

ASP.NET Core uygulamalarınızı platformlar arası Windows, Mac ve Linux üzerinde geliştirebilir ve çalıştırabilirsiniz. ASP.NET Core, GitHub'da açık kaynaktır.



4

Linux'ta ASP.NET için Mono'ya bakın .

Bununla birlikte, binlerce site Windows Server'da sorunsuz çalışıyor. Herhangi bir işletim sistemine sahip kötü yapılandırılmış bir sunucu savunmasız olacaktır; Linux sizi kötü bir yöneticiden kurtarmaz.

Bu nedenle, bir ASP.NET uygulamasını dağıtmak için "en iyi uygulama" nın Windows Server 2008 (muhtemelen Web sürümü) kullanmak olacağını tahmin ediyorum. Ve iyi bir yönetici tut.


peki ya antivirüs sorunu .. windows antivirüs yazılımı gerektirir .. bence bu sunucu tarafı alan maliyetini artıracak .. haklı mıyım?
Anand

Virüsten koruma ürünlerinin çoğu "sunucu" sürümü, "masaüstü" sürümlerinden daha pahalıdır, çoğunlukla beklenen kullanım nedeniyle birkaç kat daha fazladır. AVG'yi (www.avg.com), ESET'i (www.eset.com) veya Computer Associates'i (www.ca.com) öneririm.
devstuff

4

Apache / Linux üzerinde ASP.NET uygulamalarını çalıştırmak için Mono kullanabilirsiniz , ancak Windows altında yapabileceklerinizin sınırlı bir alt kümesine sahiptir. "Onlar", Windows'un saldırılara karşı daha savunmasız olduğunu söylemelerine gelince - bu doğru değil. IIS, son birkaç yılda Apache'ye göre daha az güvenlik sorunu yaşamıştır, ancak her iki durumda da her şey kutuların yönetimine bağlıdır - her iki işletim sistemi de kolayca güvenli hale getirilebilir. Bugünlerde saldırı noktaları işletim sistemi veya web sunucusu yazılımı değil, uygulamaların kendisidir.


3
her şey savunmasız olabilir. kapatılmadıkça ve ağ bağlantısı kesilmedikçe hiçbir şey güvenli değildir
blowdart


3

dotnet , GitHub'daki resmi .NET sitesidir. Microsoft'tan ve topluluktan birçok .NET OSS projesi bulmak harika bir başlangıç ​​noktasıdır, bunların birçoğu .NET Foundation'ın bir parçasıdır.

Bu, Linux'u desteklemek için harika bir başlangıç ​​olabilir.


2

Artık bir gün .Net, linux, Mac os vb. Gibi birden çok platformda çalıştırılıyor, ancak mono tamamen platformdan bağımsız değil, Çünkü .NET'i başka bir işletim sisteminde dağıtmak için üçüncü taraf yazılımı gerekiyor. Bu nedenle java platformundan bağımsız değil.

Mono farklı platformda çalışıyor, çünkü JIT farklı işletim sistemlerinde var.

Mono, ay ışığında tam olarak başarılı değildir (.NET'te gümüş ışık) Sadece Araştırma devam etmiyor.

Mono, XSP2 sunucusu veya apache kullanır. bazı büyük şirketler bu projeyi kullanıyor, robotik projelerin bir kısmı da mono üzerinde çalışıyor.

Daha fazla ayrıntı için http://www.mono-project.com/Main_Page .



1

Mono projesi en iyi seçeneğinizdir. Bununla birlikte, pek çok tuzağı var (bazı alanlarda eksik API desteği gibi) ve yasal olarak gri (Richard Stallman gibi insanlar, Microsoft'un patent haklarını kullanarak Mono'ya düşme olasılığı nedeniyle Mono kullanımıyla alay ettiler, ancak bu başka bir hikaye).

Her neyse, Apache bir modül aracılığıyla .NET / Mono'yu destekliyor, ancak Debian ile sağlanan sürümü en son kontrol ettiğimde yalnızca Perl dil desteği veriyordu; O zamandan beri değişip değişmediğini söyleyemem, belki başka biri beni orada düzeltebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.