.NET6 C#, LineBot, Line Messaging API, C#, dotnet core
在上一篇我們成功在 server 上執行 .net core 專案後,接著這一篇我們要透過系統的服務管理工具(systemd)來啟動 kestrel 。唯有這樣子才能讓系統在無人看管的狀態下,重開機之後還能自動執行相關的指令。 (*應該...不會有人想要時時刻刻陪著主機...吧)
一開始先簡單介紹一下什麼是 systemd,systemd 是 Linux 現在常用的內建服務管理工具,透過它可以有效的管理伺服器上的各個服務,只要寫好相對應文件,就可以透過簡易的指令來控制服務 (> systemctl start 專案名稱.service ),不管是 .net 或是 java 寫出來的程式都可以包裝成系統的背景服務喔 ~
接著我們就開始來設定囉!
開始之前我們先了解一下 systemd 的常用的指令,以及文件放置位置
systemd 配置文件主要會分為三個區塊 [Unit][Service][Install],三個區塊裡面分別可以透過指令做不同的設定,接著我們就針對常見的指令說明一下用途。
了解基本的 systemd 文件指令的應用後,我們就可以開始來寫我們的 kestrel 配置文件,大家可以參考下方程式碼
[Unit]
Description=LinePoc
[Service]
Environment=ASPNETCORE_ENVIRONMENT=Staging
WorkingDirectory=/home/admin/LinePoc
ExecStart=/usr/bin/dotnet /home/admin/LinePoc/LinePoc.dll --urls http://0.0.0.0:5001
Restart=always
RestartSec=10
SyslogIdentifier=LinePoc
User=root
[Install]
WantedBy=multi-user.target
Step 1 : 我們將上方指令放到 /etc/systemd/system/ 目錄下
Step 2 : 透過指令來更新狀態
> sudo systemctl daemon-reload
Step 3 : 透過指令來啟動服務
> sudo systemctl start LinePoc.service
Step 4 : 最後我們可以透過 下面的指令來確認服務是否成功啟動~
> sudo systemctl status LinePoc.service
如果各位都有看到如上圖的執行結果,代表我們已經完成 systemd 的配置囉。透過 systemd 除了可以統一管理服務外,我們啟動服務需設定的一些參數指令也都可以直接寫在配置文件中,也可以讓我們可以更好的維護 server 上的專案~
在完成 .net 6 api 專案 server 安裝及設定後,接著我們也必須將前端頁面安裝到 server 上,這邊我們會使用的是 nginx (web)的服務,下一篇會接著介紹 nginx 的安裝與前端網頁的部署 ~ 咱們下篇見 !