1. 程式人生 > >ubuntu上部署windows開發的dotnet core程序

ubuntu上部署windows開發的dotnet core程序

ble output group style tar class keys sources command

目標:完成windows上開發的dotnet core程序部署至linux服務器上(Ubuntu 14.04)

windows上開發dotnet core很簡單,安裝好VS2017,建立相關類型的項目進行開發即可。

Linux服務器中需要做以下幾個工作:

1.安裝dotnet core, 運行dotnet程序必備條件。

2.安裝supervisor守護進程,可以幫助你自動啟動站點。

3.安裝nginx做代理

1. 安裝dotnet core

#依次執行下面的命令,安裝的版本有問題的話,按照錯誤提示修改版本號即可
sudo sh -c echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ yakkety main" > /etc/apt/sources.list.d/dotnetdev.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 417A0893 sudo apt-get update sudo apt-get install dotnet-dev-2.0.1

windows中的項目使用下面的命令行打包部署。需要在項目的項目文件(CoreApp.csproj)文件上增加一個配置節點。

dotnet publish --framework netcoreapp2.1 --runtime ubuntu.14.04-x64 --output "E:\Publish\CoreApp"
--configuration Release

需要增加的配置節點

<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<!--增減對linux支持-->
<RuntimeIdentifiers>ubuntu.14.04-x64</RuntimeIdentifiers>
</PropertyGroup>

將部署包復制到linux服務器上,記住目錄,在supervisor配置文件中需要使用到這個目錄。

2.supervisor守護進程。dotnet core程序在Linux上,每次都需要dotnet run一下,如果遇到服務器重啟或者站點掛了需要重啟,就每次都要自己手動敲一下dotnet run命令。安裝這個守護進程,讓他幫忙監控,一但發現相應的站點不在運行了,就自動幫你執行啟動命令。

//安裝
sudo apt-get install supervisor

//新建
touch CoreApp.conf

//CoreApp.conf 添加如下內容
[program:CoreApp]
command=dotnet CoreApp.dll  
directory=/home/gxwang/publish 
environment=ASPNETCORE__ENVIRONMENT=Production 
user=www-data  
stopsignal=INT
autostart=true 
autorestart=true 
startsecs=1 
stderr_logfile=/var/log/CoreApp.err.log 
stdout_logfile=/var/log/CoreApp.out.log 

//重新加載配置
sudo supervisorctl shutdown && sudo supervisord -c /etc/supervisor/supervisord.conf
//或重啟supervisor
sudo service supervisor stop
sudo service supervisor start

3.nginx

修改nginx配置,

sudo vi /etc/nginx/sites-available/default
#default配置文件下,增加一個虛擬主機,可以使用同一臺機器監聽不同端口
# another virtual host using mix of IP-, name-, and port-based configuration # server { listen 81; # listen somename:8080; # server_name somename alias another.alias; # root html; # index index.html index.htm; # location / { proxy_pass http://localhost:5000; 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

sudo nginx -t
sudo nginx -s reload

ubuntu上部署windows開發的dotnet core程序