เรียกใช้ ASP.Net บนเซิร์ฟเวอร์ที่ใช้ Linux


89

สำหรับนักพัฒนาที่มีพื้นหลัง Java ฉันสนใจที่จะสำรวจการพัฒนาซอฟต์แวร์โดยใช้เครื่องมือ / แพลตฟอร์ม ASP.NET เช่นกัน

เว็บแอ็พพลิเคชัน Java (.jsp และ servlets) สามารถรันบนแพลตฟอร์มเซิร์ฟเวอร์จำนวนมาก

คำถาม : เว็บแอปพลิเคชัน. NET จะสามารถทำงานในเซิร์ฟเวอร์ที่ใช้ Linux ได้หรือไม่? พิจารณาสถานการณ์ที่ไม่สามารถใช้เซิร์ฟเวอร์ Windows สำหรับโฮสต์เว็บแอป

คำตอบ:


70

ขึ้นอยู่กับเทคโนโลยี. NET ที่คุณใช้อยู่ โครงการโมโนให้โมดูล Apache (mod_mono) สำหรับการเรียกใช้เว็บไซต์ ASP.NET และจากสิ่งที่ฉันรวบรวมมันทำงานได้ดี

Mono ไม่รองรับ. NET API ทั้งหมด แต่โดยเฉพาะ WPF (และอาจเป็น WCF ด้วยฉันจำไม่ได้) - แต่มันให้การสนับสนุนที่ดีสำหรับเฟรมเวิร์กอื่น ๆ อีกมากมาย

หากคุณเริ่มต้นใหม่ตั้งแต่ต้นและต้องการกำหนดเป้าหมายเซิร์ฟเวอร์ที่ไม่ใช่ Windows เป็นพิเศษดังนั้นการตรวจสอบให้แน่ใจว่าโครงการของคุณทำงานร่วมกับ Mono จะเป็นเป้าหมายที่ดีในการตั้งเป้าหมาย อย่างไรก็ตามหากคุณต้องการ API เฉพาะหรือคุณสมบัติภาษาที่ Mono ไม่รองรับคุณจะต้องใช้เซิร์ฟเวอร์ Windows ในการปรับใช้ เป็นตัวเลือกเวลาออกแบบ / สถาปัตยกรรมที่ควรทำล่วงหน้า


3
fyi ผู้ดูแลโครงการโมโนมีคำตอบในคำถามนี้เช่นกัน
Joel Coehoorn

8
หากคุณไม่คุ้นเคยกับโครงการโมโนและเป็นผู้ดูแลคำตอบนี้คือคำตอบที่โจเอลอ้างถึง
alastairs

ฉันมีหน้า asp.net ซึ่งฉันต้องการรวมกับเว็บไซต์ php หลักในเซิร์ฟเวอร์ linux เป็นไปได้ไหม? เป็นไปได้ไหมที่จะมี php และ asp.net บนเซิร์ฟเวอร์ linux เดียวกัน?
Hosein Aqajani

87

ดังนั้นฉันรู้ว่านี่เป็นคำถามที่เก่ากว่า แต่ฉันคิดว่ามันเป็นคำตอบที่อัปเดตแล้ว

Microsoft ได้เปิดตัวasp.net vnextและโอเพ่นซอร์สอย่างเป็นทางการและสามารถใช้งานได้กับทั้ง Linux และ Mac ทุกอย่างยังค่อนข้างใหม่ แต่ต้องใช้โมโนรุ่นล่าสุดดังนั้นตอนนี้จึงต้องการให้คุณรวบรวมmono-frameworkแต่ในเวลานี้ฉันสงสัยว่าจะเข้าถึงได้ง่ายขึ้นเนื่องจาก linux distros ต่างๆปล่อยเวอร์ชันที่อัปเดตของโมโน นี่คือคู่มือวิธีการตั้งค่า

ข้อมูลนี้อาจมีความผันผวนบ้างและเนื่องจากการอัปเดตมีการเปลี่ยนแปลง

อัปเดต ASP.NET CORE 11/10/2017


ณ วันนี้เว็บเซิร์ฟเวอร์ linux ใดบ้างที่รองรับ ASP.NET Core?
MrCalvin


12

ฉันสามารถพูดจากประสบการณ์ แม้ว่าเว็บไซต์ ASP.net ของคุณจะใช้เฉพาะไลบรารี. NET ที่ Mono สนับสนุน แต่คุณจะต้องพบกับความยากลำบากในการเรียกใช้หากมีสิ่งใดนอกเหนือจาก Hello World

