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-mysite.service # 注册服务
sudo systemctl start kestrel-mysite.service # 启动服务
sudo systemctl status kestrel-mysite.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这里会提示错误:
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.再次尝试外网访问。
Asp.Net Core2.0在linux下发布的更多相关文章
- asp.net core2.0 部署centos7/linux系统 --守护进程supervisor(二)
原文:asp.net core2.0 部署centos7/linux系统 --守护进程supervisor(二) 续上一篇文章:asp.net core2.0 部署centos7/linux系统 -- ...
- 【转】Asp.Net Core2.0获取客户IP地址,及解决发布到Ubuntu服务器获取不到正确IP解决办法
1.获取客户端IP地址实现方法(扩展类) using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.ModelBinding; u ...
- Asp.Net Core2.0获取客户IP地址,及解决发布到Ubuntu服务器获取不到正确IP解决办法
1.获取客户端IP地址实现方法(扩展类) using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc.ModelBinding; u ...
- 一步一步带你做WebApi迁移ASP.NET Core2.0
随着ASP.NET Core 2.0发布之后,原先运行在Windows IIS中的ASP.NET WebApi站点,就可以跨平台运行在Linux中.我们有必要先说一下ASP.NET Core. ASP ...
- WebApi迁移ASP.NET Core2.0
WebApi迁移ASP.NET Core2.0 一步一步带你做WebApi迁移ASP.NET Core2.0 随着ASP.NET Core 2.0发布之后,原先运行在Windows IIS中的AS ...
- 将asp.net core2.0项目部署在IIS上运行
原文:将asp.net core2.0项目部署在IIS上运行 前言: 与ASP.NET时代不同,ASP.NET Core不再是由IIS工作进程(w3wp.exe)托管,而是独立运行的.它独立运行在控 ...
- .Net Core技术研究-WebApi迁移ASP.NET Core2.0
随着ASP.NET Core 2.0发布之后,原先运行在Windows IIS中的ASP.NET WebApi站点,就可以跨平台运行在Linux中.我们有必要先说一下ASP.NET Core. ASP ...
- 【翻译】asp.net core2.0中的token认证
原文地址:https://developer.okta.com/blog/2018/03/23/token-authentication-aspnetcore-complete-guide token ...
- 在阿里云Windows Server 上部署ASP .NET CORE2.0项目
近期使用ASP.NET Core2.0对博客进行了重写,在部署到服务器时遇到了一些问题,来记录一下留用. 配置环境 安装 .Net Framework3.5 在IIS管理器上直接开启,这里总是失败,上 ...
随机推荐
- Cutting Game
Cutting Game 刚开始有一\(n\times m\)的矩形网格纸,双方轮流操作,剪网格纸,对于任意一个局面而言,你可以选择其中一张网格纸,把它剪成两个长宽都是整数的网格纸,剪出\(1\tim ...
- [JZOJ3296] 【SDOI2013】刺客信条
题目 题目大意 给你一棵树,树上每个节点有000或111的状态. 用最少的操作次数使得当前状态与目标状态同构. 思考历程 首先想到的是找重心. 因为根是不确定的,但重心只会有一个或两个,以重心为根就能 ...
- Hystrix容错处理
如果服务提供者响应非常缓慢,那么消费者对提供者的请求就会被强制等待,直接提供者响应或超时.在高负载场景下,如果不做任何处理,此类问题可能会导致服务消费者的资源耗竭甚至整个系统的崩溃.这时,就需要进行容 ...
- 群晖系统下btfs(占用5%)和ext4文件格式的硬盘占用和选择
1个人感觉选择ext4就可以,毕竟重要数据会设置raid1 不重要的数据也不需要快照什么的 商用除外 对于一个4t的硬盘 实际容量3726G 使用ext4可用空间3666G,群晖 占用60G大概1.6 ...
- reac-native + typescript 的环境搭建
一. RN-TS环境搭建 . 安装RN脚手架 yarn add create-react-native-app -g yarn global add typescript . 创建项目文件夹 crea ...
- ORA-01790: 表达式必须具有与对应表达式相同的数据类型
出现这种错误,要先看一下是不是sql中有用到连接:union,unio all之类的,如果有,需要注意相同名称字段的数据类型一定要相同.
- [NOI2003]逃学的小孩【观察+树的直径】
Online Judge:Bzoj1509,Luogu P4408 Label:观察,树的直径 题目描述 输入 第一行是两个整数N(\(3≤N≤200000\))和M,分别表示居住点总数和街道总数.以 ...
- Luogu P4933 大师(dp)
P4933 大师 题意 题目背景 建筑大师最近在跟着数学大师ljt12138学数学,今天他学了等差数列,ljt12138决定给他留一道练习题. 题目描述 ljt12138首先建了\(n\)个特斯拉电磁 ...
- Odoo使用jsonrpc协议
在controller添加一个test方法, 不需参数 @http.route('/test', type = 'json', auth = 'public') def test(self): pha ...
- HZOI20190803 A,C题
题目链接:https://www.cnblogs.com/Juve/articles/11295333.html A: 考场上只有70分... 发现几个性质:特殊性质1:在两条链上,看它是fib第几项 ...