Chạy ASP.Net trên máy chủ dựa trên Linux


89

Đối với một nhà phát triển có nền tảng Java, tôi cũng muốn khám phá việc phát triển phần mềm bằng cách sử dụng các công cụ / nền tảng ASP.NET.

Các ứng dụng web Java (.jsp và servlet) có thể chạy trên nhiều nền tảng máy chủ.

Câu hỏi : Liệu một ứng dụng web .NET có thể chạy trong một máy chủ dựa trên Linux không? Xem xét trường hợp không thể sử dụng máy chủ Windows để lưu trữ ứng dụng web.

Câu trả lời:


69

Nó phụ thuộc vào công nghệ .NET cụ thể nào bạn đang sử dụng. Các dự án Mono cung cấp một module Apache (mod_mono) để chạy các trang web ASP.NET, và từ những gì tôi thu thập nó hoạt động tốt.

Tuy nhiên, Mono không hỗ trợ tất cả các API .NET - đặc biệt là WPF (và có thể cả WCF nữa, tôi không thể nhớ) - nhưng nó cung cấp hỗ trợ tốt cho nhiều thứ khác của framework.

Nếu bạn đang bắt đầu từ đầu và đặc biệt muốn nhắm mục tiêu đến các máy chủ không phải Windows, thì việc đảm bảo dự án của bạn hoạt động với Mono sẽ là một mục tiêu tốt để hướng tới. Tuy nhiên, nếu bạn cần các API cụ thể hoặc các tính năng ngôn ngữ không được Mono hỗ trợ, thì bạn sẽ cần sử dụng máy chủ Windows để triển khai. Đó là một sự lựa chọn về thời gian thiết kế / kiến ​​trúc nên làm trước.


3
fyi, người bảo trì dự án đơn lẻ cũng có câu trả lời cho câu hỏi này.
Joel Coehoorn

8
Nếu bạn không quen thuộc với dự án Mono và đó là những người bảo trì, thì câu trả lời này là câu trả lời mà Joel đang đề cập đến.
alastairs

Tôi có một trang asp.net mà tôi muốn tích hợp với trang web php chính trong một máy chủ linux. Nó có khả thi không? Thật vậy, có thể có php và asp.net trên cùng một máy chủ linux không?
Hosein Aqajani

86

Vì vậy, tôi biết đây là một câu hỏi cũ hơn nhưng tôi nghĩ nó có thể là một câu trả lời cập nhật.

Microsoft đã chính thức phát hành asp.net vnext và mã nguồn mở của nó và có thể triển khai cho cả Linux và Mac. Tất cả của nó vẫn còn khá mới nhưng dựa trên các bản dựng mới nhất của mono và do đó hiện tại cần bạn biên dịch mono-frameworknhưng theo thời gian, tôi nghi ngờ rằng nó sẽ dễ dàng truy cập hơn khi nhiều bản phân phối linux phát hành các phiên bản cập nhật của mono. Đây là hướng dẫn cách thiết lập

Thông tin này có thể hơi thay đổi và với các bản cập nhật là do thay đổi.

Cập nhật ASP.NET CORE 11/10/2017


Cho đến ngày nay, những máy chủ web linux nào được hỗ trợ bởi ASP.NET Core?
MrCalvin


12

Tôi có thể nói từ kinh nghiệm. Ngay cả khi trang web ASP.net của bạn chỉ sử dụng các thư viện .NET được hỗ trợ bởi Mono, bạn sẽ gặp khó khăn để chạy nó nếu bất kỳ thứ gì ngoài Hello World.

Bạn sẽ không phải viết lại nhiều mã nhưng bạn sẽ dành hàng giờ / ngày / tuần để giải quyết các vấn đề nhỏ với cấu hình mod_mono / xsp / apache và quyền đối với tệp và xử lý lỗi và tất cả những thứ nhỏ nhặt trong một trang web lớn. (Hãy chuẩn bị dành nhiều thời gian đặt câu hỏi trên serverfault :))

Vấn đề là rất nhiều người không sử dụng Mono cho các trang web ASP.net và do đó không có nhiều người báo cáo lỗi nên rất nhiều thứ là lỗi nhỏ sẽ không được sửa trong một thời gian dài.


Tôi thừa nhận rằng, tôi cũng có cùng suy nghĩ và đối mặt với điều đó trong một dự án thực tế.
Eslam Hamouda

10

Bây giờ bạn có thể xuất bản ứng dụng ASP.NET 5 lên Docker trên Linux bằng Visual Studio. Xem bài đăng dưới đây từ Scott Haselman

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


Không có máy chủ web sản xuất nào sẽ hoạt động với ASP.NET 5 ngoại trừ Kestrel chỉ là một máy chủ phát triển? Làm thế nào đây là một tùy chọn hợp lệ mà không có cách nào để lưu trữ một trang web ASP.NET trên Linux?
Chris Hawkes

1
và bộ chứa docker xây dựng cho windows chỉ chạy trên máy chủ windows 16 nên nó không liên quan đến câu hỏi
jocelyn

10

