在種草了很多天之後,最近終於在淘寶下單了友善 nanoPi R5S。 選擇友善 nanoPi R5S 有兩點主要理由: 1. 自帶 EMMC 存儲,可以使用 RockChip 提供的 MaskRom 模式直接連線燒系統,不依賴 TF 卡(我覺得 TF 卡太累贅了,買普通的又慢又不穩定,對於我這種新手 ...
Linux部署-Net並配置進程守護
註冊 Microsoft 簽名密鑰並添加 Microsoft 產品提要
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft-com-prod \nbaseurl= https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'
安裝 .NET SDK
sudo yum update
sudo yum install libunwind libicu
sudo yum install dotnet-sdk-6.0.0 #最新版本請關註官網
註意你自己項目的版本 我選擇的項目版本是2.1.1 然後我執行的命令就是 sudo yum install dotnet-sdk-2.1 兩步即可完成 .NET Core SDK 在 CentOS7 系統下的安裝,最後可執行一下命令dotnet --version,如果正常輸出版本號則說明安裝沒有出現問題。 Linux 其他發行版安裝 .NET Core SDK 教程請參見官方教程 Get started with .NET in 10 minutes。 dotnet --version
部署運行
文件傳輸到伺服器/home/wwwroot文件夾 (文件夾根據需要調整)
cd 文件夾路徑
dotnet 項目名稱 如 : dotnet WebApplication1.dll
配置Nginx
SELinux 保護機制所導致,我們需要將 Nginx 添加至 SELinux 的白名單
yum install policycoreutils-python
sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
sudo semodule -i mynginx.pp
Supervisor 配置守護進程
安裝
sudo yum -y install epel-release
sudo yum -y install supervisor
supervisord -c /etc/supervisord.conf 啟動supervisord並使用配置
安裝完成之後,在
/ect/supervisor/conf.d/
目錄下新建一個配置文件(touch HelloWebApp.conf
),取名為HelloWebApp.conf
conf文件示例
[program:HelloWebApp]
command=dotnet HelloWebApp.dll #要執行的命令
directory=/home/yxd/Workspace/publish #命令執行的目錄
environment=ASPNETCORE__ENVIRONMENT=Production #環境變數
user=www-data #進程執行的用戶身份
stopsignal=INT
autostart=true #是否自動啟動
autorestart=true #是否自動重啟
startsecs=1 #自動重啟間隔
stderr_logfile=/var/log/HelloWebApp.err.log #標準錯誤日誌
stdout_logfile=/var/log/HelloWebApp.out.log #標準輸出日誌
====================================================================================================================
#配置程式名稱
[program:Cloud.Api]
#運行程式的命令
command=dotnet Cloud.Api.dll --urls="http://*:5000;http://*:5001"
#命令執行的目錄
directory=/home/www/server-api
#進程環境變數
environment=ASPNETCORE_ENVIRONMENT=Production
#進程執行的用戶身份
user=root
#進程停止信號,可以為TERM, HUP, INT, QUIT, KILL, USR1, or USR2等信號預設為TERM 。當用設定的信號去幹掉進程,退出碼會被認為是expected,非必須設置
stopsignal=INT
#如果是true的話,子進程將在supervisord啟動後被自動啟動,預設就是true,非必須設置
autostart=true
#這個是設置子進程掛掉後自動重啟的情況,有三個選項,false,unexpected和true。如果為false的時候,無論什麼情況下,都不會被重新啟動,如果為unexpected,只有當進程的退出碼不在下麵的exitcodes裡面定義的退出碼的時>
候,才會被自動重啟。當為true的時候,只要子進程掛掉,將會被無條件的重啟
autorestart=true
#這個選項是子進程啟動多少秒之後,此時狀態如果是running,則我們認為啟動成功了,預設值為1 。非必須設置
startsecs=2
#錯誤日誌文件
#stderr_logfile=/var/log/DemoNetCore.err.log
#輸出日誌文件
#stdout_logfile=/var/log/DemoNetCore.out.log
重新載入配置或者直接重啟supervisor 服務
sudo supervisorctl shutdown && sudo supervisord -c /etc/supervisor/supervisord.conf
sudo service supervisor stop
sudo service supervisor start
https://blog.csdn.net/xyf_1995/article/details/105555835
參考博客
常用指令
supervisorctl status //查看所有進程的狀態
supervisorctl update //配置文件修改後使用該命令載入新的配置
supervisorctl reload //重新啟動配置中的所有程式
supervisorctl restart <application name> //重啟指定應用
supervisorctl stop <application name> //停止指定應用
supervisorctl start <application name> //啟動指定應用
supervisorctl restart all //重啟所有應用
supervisorctl stop all //停止所有應用
supervisorctl start all //啟動所有應用
踩坑
supervisord -c /etc/supervisord.conf
Error: Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.
find / -name supervisor.sock
unlink /run/supervisor/supervisor.sock
https://www.cnblogs.com/weihengblogs/p/13724349.html
參考博客