第1篇:aspnetcore,webapi專案打包釋出,以.net7為例

似梦亦非梦發表於2024-08-18

1.打包專案,開啟visual studio
專案是ChenShiBao.AspNetCore7.0,釋出成功並上傳服務,啟動服務以這個ChenShiBao.AspNetCore7.0.dll為準

1.1 生成釋出包

1.2 選擇釋出形式

2.在終端利用scp指令將本地已釋出的應用傳到linux服務上,【或透過第三方工具xshell上傳發布包】
終端命令:scp -r 本地已釋出的專案地址 目標伺服器的專案地址
示例:scp -r e:\定時服務\chenshibao.aspnetcore7.0\publish 伺服器使用者@伺服器名稱或伺服器ip地址:/root/project/release/webapi/aspnetcore7.0

3.linux伺服器上安裝net7.0的執行時環境【環境已有就不用再安裝】:
示例:sudo yum install dotnet-runtime-7.0
示例:sudo yum install dotnet-sdk-7.0

4.啟動webapi服務
dotnet 伺服器上的專案路徑/chenshibao.aspnetcore7.0.dll
示例:dotnet project/release/webapi/aspnetcore7.0/publish/ChenShiBao.AspNetCore7.0.dll

5.成功啟動專案,終端開啟
出現以下標誌說明服務已經正常啟動

6.關閉終端:
直接鍵盤ctrl + C;

7.要想服務在程序中執行,即使你退出終端或斷開 SSH 連線,程序仍然會繼續執行,可執行以下命令:
命令:nohup dotnet ChenShiBao.AspNetCore7.0.dll &

8.關閉服務,可以找到服務對應的程序id,透過程序id關閉:
查詢dotnet相關的程序命令:ps -ef | grep dotnet 或 ps aux | grep dotnet
執行關閉命令:kill -9 2303540

9.CentOS上配置nginx代理
第一步:安裝nginx:
sudo yum install nginx
第二步:啟動和管理nginx:
sudo systemctl start nginx
設定開機自動啟動:
sudo systemctl enable nginx

第三步:檢查nginx狀態
sudo systemctl status nginx

10.使用https【不是一定要配置,如果配置ssl安全證書,繫結到域名,需要先做DNS域名解析,使得域名和伺服器公網的ip地址繫結,具體配置可以參考阿里雲或騰訊雲域名解析流程】
第一步:首先安裝 Certbot:
sudo yum install certbot python3-certbot-nginx
第二步:然後使用 Certbot 獲取 SSL 證書並配置 Nginx:
sudo certbot --nginx -d your_domain_or_ip

第三步:更新nginx配置
Certbot 會自動更新你的 Nginx 配置檔案以使用生成的 SSL 證書。如果你手動配置,可以在 Nginx 配置檔案中新增類似以下內容:

11.配置nginx作為反向代理
第一步:可以建一個配置檔案來設定反向代理
sudo nano /etc/nginx/conf.d/ChenShiBao.AspNetCore7.0.conf

  在新建的配置檔案ChenShiBao.AspNetCore7.0.conf配置以下內容:
    server {
      listen 5000;
      server_name your_domain_or_ip;
      #listen 443 ssl; #有安全ssl安全認證才設定
      #server_name xxx;  # 將此處替換為你的域名或伺服器的 IP 地址
	  ##SSL 證書和金鑰檔案的位置
	  #ssl_certificate /etc/letsencrypt/live/csbneter.club/fullchain.pem; #有安全ssl安全認證才設定
	  #ssl_certificate_key /etc/letsencrypt/live/csbneter.club/privkey.pem; #有安全ssl安全認證才設定

      location / {
          proxy_pass http://localhost:5000;  # 轉發到你的ASP.NET Core應用程式
          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;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
      }
    }
  將 your_domain_or_ip 替換為你的域名或伺服器的 IP 地址。

第二步:測試nginx配置
  sudo nginx -t
  如果配置檔案沒有錯誤,你會看到 syntax is ok 和 test is successful 的資訊。

第三步:重新載入nginx:
  sudo systemctl reload nginx

第四步:編輯nginx配置檔案
  開啟 Nginx 主配置檔案 /etc/nginx/nginx.conf 或你正在使用的虛擬主機配置檔案:
  sudo vim /etc/nginx/nginx.conf

  在nginx.conf配置下面內容:
  http {
      # 增加這些指令
      client_max_body_size 10M;
      large_client_header_buffers 4 16k;
  }

儲存完後,再次執行第二,三步;

第五步:伺服器上設定安全組和防火牆,允許埠訪問;


這裡的埠設定,需要與nginx監聽的埠一致才可以,只有這樣才能從外部的請求訪問,這個地址和埠,透過nginx代理轉發到伺服器本地的應用程式上;
伺服器上的應用程式的埠與nginx的監聽埠是不一致的;
例如:nginx監聽埠是1000,那應用程式的埠就得設定為其他埠;

常用命令:
檢視哪些程序使用哪個埠:sudo lsof -i :5000
殺死某個程序:kill -9 程序id;
確認應用程式在哪個埠上執行:sudo netstat -tulnp | grep dotnet
檢視nginx的error.log:sudo tail -f /var/log/nginx/error.log
開啟nginx:sudo systemctl start nginx
停止nginx:sudo systemctl stop nginx
重新載入配置:sudo systemctl reload nginx或sudo service nginx reload

相關文章