Asp.Net專案釋出 到 IIS、 Core3.1 釋出到 IIS CentOS8.x

魏楊楊發表於2020-07-31

摘要:釋出專案到IIS或者.Net Core 專案釋出到IIS伺服器或者CentOS記錄一下,後面忘了又來看看。

1、伺服器安裝IIS

1.1、不管你是本地的電腦還是網上購買的伺服器,只要是能通過遠端桌面登入進去的。裝的系統是Windows的。開啟控制皮膚找到程式,點選《啟動或關閉Windows》功能

 1.2、遠端伺服器還可以開啟伺服器管理器開啟,在這裡安裝IIS需要的一些功能本地伺服器跟遠端都在下面展示

 1.3、選擇完點選下一步,從網際網路選擇更新等待安裝,安裝好了最好重啟一下。重啟好了。開啟控制皮膚----管理工具--------IIS管理器 看圖是下一個不是上一個  建議右擊儲存到開始螢幕後面好找

1.5、 開啟右擊網站,新增網站,如下圖所示,網站名字就是一個命名,應用程式可以共用一個也可以新建,後面還要配置應用程式池,一般選擇整合的型別,.Net 專案(除了Core)選擇.NET CLR v4.xxx的版本,如果沒有,就是安裝功能的時候你沒有新增。

 

 執行起來就算只有一個Index.html檔案都能訪問。如果沒有出來考慮一下錯誤

1、網站沒有許可權,你要點選網站下面你建立的那個網站授權。授予IIS的權利;

2、.Net CRL版本過低了現在有的.Netfarnwork都用了4.8了IIS上面不支援了那麼高的,還要自行安裝;

3、埠沒有開放,遠端伺服器的埠要去控制檯自己開的,我的是阿里雲,就要上控制檯管理出站入站規則裡面新增出站、進站規則;

4、防火牆的問題,關了試試;

5、目錄瀏覽開啟了,需要關閉

我遇到的問題暫時只能想到這幾個,萬事開頭難,建議還是用一個靜態網頁先試試慢慢排查。

2、.Net Core3.1釋出IIS

 .2.1、Net Core3.1 釋出到IIS要安裝兩個工具  aspnetcore-runtime  跟 dotnet-hosing

 

 

SDK下載也是在這裡開發環境用的。我用的VS2019 釋出的釋出為資料夾的格式然後拷貝到伺服器上面一樣的 右擊網站---新增網站: 

 

注意:

1、這裡的應用程式池要改為.NET CLR版本選擇無託管程式碼;

2、如果安裝了dotnet-hosing其他的專案啟動503 就安裝這個  https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145 

3、https訪問

個人的話建議申請一個免費的,我的是阿里雲的 一年申請一次,然後下載證書繫結在網站上。一般都是80預設的埠才加證書用https訪問的右擊網站下面的埠80的網站名稱 -------編輯繫結-------型別選擇https 下面就有SSL證書新增進去。

一般這裡寫小程式的API就需要這種https的安全連線 哈哈。要把443埠對映到80埠上自行度娘就不在累贅了。

4、Core 3.1 WebApi 部署到CentOS 8.x上

我的是CentOS8的系統,首先要連線linux就要有工具  下載xsheel《 http://www.yijianlan.com:8040/Home/Down?id=6025 》我自己的伺服器有點慢哦;或者去官方下載我就不找連結了

 

4.2、安裝Core3.1 執行環境.net core runtime  如果伺服器只是用來執行core 程式安裝這個就可以了。如果要做開發和編譯工作,則需要安裝.net core sdk.net core sdk包含了.net core runtime,所以這裡就直接安裝.net core skd了  。

執行命令:  sudo yum install dotnet-sdk-3.1       安裝.net core 3.1 sdk

4.3、用VS2019建立一個Core3.1 釋出到資料夾,然後開啟xftp或者點選這個新建檔案傳輸吧編譯好的檔案上傳

一般我都是在這個裡面新建一個檔案吧釋出好的直接貼上進去  我這裡是開啟api進去貼上的

 

 

