Asp.NetCore輕鬆學-使用Supervisor進行托管部署

来源:https://www.cnblogs.com/viter/archive/2019/02/27/10441409.html
-Advertisement-
Play Games

本文從零開始介紹如何使用 Supervisor,一步一步的從安裝環境到編寫托管服務文件,設置執行文件、執行文件目錄、日誌輸出配置等細節,最終成功將 .NET Core 應用程式托管到了 Supervisor 中 ...


前言

上一篇文章 Asp.NetCore輕鬆學-部署到 Linux 進行托管 介紹瞭如何在 Centos 上部署自托管的 .NET Core 應用程式,接下來的內容就是介紹如何使用第三方任務管理程式來托管 .NET Core 應用程式,這裡以筆者常用的 Supervisor 為例子,從安裝環境開始,一步一步的進入 Linux 的世界,部署程式還是以上一篇的項目文件 Deploy.Linux 為基礎。

1. 安裝前置條件

Centos 和 ubuntu 下,安裝 supervisor 的步驟有所不同,在 Centos 下,需要先添加 Centos 下的擴展包源,

1.1 安裝 Centos 擴展源
sudo yum install epel-release

1.2. 安裝 supervisor
sudo yum install supervisor
  • ubuntu 下使用 apt-get install supervisor 進行安裝
1.3 supervisor 安裝完成
  • 輸入supervisord --version 查看安裝已完成,

註意是 supervisord 後面多了一個字元:d,因為安裝的服務名稱是:supervisord.service,通過命令查看服務文件可知道

cat /usr/lib/systemd/system/supervisord.service  

1.4 設置 supervisor 開機啟動
sudo systemctl enable supervisord
sudo systemctl start supervisord
1.5 進入 supervisor 控制台執行命令
sudo supervisorctl

進入 supervisor 控制台,表示服務安裝成功,並已成功啟動

2. 創建 supervisor 托管的 .NET Core 的服務配置文件

2.1 查看配置文件目錄

通過查看 cat /etc/supervisord.conf 看到 supervisor 引入配置文件的指定目錄為

