Asp.Net Core2.0在linux下发布

一.在linux上新建mvc项目发布

可以参考:https://segmentfault.com/a/1190000012428781

也可以看微软官方文档。

大致步骤如下:

1.在linux下安装.netcore,运行dotnet --version命令检查是否安装成功.

2.新建一个模板网站:

sudo vim /etc/systemd/system/kestrel-firstapp.service  

在/etc/systemd/system目录下新建一个  kestrel-firstapp.service文件,然后写上一段脚本如下:

[Unit]
Description=Example .NET Web API App running on Ubuntu

[Service]
WorkingDirectory=/home/birdhumen/www/firstapp
ExecStart=/usr/bin/dotnet   /home/birdhumen/www/firstapp/test.dll
Restart=always
RestartSec=10  # Restart service after 10 seconds if dotnet service crashes
SyslogIdentifier=dotnet-example
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

 

红色标出来的很关键,因为我是在root下操作的,所以直接是home目录下的绝对路径/home/birdhumen/www/firstapp,

birdhumen是普通用户名,www和firstapp都是创建的文件夹,firstapp下放了发布好的asp.net core2.0的模板的dll,有7,8个文件。

3.然后执行:

sudo systemctl enable kestrel-firstapp.service    //注册服务
sudo systemctl start kestrel-firstapp.service    //启动服务

sudo systemctl status kestrel-firstapp.service     //检查服务的运行状态 ,如果这句话出错,大概率是脚本写的有问题。

成功后可以看到类似

localhost:5000

的东西了,然后就说明已经成功启动服务。在linux下直接

wget http://localhost:5000

4.但是在外网依旧还是访问不了,需要借助nginx,看另一篇文章:https://blog.csdn.net/wcc27857285/article/details/80033364 安装nginx

 

5.装好nginx后,需要修改nginx的配置文件

找到nginx的目录,若找不到,就用命令:whereis nginx

目前是~/usr/local/nginx/conf/ 目录下面,有两份文件,nginx.conf和nginx.conf.default,default这份是默认的,但是实际加载的是nginx.conf。

vim nginx.conf

找到server节点,把location下面的替换成下面的红色文本

server { 
    listen 80;
    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;
     } 
    }

7.重启下服务:./nginx -s reload, 成功后,即可在外网访问linux的IP,即可访问到ASP.netcore2.0的模板网站

 

二.发布自己的ASP.net web

上面是VS2017自带的模板,接下来讲下怎么发布自己写的web,然后替换

1.在VS上写好了代码后,右键资源管理器中的项目名,不是解决方案,右键找到发布选项,点击发布,然后选择目录。

2.发布完后,找到Release/PublishOutput文件夹,把publishoutput整个文件夹拷贝到linux上,这里用的是putty工具: https://blog.csdn.net/wcc27857285/article/details/80038523

3.找到/etc/systemd/system/kestrel-firstapp.service ,编辑

4.把两个目录修改一下,改成publishoutput所在的目录,保存退出

5.依次执行:systemctl enable kes.service           
       systemctl stop kes.service            
       systemctl start  kes.service            
       systemctl status kes.service -l 6.status 
6.这里会提示错误: Unable to bind to http://localhost:5000 on the IPv6 loopback interface: 'Error -99 EADDRNOTAVAIL address not available'.

7.不用管,外网尝试下访问IP,应该已经成功,

8.若提示错误,则进入nginx,重启下: ./nginx -s reload

9.然后查看下是否正常   ps -ef | grep nginx  ,看到worker和master两个进程说明正常。

10.再次尝试外网访问。

 

 

 

 

==========================

今天重新尝试,在启动系统内置监控时,无法启动服务,如下图:

 

 service文件如下,这是改过很多次的结果,一直报start-limit的错误,暂时不知道如何解决

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值