執行命令 找打專案的目錄 並找到 專案名.dll這個檔案 用dotnet 執行

 預設就是5000埠開啟 是打不開的 報錯Unable to bind to http://localhost:5000 on the IPv6 loopback interface: 'Cannot assign requested address'.” 這沒必要擔心也不用糾結5000埠用不了指定另一個埠就行了

開啟專案的Program。cs檔案編輯  我這裡改了8020埠 當然改了埠要在系統裡面開放埠,還有在伺服器控制檯開啟埠不要忘了

public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseUrls("http://*:8020")
                    .UseStartup<Startup>();
                });
    }

 補充一點命令 後面用到直接來拿:

firewall-cmd --zone=public --add-port=8020/tcp --permanent   # 開放8020埠

firewall-cmd --zone=public --list-ports                                             #檢視防火牆所有開放的埠

firewall-cmd --reload        # 配置立即生效

sudo systemctl start firewalld         #開啟防火牆

systemctl stop firewalld.service             #關閉防火牆

firewall-cmd --state   #檢視防火牆狀態

shutdown -r now             #立刻重啟(root使用者使用)

4.4 新增nginx做反向代理

  1 使用命令 sudo yum install epel-release      新增nginx包儲存庫

  2 使用命令 sudo yum install nginx       安裝nginx

  3 使用命令 sudo systemctl start nginx 啟動nginx

  4 使用命令 ps -ef |grep nginx 驗證nginx是否啟動成功

     5 可以使用命令 sudo systemctl enable nginx 設定nginx開機啟動

   6 使用命令 sudo systemctl start nginx重啟nginx

4.5  配置nginx,設定代理埠

 訪問 8020 埠是可以的

 

4.6 新增守護程式

為什麼要新增守護程式,有以下原因

  1 asp.net core程式執行在shell中,shell關閉會導致該web應用關閉

  2 應用程式意外終止的話需要在shell裡重新啟動

  3 伺服器當機或者意外重啟的話,需要重新啟動shell,然後重新啟動web程式

4.7使用守護程式supervisor

  1)相關命令

  1 使用命令 yum install epel-release 和 yum install supervisor 安裝supervisor

  2 使用命令 systemctl start supervisord.service 啟動服務

  3 使用命令 systemctl status supervisord.service 檢視服務狀態

  4 設定開機啟動 systemctl enable supervisord.service

  5 重啟 supervisorctl reload

  2)檔案配置

  1 在 /etc/supervisord.d 建立檔案 WebApplication1.ini

  2 配置 WebApplication1.ini 如下

4.8 備註

1) nginx.conf配置

server {
        listen 8081;
        location / {
            proxy_pass http://localhost:8090;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection keep-alive;
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }
    }

1) MyBuy.Api.ini配置

[program: MyBuy.Api]  ;程式的名稱
command = dotnet  MyBuy.Api.dll ;執行的命令
directory = /var/WebApplication/ ;命令執行的目錄
environment = ASPNETCORE__ENVIRONMENT=Production  ;環境變數
user = root  ;執行程式的使用者
stopsignal = INT  
autostart = true  ;是否自動啟動
autorestart = true  ;是否自動重啟
startsecs = 1  ;自動重啟間隔
stderr_logfile = /var/log/WebApplication1.err.log  ;標準錯誤日誌
stdout_logfile = /var/log/WebApplication1.out.log  ;標準輸出日誌

5、總結

折騰了半天,伺服器換了好幾個系統了哈哈重要折騰出來了,雖然用的少,多得都在擼碼,記錄一下長點記憶。知識就是慢慢積累起來只有一步一步的來。離三十歲又近了一步哈哈。

每日一句:千里煙雲,是誰留下的孤寂年華?誰人在他的盡頭畫上愛的符號,聆聽千古不變的亙古傳情佳話?流水無情,落花有意,你輕快的步伐,帶走了多少人間絕美佳話?任相思成河,從此流盡迢迢山水,走遍氤氳天下。

本文連結:https://www.cnblogs.com/w5942066/p/13411646.html

 

相關文章