[include]
files = supervisord.d/*.ini

可以看到,預設的托管服務配置文件目錄在 supervisord.d/ 下麵,這個目錄的完整地址是 /etc/supervisord.d/

2.2 建立配置文件 demo.ini

關於 supervisor 配置文件的含義,這裡不做過多的解釋,可移步官網查看幫助文檔:http://www.supervisord.org/configuration.html,我們在這裡只做一個最簡單的配置文件,剛好夠啟動 .NET Core 應用程式即可

[program:demo]
command=/usr/bin/dotnet  Deploy.Linux.dll ; 輸入執行命令,這裡表示 dotnet  Deploy.Linux.dll
directory=/data/sites/demo/publish ; 應用程式根目錄 
autostart=true ; 是否自動啟動,當 supervisor 載入該配置文件的時候立即啟動它 
autorestart=true ; 是否自動重啟,當執行 dotnet  Deploy.Linux.dll 啟動失敗時,會重覆的自動重啟 
logfile_maxbytes=50MB ; 該配置文件輸出單個日誌文件的大小 
logfile_backups=10 ; 日誌備份個數 
loglevel=info ; 記錄日誌級別 
stderr_logfile=/data/logs/demo/demo.err.log ; 指定標準錯誤輸出日誌文件 
stdout_logfile=/data/logs/demo/demo.out.log ; 指定標準輸出日誌文件 
environment=ASPNETCORE_ENVIRONMENT=Production ; 可配置環境變數,該環境變數將通過執行 dotnet  Deploy.Linux.dll 命令的時候傳入到 .NET Core 應用程式中  
user=root ;啟動服務的用戶  
stopsignal=INT
redirect_stderr=true
  • 上麵包含了幾個關鍵的參數,都在註釋中了,接下來建立日誌目錄,否則服務啟動出錯,輸入命令
2.3 創建日誌文件目錄
sudo mkdir -p /data/logs/demo
2.4 重啟 supervisor 服務,併進入 supervisorctl
sudo systemctl restart supervisord
sudo supervisorctl

2.5 查看服務狀態

輸入站點地址:http://139.219.9.102/ 查看服務已正常啟動

2.6 查看日誌輸出

查看日誌輸出,定位到目錄 /data/logs/demo 查看日誌文件內容正常

結束語

本文從零開始介紹如何使用 Supervisor,一步一步的從安裝環境到編寫托管服務文件,設置執行文件、執行文件目錄、日誌輸出配置等細節,最終成功將 .NET Core 應用程式托管到了 Supervisor 中,文中都是通過命令形式進行安裝部署,對於接觸 Linux 比較少的同學來說,可能有些不適應,不過不要緊,這些都是很基礎的命令,我們呢,就是要多學多用,達到熟悉和強化記憶,然後平滑過渡到 Linux 平臺。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 對於後臺管理工具,會根據員工的角色不同,從而擁有不同的許可權,所能訪問的頁面不同,首先要給員工分配角色,然後再給角色分配權力,這樣就完成了許可權分配。其實基於stark組件做的許可權管理,我們可以一個一個頁面的去完成許可權分配,但其實我們有更好的方法去實現,把員工、角色、權力都放在一個頁面上,一目瞭然的查看 ...
  • 導師企鵝-359213571如果你此刻十分困難,不要灰心,放平心態,先想想此刻對你來說,到底什麼最為重要,是技術還是本金,是心態還是人脈,把自己梳理清晰,然後設定好步驟,不要慌不要亂,天無絕人之路,勇敢的站起來,你可以的。技術可以通過學習獲得,經驗可以通過實戰得到,心態可以通過調節增強,每一個人都不 ...
  • 題目描述給出兩個 非空 的鏈表用來表示兩個非負的整數。其中,它們各自的位數是按照 逆序 的方式存儲的,並且它們的每個節點只能存儲 一位 數字。如果,我們將這兩個數相加起來,則會返回一個新的鏈表來表示它們的和。您可以假設除了數字 0 之外,這兩個數都不會以 0 開頭。示例:輸入:(2 -> 4 -> ... ...
  • 導師(359213571)曾經軟體計劃10連中,我跟第一把就死;我在想我到底是有多背?這麼小的幾率都能被我趕上?後來想了很多,想明白了一個問題,我們是在賭,也就是在賭運氣,而運氣有好的時候也有壞的 時候,都是有一定概率的,可能我們每次都投機取巧的中了,但是終究逃不過會有掛的那一天, 而那一天可能會讓 ...
  • 導師359213571如果你是剛剛玩,我來教教你,如果你已經玩很久了,卻不穩,我來拉拉你,如果你已經遍體鱗傷,我來幫幫你. 我不能保證你一夜致富但希望能細水長流,匯聚江海,先要平穩的心態,不要一盤的失誤影響你心情。 自己有規劃性和目標性。做到這兩點,過來找我我來幫你。 1、死跟計劃。現在很多群里都有 ...
  • 在日常的日誌解析當中,我們可能需要實現對日誌中的某一特殊段進行信息的過濾, 下麵介紹一下我的常用方法。 針對這個日誌輸出信息,其實我主要關註的是下麵這個日誌段內的信息 那麼其實我就是想獲取含有'loops-fast'這個字元串的數據,而過濾掉其他的干擾數據,我分為以下幾個步驟實現 首先要確定邊界值, ...
  • 基本代碼結構 url.py: views.py: 說明: has_permission方法的返回值是布爾類型,True表示許可權通過,False表示許可權拒絕 上面的基本結構是做局部的類的許可權判斷方式,全局許可權判斷後文介紹。 permission_classes屬性變數同樣也是一個列表,列表元素是許可權判 ...
  • 題意 "題目鏈接" Sol 這題想還是不難想的,就是寫起來很麻煩,然後去看了一下loj的最短代碼表示只能Orz 首先不難發現一條性質:能夠選擇的區間一定是不斷收縮的,而且新的可選區間一定是舊區間的某個位置劃分而來的。 比如$A_{i 1} = x$,此時小於$x$的最大數為$l_{i 1}$,大於$ ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...