在ubuntu上部署asp.net core网站

今天摸索了一下asp.net core.其他都熟门熟路,唯独部署没碰过.本来以为很简单,没想到还是有很多坑的.

1.给ubuntu安装dotnet core

参见微软官方说明,需要先安装一个预备包,然后安装的时候要指定版本.

sudo apt-get install dotnet-sdk-2.1.4

2.准备网站

用VS向导准备一个网站,然后发布.

发布后的网站会放在bin\Release\netcoreapp2.0\publish\,压缩为zip,然后用scp上传到服务器上.

3.启动网站

在服务器上用unzip解压缩.然后进入文件夹,

启动网站

dotnet yoursite.dll

和spring boot的java -jar yoursite.jar是一个套路有没有.

验证一下,本机没有浏览器,所以用wget下载来验证.wget http://localhost:5000,下载成功!

下一步,用开发机的浏览器看看呗.输入http://your_ip:5000

页面显示:访问被拒绝

一开始以为是防火墙作梗,查了半天.最后用lsof -i看了一下监听的端口发现了问题.asp.net core,如果不设置,默认监听的是Localhost:5000,也就是本机的5000端口,也就是只有本机才能访问.

好吧.修改监听端口.在program.cs中添加UseUrls,指定监听任何ip,端口也改一下

     WebHost.CreateDefaultBuilder(args)
                .UseUrls("http://*:8999")
                .UseStartup<Startup>()
                .Build();

然后再上传,启动,这时外部就能打开了.

4.设置服务

dotnet命令执行之后,是不会退出的.所以老规矩.设置个服务.这就看出来ubuntu的好处了.设置服务超级简单.

到/lib/systemd/system.创建xxx.service文件.然后编辑

[Unit]
Description=desc

[Service]
ExecStart=/usr/bin/dotnet /home/publish/publish/yoursite.dll

[Install]
WantedBy=multi-user.target

注意:dotnet路径要写全,不能偷懒写dotnet

然后保存,退出.然后启动

service xxx restart

没有报错!

然后在浏览器访问,咦?500错误?

用service xxx status看一下,网站报错了.错误信息是

The view 'Index' was not found. The following locations were searched:
 /Views/Home/Index.cshtml
 /Views/Shared/Index.cshtml

这就神器了,刚刚明明还是好的.怎么到了服务里就不行了.猜想这是由于启动路径的原因.查了一圈果然如此.

解决方案,还要回到你程序的program.cs,再添加个设置 UseContentRoot(Path.GetDirectoryName( System.Reflection.Assembly.GetEntryAssembly().Location))

最终设置为:

      WebHost.CreateDefaultBuilder(args)
                .UseUrls("http://*:8999")
                .UseContentRoot(Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location))
                .UseStartup<Startup>()
                .Build();

再次上传,启动,终于可以使用了.

转载于:https://my.oschina.net/somereasons/blog/1865493

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值