2016-05-25 14 views
9

के रूप में मुझे नेट कोर कंसोल या एएसपीनेट एप्लिकेशन को लिनक्स डेमॉन के रूप में होस्ट करने के बारे में जानकारी चाहिए। Windows सेवा के रूप में होस्टिंग एप्लिकेशन पहले से ही Microsoft.Hosting.WindowsService द्वारा समर्थित है, लेकिन मुझे लिनक्स deamons के लिए कुछ समान की आवश्यकता है।एएसपी.NET कोर आरसी 2 लिनक्स डेमॉन

+0

मैं खुद को कुछ ही मिनट पहले ही पूछ रहा हूं। काश मैं इसे एक से अधिक बार बढ़ा सकता हूं। असल में, मैं एक ही कोडबेस का उपयोग करना चाहता हूं, विंडोज नेट सेवा, लिनक्स बाइनरी (एक डेमॉन के रूप में) और डॉकराइज्ड के रूप में नेट कोर ऐप चलाने के लिए इसे संभव बनाना चाहता हूं। –

उत्तर

9

मैं आरएचईएल पर चल रहा हूं, और इसलिए मैंने अपनी खुद की सिस्टम यूनिट फाइलें लिखना चुना है। यहां पोस्ट का एक उदाहरण है जिसका उपयोग मैं PostgreSQL (इसलिए पर्यावरण चर) के साथ संयोजन में करता हूं। मैंने स्पष्ट कारणों से संवेदनशील जानकारी छीन ली है।

[Unit] 
Description=My Sample Application 
Documentation= 


Wants=network.target 
After=network.target 


[Service] 
User=dotnetuser 
Group=dotnetuser 
Nice=5 
KillMode=control-group 
SuccessExitStatus=0 1 
Environment=MY_CONNSTRING=Server=localhost;Username=myUser;Password=myPass;Database=myDatabase 


NoNewPrivileges=true 
PrivateTmp=true 
InaccessibleDirectories=/sys /srv -/opt /media -/lost+found 
ReadWriteDirectories=/var/www/myapp 
WorkingDirectory=/var/www/myapp 
ExecStart=/opt/dotnet/dotnet run 


[Install] 
WantedBy=multi-user.target 

फ़ाइल /etc/systemd/system निर्देशिका में चला जाता है और नाम पर है जो कुछ भी आप इसे बाद ".service" के साथ सेवा का नाम करना चाहते हैं। उदाहरण के लिए, पूरा पथ /etc/systemd/system/aspnet-example.service हो सकता है।

आप systemctl start aspnet-example और systemctl stop aspnet-example के साथ सेवा शुरू और बंद कर सकते हैं।

सेट करने के लिए

बूट पर शुरू करने के लिए सेवा: systemctl enable aspnet-example

मुख्य बातों विन्यास फाइल में बताते हैं:

  • उपयोगकर्ता और समूह जड़ नहीं होना चाहिए। मैं एक नया उपयोगकर्ता बनाने की सलाह देता हूं जिसके अंतर्गत आपके एप्लिकेशन चलते हैं।

  • KillMode = नियंत्रण समूह, ताकि एक SIGTERM सभी डॉटनैट प्रक्रियाओं है जिसके तहत सेवा से चलाया जाता है करने के लिए भेजा जाता है निर्धारित है।

  • ReadWriteDirectory और WorkingDirectory आपके वेब एप्लिकेशन की जड़ पर इंगित करता है। मैंने उदाहरण के रूप में /var/www/myapp का उपयोग किया है।

  • ExecStart डॉटनेट बाइनरी के लिए एक पूर्ण पथ होना चाहिए। Systemd सापेक्ष पथ का समर्थन नहीं करता है।

संपादित करें: एक बात जो मैं उल्लेख करना भूल गया था वह यह है कि मैं आम तौर पर अपने अनुप्रयोगों के सामने एक रिवर्स प्रॉक्सी के रूप में nginx चलाता हूं। मैंने एक लिंक शामिल किया है जिसमें लिनक्स उत्पादन सर्वर को प्रकाशित करने के बारे में अधिक जानकारी है।

https://docs.asp.net/en/latest/publishing/linuxproduction.html

संबंधित मुद्दे