雖然.NetCore已經出來好久了,可是不少初學者仍是不會在linux部署.因此寫一篇初學者在ubuntu下部署Core的全過程,大佬請無視。html
安裝源
wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
node
安裝sdk,具體哪一個版本能夠根據本身的喜愛.
sudo add-apt-repository universe
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-3.1
linux
安裝完成執行 dotnet --info
命令查看安裝的SDK信息
nginx
由於.NetCore是自宿主,因此咱們須要一個反向代理web服務器來給個人kestrel作反向代理web
安裝命令
sudo apt-get install nginx
npm
啓動命令
sudo service nginx start
ubuntu
安裝成功後直接訪問服務器地址,若出現下圖則nginx安裝成功
vim
PM2是一個nodejs進程高級工具,用來守護 .NET Core 進程是沒有問題,最主要的緣由,它沒有繁瑣的安裝和配置,很是適合初學者。
PM2依賴nodejs,因此咱們先須要安裝nodejs。api
更新apt-get
apt-get update
安裝node.js
apt-get install nodejs
安裝npm
apt-get install npm
安裝PM2
npm install -g pm2
設置開機啓動
pm2 startup
瀏覽器
安裝成功之後使用 pm2 --help
命令來檢查是否安裝成功,出現下圖則安裝成功
有關於pm2的詳細說明能夠去看曉晨大佬的文章。傳送門
本地新建一個webapi項目,添加一個接口並打印一句話
using Microsoft.AspNetCore.Mvc; namespace api.Controllers { [Route("api/[controller]")] [ApiController] public class ValuesController : ControllerBase { [HttpGet("print")] public string Print() { return "hello .NetCore"; } } }
修改端口爲5002。
using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; namespace api { public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseUrls("http://localhost*:5002") .UseStartup<Startup>(); } }
發佈咱們的項目,而後在ubuntu的home文件下新建一個api文件夾並把發佈文件copy到這裏。
使用cd /home/api
命令進入咱們發佈文件夾下。
使用 dotnet Api.dll
命令運行咱們剛纔的項目
能夠看到咱們的項目已經跑起來啦。咱們使用瀏覽器來訪問咱們的Api看看是否成功
能夠看到咱們的接口是能夠訪問的,到這裏咱們已經完成了在ubuntu上部署一個.NetCore的項目了。
可是咱們須要一直在這裏看着這個程序不被關閉嗎?顯然是不可能的,如今就須要pm2登場了,用pm2來守護咱們的.netCore 程序。
執行pm2 start "dotnet api.dll" --name api
命令就可讓pm2來幫助咱們守護啦。就是這麼簡單,沒有繁瑣的配置。
使用 pm2 ls
命令能夠看到pm2正在守護程序的列表。
那麼問題又來了,直接把服務暴露在外並非很好的選擇,且沒法作負載。因此咱們須要配置nginx來給咱們的kestrel作反向代理。
執行 vim /etc/nginx/sites-available/default
命令來修改默認的配置文件,註釋掉原有全部配置,新增以下配置,並保存。
server { listen 80; listen [::]:80; location / { proxy_pass http://localhost:5002; //剛纔發佈項目的端口 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; } }
使用nginx -s reload
命令來優雅重啓nginx,並從新載入配置文件。
使用80端口來調用咱們的接口。
能夠看到是能夠經過80端口去調用咱們的Api的。
到這裏已經就完成了咱們在ubuntu部署.NetCore項目小目標啦。