Vì các công nghệ phát triển và câu hỏi này được xếp hạng hàng đầu trên google, chúng tôi cần bao gồm ngoài mono , lõi asp.net mới, là bản viết lại hoàn chỉnh của asp.net để chạy cho sản xuất trong Linux và Windows và phát triển cho Linux , Windows và Mac :

Bạn có thể phát triển và chạy các ứng dụng ASP.NET Core đa nền tảng trên Windows, Mac và Linux. ASP.NET Core là mã nguồn mở tại GitHub.


5

Có, chúng tôi có thể. làm quen với Mono Project và đọc bài viết này để bắt đầu.


Tất cả các Thư viện có được đặt đúng trong các biểu mẫu web ASP.Net với Monotrong môi trường Linux không?
Raja

4

Đối với ASP.NET trên Linux, hãy xem Mono .

Điều đó nói rằng, hàng nghìn trang web chạy trên Windows Server mà không gặp bất kỳ sự cố nào. Một máy chủ được cấu hình kém với bất kỳ hệ điều hành nào sẽ dễ bị tấn công; Linux sẽ không cứu bạn khỏi một quản trị viên kém.

Vì vậy, tôi đoán "phương pháp hay nhất" của tôi để triển khai ứng dụng ASP.NET là sử dụng Windows Server 2008 (có thể là phiên bản Web). Và thuê một quản trị viên giỏi.


còn vấn đề chống vi-rút thì sao .. windows yêu cầu phần mềm diệt vi-rút .. tôi nghĩ như vậy sẽ làm tăng chi phí của khu vực phía máy chủ .. tôi có đúng không?
Anand

Hầu hết các phiên bản "máy chủ" của các sản phẩm chống vi-rút đều đắt hơn các phiên bản "máy tính để bàn" của chúng, thường cao hơn vài lần, chủ yếu là do mức sử dụng dự kiến. Tôi muốn giới thiệu AVG (www.avg.com), ESET (www.eset.com), hoặc Computer Associates (www.ca.com).
devstuff,

4

Bạn có thể sử dụng Mono để chạy các ứng dụng ASP.NET trên Apache / Linux, tuy nhiên nó có một tập hợp con hạn chế về những gì bạn có thể làm trong Windows. Đối với việc "họ" nói rằng Windows dễ bị tấn công hơn - điều đó không đúng. IIS đã gặp ít vấn đề về bảo mật hơn trong vài năm qua Apache, nhưng trong cả hai trường hợp, tất cả đều do sự quản lý của các hộp - cả hai hệ điều hành đều có thể được bảo mật dễ dàng. Ngày nay, các điểm tấn công không phải là hệ điều hành hoặc phần mềm máy chủ web, mà là chính các ứng dụng.


3
bất cứ điều gì có thể dễ bị tổn thương. không có gì là an toàn trừ khi nó tắt và ngắt kết nối từ mạng
blowdart

@blowdart, Ngay bây giờ hãy xem trên facebook chạy trên apache makeuseof.com/tag/facebook-work-nuts-bolts-technology-explained
Anirudha Gupta

3

dotnet là nhà chính thức của .NET trên GitHub. Đó là một điểm khởi đầu tuyệt vời để tìm thấy nhiều dự án .NET OSS từ Microsoft và cộng đồng, bao gồm nhiều dự án là một phần của .NET Foundation.

Đây có thể là một khởi đầu tuyệt vời để hỗ trợ Linux.


2

Ngày nay .Net được chạy trên nhiều nền tảng, như linux, Mac OS, v.v. nhưng mono không hoàn toàn độc lập với nền tảng, Bởi vì để triển khai .NET trong một hệ điều hành khác cần có phần mềm của bên thứ ba. Vì vậy, nó không giống như nền tảng java độc lập.

Mono đang chạy ở các nền tảng khác nhau, vì JIT có trong hệ điều hành khác nhau.

Mono không hoàn toàn thành công trong ánh trăng (ánh sáng bạc trong .NET). Không chỉ Nghiên cứu đang diễn ra.

Mono sử dụng máy chủ XSP2 hoặc apache. một số công ty lớn đang sử dụng dự án này, Một số dự án robot cũng đang chạy trên mono.

Để biết thêm chi tiết http://www.mono-project.com/Main_Page .



1

Dự án Mono là lựa chọn tốt nhất của bạn. Tuy nhiên, nó có rất nhiều cạm bẫy (như hỗ trợ API không đầy đủ ở một số khu vực) và nó có màu xám về mặt pháp lý (những người như Richard Stallman đã chế giễu việc sử dụng Mono vì khả năng Microsoft sẽ hạ gục Mono bằng cách sử dụng bản quyền bằng sáng chế của nó, nhưng đó là một câu chuyện khác).

Dù sao thì Apache cũng hỗ trợ .NET / Mono thông qua một mô-đun, nhưng lần trước khi tôi kiểm tra phiên bản được cung cấp cùng với Debian, nó chỉ hỗ trợ ngôn ngữ Perl; Tôi không thể nói liệu nó có được thay đổi hay không, có lẽ ai đó có thể sửa tôi ở đó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.