.Net Core - 使用Supervisor進行托管部署


環境

CentOS 7 x64,詳見 安裝CentOS7虛擬機

.Net Core 2.1.801 詳見 CentOS 7 下安裝.NET Core SDK 2.1

ftp  詳見  CentOS7 FTP安裝與配置

輔助工具

Xftp上傳文件到CentOS

PuTTY工具連接CentOS, 安裝包下載

一、安裝配置supervisor  

如果需要卸載supervisor 執行:

yum remove supervisor

 查看是否已卸載(查看supervisor版本)

supervisord -v

1.執行下列命令安裝supervisor

wget https://mirrors.tuna.tsinghua.edu.cn/epel/epel-release-latest-7.noarch.rpm
rpm -ivh epel-release-latest-7.noarch.rpm
yum install supervisor -y

如報“-bash: wget: 未找到命令”,則先安裝一下 yum 命令,再執行上面的命令

yum -y install wget

2.查看版本,檢驗是否安裝成功

supervisord -v

3.配置

修改supervisor配置文件

vim /etc/supervisord.conf

修改以下幾行

#啟用訪問web控制界面,inet_http_server區段修改為 [inet_http_server] port=*:9001 #設置賬戶和密碼 username=user password=123 #include區段 [include] files = supervisord.d/*.ini

 

 

4.啟動supervisord服務

開機自動啟動

sudo systemctl enable supervisord

啟動

sudo systemctl start supervisord

其他命令:

如果修改了supervisor.service文件,可以通過reload命令來重新加載配置文件

systemctl reload supervisord

5.防火牆設置

開放端口

firewall-cmd --zone=public --add-port=9001/tcp --permanent

重啟防火牆

firewall-cmd --reload

6.輸入 http://ip:9001,提示需要輸入密碼,用戶名為user,密碼123

 

二、部署.net core 2.1項目

1.准備好.net core項目

 

 

 添加host.json文件,設置端口號(可以改成其他端口號)

   

{ "url": "http://*:2222" }

 修改Program.cs

  

 public static IWebHostBuilder CreateWebHostBuilder(string[] args) { var configuration = new ConfigurationBuilder().SetBasePath(Environment.CurrentDirectory) .AddJsonFile("host.json") .Build(); var url = configuration["url"]; return WebHost.CreateDefaultBuilder(args).UseUrls(url).UseStartup<Startup>(); }

確保你的項目運行正常

2.發布

發布前,先修改“HelloWeb.csproj.user”文件,加上如下內容(你也可以不用加,發布過一次才看得到這個文件):

 

 

<MvcRazorCompileOnPublish>False</MvcRazorCompileOnPublish>

 右鍵項目->發布 

 

  不加“<MvcRazorCompileOnPublish>False</MvcRazorCompileOnPublish>”的發布效果 

 

 加“<MvcRazorCompileOnPublish>False</MvcRazorCompileOnPublish>”的發布效果

本文發布方式使用了加“<MvcRazorCompileOnPublish>False</MvcRazorCompileOnPublish>” 

3.使用ftp工具上傳到CentOS服務器,這里使用Xftp工具上傳

新建文件夾“helloweb”

  

復制已發布的文件到helloweb

 

4.檢測文件是否可正常運行

cd /home/vsftpd/admin/helloweb
ls

 用dotnet命令運行項目

dotnet HelloWeb.dll

如出現上面提示則表示可以正常運行

按Ctrl+C退出來

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

切換到supervisor的統一配置目錄,注意這里的supervisord多了個“d”

cd /etc/supervisord.d

創建配置文件helloweb.ini (注意后綴為.ini,與上面配置supervisor的第3點的include區段的文件后綴設置一致

vim helloweb.ini
[program:helloweb] command=/usr/bin/dotnet HelloWeb.dll ; 輸入執行命令,這里表示 dotnet HelloWeb.dll directory=/home/vsftpd/admin/helloweb ; 應用程序根目錄 autostart=true ; 是否自動啟動,當 supervisor 加載該配置文件的時候立即啟動它 autorestart=true ; 是否自動重啟,當執行 dotnet Deploy.Linux.dll 啟動失敗時,會重復的自動重啟 logfile_maxbytes=50MB ; 該配置文件輸出單個日志文件的大小 logfile_backups=10 ; 日志備份個數 loglevel=info ; 記錄日志級別 stderr_logfile=/home/vsftpd/admin/helloweb/helloweb.err.log ; 指定標准錯誤輸出日志文件,前面的目錄可改成其他的,但要確保該目錄已存在 stdout_logfile=/home/vsftpd/admin/helloweb/helloweb.out.log ; 指定標准輸出日志文件 ,前面的目錄可改成其他的,但要確保該目錄已存在 
environment
=ASPNETCORE_ENVIRONMENT=Production ; 可配置環境變量,該環境變量將通過執行 dotnet HelloWeb.dll 命令的時候傳入到 .NET Core 應用程序中 user=root ;啟動服務的用戶 stopsignal=INT redirect_stderr=true

重啟supervisord服務,重新加載配置

sudo systemctl restart supervisord

6.防火牆設置

開放端口:

firewall-cmd --zone=public --add-port=2222/tcp --permanent

重啟防火牆:

firewall-cmd --reload

7.重新訪問Supervisor,輸入 http://ip:9001

出現綠色的“running”表示成功,名稱“helloweb”就是剛剛的helloweb.ini配置中的[program:helloweb] 的program:后面定義的名稱

  

訪問helloweb的站點網址:http://ip:2222

8.更新部署

如果需更新 dll文件,復制dll覆蓋原dll后,點一下“Restart”即可

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM