1. 程式人生 > 其它 >.net core 部署到 linux

.net core 部署到 linux

1 在專案中新增 hosting.json 檔案用來配置埠,內容如下

{ "urls": "http://*:12306" }

修改 Program.cs 檔案 Main 方法如下

        public static void Main(string[] args)
        {
            var config = new ConfigurationBuilder()
                .SetBasePath(Directory.GetCurrentDirectory())
                .AddJsonFile("hosting.json
", optional: true) .Build(); var host = new WebHostBuilder() .UseKestrel() .UseConfiguration(config) .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .Build(); host.Run(); }

這樣釋出埠就設定為 12306

2 使用vs釋出功能生成釋出包,專案框架為 .net core 5.0

3 在linux伺服器上安裝對應版本的執行時

如 centos 安裝執行時命令

sudo dnf install aspnetcore-runtime-5.0

微軟文件https://docs.microsoft.com/zh-cn/dotnet/core/install/linux

4 把釋出包複製到 linux 的某個目錄下 如 /publish/publish.test

4 在 linux 終端上,進入到該路徑下(即 /publish/publish.test),然後使用 dotnet publish.test.dll 命令就可以啟動 asp.net core 應用了

這時可以直接訪問網站了,url 格式 linux伺服器ip:12306

5 在linux伺服器上安裝 supervisor 守護程序

之前的啟動方式,一旦我們推出了bash,網站也停止了,所以我們在linux安裝 supervisor 來託管我們的網站,

5.1 依次執行如下命令安裝並配置supervisor

yum install supervisor

mkdir /etc/supervisor

echo_supervisord_conf > /etc/supervisor/supervisord.conf

5.2 新增本網站配置檔案

在/etc/supervisor目錄下建立目錄conf.d,在目錄下建立網站配置檔案publishTest.conf,檔案內容如下

[program:publishTest]
command=dotnet publish.test.dll
directory=/publish/publish.test
autorestart=true
stderr_logfile=/var/log/publishTest.err.log
stdout_logfile=/var/log/publishTest.out.log 
environment=ASPNETCORE_ENVIRONMENT=Production 
user=root
stopsignal=INT

修改supervisord.conf檔案讀取網站配置,將檔案最後的 include 內容修改如下:

[include]
files=/etc/supervisor/conf.d/*.conf   ;files = relative/directory/*.ini

6 啟動 supervisor

啟動命令如下

supervisord -c /etc/supervisor/supervisord.conf

在啟動時如果報錯Another program is already listenling on a port that .......

解決方法
ps -ef | grep supervisord
然後 kill -9 執行緒

7 修改supervisord.conf 檔案中inet_http_server配置節,啟用web頁面管理

修改內容如下

開啟瀏覽器,輸入地址 伺服器ip:22222 訪問supervisor管理端,使用者名稱 為 user 密碼為123