環境
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”即可