คุณไม่จำเป็นต้องเขียนโค้ดซ้ำมากนัก แต่คุณจะใช้เวลาหลายชั่วโมง / วัน / สัปดาห์ในการจัดการกับปัญหาเล็กน้อยเกี่ยวกับการกำหนดค่า mod_mono / xsp / apache และการอนุญาตไฟล์และการจัดการข้อผิดพลาดและสิ่งเล็กน้อยทั้งหมดที่เข้าสู่เว็บไซต์ขนาดใหญ่ (เตรียมพร้อมที่จะใช้เวลามากมายในการถามคำถามเกี่ยวกับ serverfault :))

ปัญหาคือผู้คนจำนวนมากไม่ได้ใช้ Mono สำหรับเว็บไซต์ ASP.net ดังนั้นจึงมีคนไม่มากเท่าที่รายงานข้อบกพร่องดังนั้นหลายสิ่งที่เป็นข้อบกพร่องเล็กน้อยจึงไม่ได้รับการแก้ไขเป็นเวลานาน


ฉันยอมรับว่าฉันมีความคิดเดียวกันและเผชิญกับโครงการจริง
Eslam Hamouda

10

ตอนนี้คุณสามารถเผยแพร่แอป ASP.NET 5 ไปยัง Docker บน Linux ด้วย Visual Studio ดูโพสต์ด้านล่างจาก Scott Haselman

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


ไม่มีเว็บเซิร์ฟเวอร์สำหรับใช้งานจริงที่จะทำงานกับ ASP.NET 5 ยกเว้น Kestrel ซึ่งเป็นเพียงเซิร์ฟเวอร์สำหรับพัฒนาเท่านั้น วิธีนี้เป็นตัวเลือกที่ถูกต้องโดยไม่มีวิธีการโฮสต์เว็บไซต์ ASP.NET บน Linux?
Chris Hawkes

1
และคอนเทนเนอร์นักเทียบท่าสร้างสำหรับ windows ทำงานบน windows server 16 เท่านั้นดังนั้นจึงไม่เกี่ยวข้องกับคำถาม
jocelyn

10

เนื่องจากเทคโนโลยีมีวิวัฒนาการและคำถามนี้ติดอันดับต้น ๆ ใน Google เราจึงจำเป็นต้องรวมไว้นอกเหนือจากแกนหลักของ asp.net แบบโมโนซึ่งเป็นการเขียนใหม่ทั้งหมดของasp.net เพื่อรันสำหรับการผลิตใน Linux และ Windows และสำหรับการพัฒนาสำหรับ Linux , Windows และ Mac :

คุณสามารถพัฒนาและเรียกใช้แอป ASP.NET Core ข้ามแพลตฟอร์มบน Windows, Mac และ Linux ASP.NET Core เป็นโอเพ่นซอร์สที่ GitHub


5

ใช่เราทำได้ ทำความคุ้นเคยกับMono Projectและอ่านบทความนี้เพื่อเริ่มต้น


จะห้องสมุดทั้งหมดตั้งอย่างถูกต้องในรูปแบบเว็บ ASP.NetมีMonoในลินุกซ์สภาพแวดล้อม?
ราชา

4

สำหรับ ASP.NET บนลินุกซ์, ตรวจสอบโมโน

ที่กล่าวว่าไซต์หลายพันแห่งทำงานบน Windows Server โดยไม่มีปัญหาใด ๆ เซิร์ฟเวอร์ที่กำหนดค่าไม่ดีพร้อมกับระบบปฏิบัติการใด ๆ จะมีช่องโหว่ Linux จะไม่ช่วยคุณจากผู้ดูแลระบบที่ไม่ดี

ดังนั้นฉันเดาว่า "แนวทางปฏิบัติที่ดีที่สุด" สำหรับการใช้แอป ASP.NET คือการใช้ Windows Server 2008 (น่าจะเป็น Web edition) และจ้างผู้ดูแลที่ดี.


ปัญหาเกี่ยวกับแอนตี้ไวรัส .. windows ต้องใช้ซอฟต์แวร์ป้องกันไวรัส .. ฉันคิดว่าจะเพิ่มต้นทุนของพื้นที่ฝั่งเซิร์ฟเวอร์.. ใช่ไหม
Anand

ผลิตภัณฑ์ป้องกันไวรัสรุ่น "เซิร์ฟเวอร์" ส่วนใหญ่มีราคาแพงกว่ารุ่น "เดสก์ท็อป" ซึ่งมักจะมากกว่าหลายเท่าสาเหตุหลักมาจากการใช้งานที่คาดไว้ ฉันขอแนะนำ AVG (www.avg.com), ESET (www.eset.com) หรือ Computer Associates (www.ca.com)
devstuff

4

คุณสามารถใช้Monoเพื่อเรียกใช้แอปพลิเคชัน ASP.NET บน Apache / Linux ได้อย่างไรก็ตามมีบางส่วนที่คุณสามารถทำได้ใน Windows ส่วน "พวกเขา" บอกว่า Windows เสี่ยงต่อการถูกโจมตี - ไม่เป็นความจริง IIS มีปัญหาด้านความปลอดภัยน้อยกว่าในช่วงสองสามปีที่ผ่านมาที่ Apache แต่ไม่ว่าในกรณีใดก็ขึ้นอยู่กับการดูแลระบบ - ทั้งสองระบบสามารถรักษาความปลอดภัยได้อย่างง่ายดาย ทุกวันนี้จุดโจมตีไม่ใช่ซอฟต์แวร์ระบบปฏิบัติการหรือเว็บเซิร์ฟเวอร์ แต่เป็นแอปพลิเคชันเอง


3
สิ่งใดที่อาจเสี่ยง ไม่มีสิ่งใดปลอดภัยเว้นแต่จะปิดและตัดการเชื่อมต่อจากเครือข่าย
blowdart

@blowdart ตอนนี้ดู facebook run บน apache makeuseof.com/tag/facebook-work-nuts-bolts-technology-explained
Anirudha Gupta

3

dotnetคือบ้านอย่างเป็นทางการของ. NET บน GitHub นี่เป็นจุดเริ่มต้นที่ดีในการค้นหาโครงการ. NET OSS จาก Microsoft และชุมชนรวมถึงโครงการอื่น ๆ ที่เป็นส่วนหนึ่งของ. NET Foundation

นี่อาจเป็นการเริ่มต้นที่ดีในการสนับสนุน Linux


2

วันนี้ NET ทำงานในหลายแพลตฟอร์มเช่น linux, Mac os เป็นต้น แต่ mono ไม่ได้เป็นอิสระจากแพลตฟอร์มทั้งหมดเนื่องจากการปรับใช้. NET ในระบบปฏิบัติการอื่นจำเป็นต้องใช้ซอฟต์แวร์ของบุคคลที่สามดังนั้นจึงไม่เหมือนกับแพลตฟอร์ม java ที่เป็นอิสระ

Mono กำลังทำงานในแพลตฟอร์มที่แตกต่างกันเนื่องจาก JIT มีอยู่ในระบบปฏิบัติการที่แตกต่างกัน

โมโนไม่ประสบความสำเร็จอย่างเต็มที่ในแสงจันทร์ (แสงสีเงินใน. NET) ไม่เพียง แต่การวิจัยเท่านั้นที่กำลังดำเนินอยู่

Mono ใช้เซิร์ฟเวอร์ XSP2 หรือ apache บริษัท ใหญ่ ๆ บางแห่งกำลังใช้โครงการนี้บางส่วนของโครงการหุ่นยนต์ก็ทำงานแบบโมโน

สำหรับรายละเอียดเพิ่มเติม http://www.mono-project.com/Main_Page



1

โครงการโมโนเป็นตัวเลือกที่ดีที่สุดของคุณ อย่างไรก็ตามมีข้อผิดพลาดมากมาย (เช่นการสนับสนุน API ที่ไม่สมบูรณ์ในบางพื้นที่) และเป็นสีเทาตามกฎหมาย (คนอย่าง Richard Stallman ดูถูกการใช้ Mono เนื่องจากความเป็นไปได้ที่ Microsoft จะลงมาใน Mono โดยใช้สิทธิ์ในสิทธิบัตร แต่ นั่นเป็นอีกเรื่องหนึ่ง)

อย่างไรก็ตาม Apache รองรับ. NET / Mono ผ่านโมดูล แต่ครั้งสุดท้ายที่ฉันตรวจสอบเวอร์ชันที่มาพร้อมกับ Debian มันให้การสนับสนุนภาษา Perl เท่านั้น ฉันไม่สามารถพูดได้ว่ามันเปลี่ยนไปหรือเปล่าบางทีอาจมีคนอื่นแก้ไขฉันได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.