日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET Core 应用发布与部署指南

發布時間:2023/12/4 asp.net 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET Core 应用发布与部署指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、前言

本篇主要包含哪些內容?
  • 將項目發布到本地目錄

  • 將項目傳輸到服務器并配置啟動&開機自動啟動

  • 將Nginx作為訪問入口,配置反向代理

  • 本篇環境信息
    • 開發環境:

    用途工具&版本
    操作系統Windows 10
    開發工具Visual Studio 2017(15.7.5)
    SDK.NET Core SDK 2.1
    傳輸工具FlashFxp
    • 部署環境

    用途工具&版本
    Linux ServerCentOS 7
    SDK.NET Core SDK 2.1
    傳輸工具Vsftp
    反向代理Nginx 1.12.2
    準備工作
    • ASP.NET Core 示例項目

    項說明
    SDK.NET Core SDK 2.1
    項目模板ASP.NET Core Web App(MVC)
    項目名稱HelloWeb
    解決方案名稱HelloWeb
    解決方案根目錄D:\Projects\Test\HelloWeb

    項目創建完成后,需要修改Program.cs文件
    手動指定啟動的Url為:http://*:5000

    public class Program{ ? ?
    ?? ?public static void Main(string[] args) ? ?
    ? ? ?? ?
    {CreateWebHostBuilder(args).Build().Run();} ? ?
    ?? ?
    ?? ?public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>WebHost.CreateDefaultBuilder(args).UseStartup<Startup>().UseUrls("http://*:5000");}

    http://*:5000?可以兼容?http://localhost:5000,http://127.0.0.1:5000,http://所在機器ip:5000,方便我們部署到Linux Server后進行測試

    • CentOS 7 部署環境

    CentOS 7虛擬機安裝:https://ken.io/note/hyper-v-course-setup-centos

  • 部署FTP服務:https://ken.io/note/centos-quickstart-ftpserver

  • 部署 .NET Core SDK 2.1:https://ken.io/note/centos7-.netcore2.1-setup

  • 部署Nginx:https://ken.io/note/centos-quickstart-nginx-setup

  • 二、發布到本地

    1、命令行發布

    在cmd命令行操作

    #進入項目根目錄(HelloWeb.csproj所在目錄)d: && cd D:\Projects\Test\HelloWeb\HelloWeb#執行publish命令dotnet publish -c release#dotnet publish -h可以查看publish可選參數#-c release 表示以Release方式進行編譯
    2、Visual Studio圖形界面操作
    • 在項目的鼠標右鍵菜單中選擇:發布

    • 在左側選擇文件夾,并創建配置

    • 在發布操作面板中選擇發布即可

    3、本地運行測試

    發布完成后,可以在D:\Projects\Test\HelloWeb\HelloWeb\bin\Release\netcoreapp2.1\publish查看發布后的文件輸出。

    在cmd命令行操作:

    #進入發布輸出目錄d: && cd D:\Projects\Test\HelloWeb\HelloWeb\bin\Release\netcoreapp2.1\publish#啟動應用dotnet HelloWeb.dll#啟動成功會輸出以下信息Hosting environment: Production Content root path: D:\Projects\Test\HelloWeb\HelloWeb\bin\Release\netcoreapp2.1\publish Now listening on: http://[::]:5000 Application started. Press Ctrl+C to shut down.

    通過瀏覽器訪問:localhost:5000,驗證是否正常

    三、部署

    1、環境配置&啟動測試

    通過XShell連接到CentOS7服務器進行操作

    • 創建站點目錄并授權

    #創建站點根目錄sudo mkdir -p /webroot/helloweb#創建站點應用目錄sudo mkdir -p /webroot/helloweb/app#創建站點日志目錄sudo mkdir -p /webroot/helloweb/logs#目錄授權sudo chmod 777 /webroot/helloweb/app sudo chmod 777 /webroot/helloweb/logs
    • 開放端口

    #添加可訪問端口sudo firewall-cmd --add-port=5000/tcp --permanent#重新加載防火墻策略sudo firewall-cmd --reload
    • 啟動應用

    通過FTP將傳輸到/webroot/helloweb/app

    通過命令啟動:

    #進入app目錄并通過dotnet命令啟動站點cd /webroot/helloweb/app/ dotnet HelloWeb.dll#啟動成功后,將會輸出:Hosting environment: Production Content root path: /webroot Now listening on: http://[::]:5000 Application started. Press Ctrl+C to shut down.

    這時候通過瀏覽器訪問?http://{centos-ip}:5000即可

    如果網站樣式沒有被正常加載,那應該是訪問wwwroot下面的靜態文件時404了。
    這是因為 ASP.NET Core默認是以命令執行所在的目錄作為應用根目錄讀取文件的
    所以,一定要在HelloWeb.dll所在目錄執行dotnet命令,不然會讀取不到wwwroot目錄下的靜態文件

    2、配置啟動腳本

    顯示啟動的方式,如果關閉XShell的連接窗口,那這個應用的進行就被關掉了。所以可以用nohup命令啟動,腳本示例:

    nohup dotnet HelloWeb.dll &

    nohup由于是隱私啟動,那應用的關閉就要找到進程id后才能關閉,所以還是干脆配置啟動、停止腳本來操作更方便一些

    • 創建啟動腳本

    創建start.sh文件

    sudo vi /webroot/helloweb/start.sh

    腳本內容:

    #!/bin/shcd $(cd "$(dirname "$0")"; pwd) APP_NAME=HelloWeb.dllecho "start begin..."echo $APP_NAMEcd app nohup ?dotnet $APP_NAME >>../logs/info.log 2>>../logs/error.log &cd ..sleep 5if test $(pgrep -f $APP_NAME|wc -l) -eq 0thenecho "start failed"elseecho "start successed"fi
    • 創建停止腳本

    創建stop.sh文件

    sudo vi /webroot/helloweb/stop.sh

    腳本內容:

    #!/bin/shcd $(cd "$(dirname "$0")"; pwd) APP_NAME=HelloWeb.dllPROCESS=`ps -ef|grep $APP_NAME|grep -v grep ?|awk '{ print $2}'`while :dokill -9 $PROCESS > /dev/null 2>&1 ?if [ $? -ne 0 ];thenbreakelsecontinuefidoneecho 'stop success!'
    • 腳本測試

    #啟動應用sh /webroot/helloweb/start.sh#啟動成功輸出start begin... HelloWeb.dll start successed#停止應用sh /webroot/helloweb/stop.sh#停止成功后輸出stop success!

    開機啟動&反向代理配置

    1、配置開機啟動
    • 將停止腳本標記為可執行文件

    sudo chmod +x /webroot/helloweb/stop.sh
    • 創建helloweb服務

    #創建服務文件sudo vi /usr/lib/systemd/system/helloweb.service#文件內容[Unit] Description=helloweb After=network.target[Service] WorkingDirectory=/webroot/helloweb/app ExecStart=/usr/bin/dotnet /webroot/helloweb/app/HelloWeb.dll ExecStop=/webroot/helloweb/stop.sh Restart=always RestartSec=10[Install] WantedBy=multi-user.target

    如果你配置了多個版本的.NET Core環境,記得把/usr/bin/dotnet換成對應的路徑

    • 設置服務開機啟動&開啟服務

    #設置服務開機啟動sudo systemctl enable helloweb#啟動服務sudo systemctl start helloweb
    2、Nginx反向代理配置
    • 創建helloweb站點配置

    #新建配置文件sudo vi /etc/nginx/conf.d/helloweb.conf#反向代理配置內容server {listen ? ? ? 80; ? ? ? ?#監聽80端口server_name ?helloweb.mydomain.com; #綁定的域名location / { ? ? ? ? ? ?#轉發或處理proxy_pass http://localhost:5000;}error_page ? 500 502 503 504 ?/50x.html;#錯誤頁location = /50x.html {root ? /usr/share/nginx/html;} }
    • 重載NGINX配置

    sudo nginx -s reload
    • 開放防火墻端口

    #添加可訪問端口sudo firewall-cmd --add-port=80/tcp --permanent#重新加載防火墻策略sudo firewall-cmd --reload
    • 訪問測試:

    通過設置本地hosts將helloweb.mydomain.com指向服務器IP

    然后通過瀏覽器訪問:?helloweb.mydomain.com?即可

    原文地址:https://ken.io/note/asp.net-core-publish-deploy-guide

    .NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

    總結

    以上是生活随笔為你收集整理的ASP.NET Core 应用发布与部署指南的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。