tnblog
首页
视频
资源
登录

.net Core3.0在Ubuntu 16.04上面的部署(Supervisor+nginx)(扩展docker)

7859人阅读 2020/1/3 18:22 总访问:3464681 评论:2 收藏:0 手机
分类: .net后台框架

  前  言

Linux

 随着Linux越来越流行,本人一个.net程序员也多次研究linux与.net的相关产品,以及中间件的使用方式。So今天给大家演示演示一下:.net Core3.0项目,在Ubuntu16.04 Linux上的部署,有时间的话会讲讲docker的部署方式。


创建一个.net Core3.0 API的一个项目

大致如下:


【说明】:这里结合我上一篇的博客写的Swagger。请参考链接:http://www.tnblog.net/hb/article/details/3111

这里我们不难发现只有一个控制器一个接口,结果如下:


项目地址: https://github.com/AiDaShi/happy_new_year

然后我们生成项目,按照下列步骤:

然后我在这儿中途改了一下名称和路径,大家可以不用管!!!


生成完成后点击本地发布路径就可以了

然后通过Xftp上传文件到 /Home/fb 路径下啊

Ubuntu 16.04的环境搭建


由于我这里是16.04

按照官网来找到自己相对应的链接

链接:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-package-manager-ubuntu-1604


开始安装

(第一步) 安装dotnet


  1. wget -q https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
  2. sudo dpkg -i packages-microsoft-prod.deb
  3. sudo apt-get update
  4. sudo apt-get install apt-transport-https
  5. sudo apt-get update
  6. sudo apt-get install dotnet-sdk-3.1


安装完成时执行 dotnet --info 命令查看安装的SDK信息


测试运行:

路径可能稍有不对,大家指向自己上传的路径,最好不要是root文件夹下

然后我们可以看到报了一个错,是因为 没有nginx做外网代理但本地可以通过命令 curl http://localhost:5000/WeatherForecast 获取数据


(第二步) Nginx的安装

安装命令

  1. sudo apt-get install nginx

启动命令

  1. sudo service nginx start

安装成功后直接访问服务器地址,若出现下图则nginx安装成功



(第三步) 进程守护 因情况而定

Ubuntu 用: Supervisor

CentOS 用:    PM2


Supervisor

Supervisor是采用 Python(2.4+) 开发的,它是一个允许用户管理 基于 Unix 系统进程的 Client/Server 系统,提供了大量功能来实现对进程的管理。

安装Supervisor

  1. apt-get install supervisor

然后到这个文件夹下面添加配置

  1. cd /etc/supervisor/conf.d/
  2. vim api.conf

内容如下

  1. [program:api]
  2. command=dotnet api.dll  #要执行的命令
  3. directory=/home/fb     #命令执行的目录
  4. environment=ASPNETCORE__ENVIRONMENT=Production          #环境变量
  5. user=www-data                               #进程执行的用户身份
  6. stopsignal=INT
  7. autostart=true                              #是否自动启动
  8. autorestart=true                            #是否自动重启
  9. startsecs=1                                 #自动重启间隔
  10. stderr_logfile=/var/log/HelloWebApp.err.log #标准错误日志
  11. stdout_logfile=/var/log/HelloWebApp.out.log #标准输出日志

配置好以后 (

  1. :wq
保存退出),需要重新加载一下配置


启动进程保护

  1. service supervisor stop
  2. sudo service supervisor start


相关参考链接:

https://www.cnblogs.com/savorboard/p/dotnetcore-supervisor.html


PM2

pm2 从名字上和我们平时在生活中接触到的 pm2.5 有点像,不过他们可不是一个东西。做 nodejs 开发的童鞋可能对 pm2 比较熟悉,pm2 是一个高级nodejs进程管理工具。


更新apt-get

  1. apt-get update

安装node.js

  1. apt-get install nodejs

安装npm

  1. apt-get install npm

安装PM2

  1. npm install -g pm2


设置开机启动

  1. pm2 startup

安装成功以后使用 

  1. pm2 --help
 命令来检查是否安装成功,出现下图则安装成功

相关参考链接:

https://www.cnblogs.com/linhuiy/p/12023124.html

https://www.cnblogs.com/stulzq/p/9775973.html


然后测试一下

  1. curl http://localhost:5000/WeatherForecast


(第四布)配置Nginx

打开nginx配置文件并修改

  1. vim /etc/nginx/sites-available/default
  1. server {
  2.     listen 80;
  3.     listen [::]:80;
  4.     location / {
  5.     proxy_pass http://localhost:5000; //刚才发布项目的端口
  6.     proxy_http_version 1.1;
  7.     proxy_set_header Upgrade $http_upgrade;
  8.     proxy_set_header Connection keep-alive;
  9.     proxy_set_header Host $host;
  10.     proxy_cache_bypass $http_upgrade;
  11.     }
  12. }

使用

  1. nginx -s reload
 命令来优雅重启nginx,并重新载入配置文件。

OK!完成!


使用 Docker 部署项目

给docker安装 .netcore(完整版)

  1. sudo docker pull microsoft/dotnet

或只安装运行时

  1. sudo docker pull mcr.microsoft.com/dotnet/core/runtime

在目录 /home/fb (发布文件根目录)创建一个文件 Dockerfile 添加如下内容

  1. FROM microsoft/dotnet:latest
  2. COPY . /app
  3. WORKDIR /app
  4. EXPOSE 5000/tcp
  5. ENTRYPOINT ["dotnet""api.dll"# enterpoint 第二个参数的dll,就是项目生成的dll文件名,根据自己项目情况替换

然后退出按一下 ESC 建 ,输入 

  1. :wq
 保存

然后执行如下命令 

  1. docker build -t hager:api .

【注意】一切都是在你的项目路径下

ok!可以看见镜像创建完成了。。。

下面我们停止一下守护进程

  1. sudo service supervisor stop

运行docker

  1. docker run --name myapi -v /home/fb:/app -d -p 5000:5000 aidasi/api

未完更新中...。。。




欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

剑轩

2020/1/4 21:08:07

秀啊

17521080697

2020/9/14 14:33:34

期待楼主继续更新[微笑]

如何修改CSS中存的element.style内联样式

改腾讯地图的时候调整了下样式,发现样式一直存在问题,修改style里面的值,一点用都没有,html中这个值还找不到是在哪里出...

问题中成长感悟

工作中怎么可能不会遇到问题。遇到问题在去解决问题就会变强。就会有独立解决问题的能力就会独挡一面。技术如此,做商务自...

类型“DbSet”未引用的程序集中定义。必须添加对程序集“EntityFramework Version=5.0.0.0 Culture=neutral PublicKeyToken=b7

在用mvc+ef的时候在DAL层引用上下文信息的时候会报出下面错误其实就是没得EntityFromwork,打开vs项目,点击工具,选择NuGe...

怎样解决安卓微信浏览器对于第三方网页的两次请求问题?

之前的项目是没有这种情况的,但是最近发现安卓手机在微信浏览器访问第三方网页时,页面点击某个按钮,写日志显示只触发了...

数据读取器与指定的"xx"不兼容。某个类型为"xx"的成员同名的数据读取器中没有对应的列

报错的地方var result= _db.Database.SqlQuery<SMachine>(sql).FirstOrDefault();经过分析,是因为SqlQuery方法查询...

WEB API中进行统一安全验证类DelegatingHandler

根据web api 官方参考文献 总结出一下代码举例:将 HTTP 响应消息的处理委托给另一处理程序(称为“内部处理程序”)的 HTT...

net core获取绝对路径,获取项目根目录。wwwroot所的根目录

在net framework中获取绝对路径可以使用Server.MapPath("~")but.....在net core中并没有那个Server对象了在net c...

idea下搭建Spring Boot+Spring MVC+thymeleaf

今天大兄弟来讲一下在idea下,使用Spring Boot ,搭建Spring MVC+thymeleaf。在Java开发领域,Spring Boot算得上是一颗耀眼...

等待所有线程执行完后,执行某个方法

彼年豆蔻,谁许谁地老天荒。在多线程环境下,我们可能会需要等待开辟的线程执行完后,再去执行某个方法,例如输出并行计算...

使用nginx同一台服务器上配置多个二级域名

一般二级域名都是解析到不同的服务器上,但是很多时候没有那么土豪可以用那么多服务器哇。当然土豪完全可以1个二级域名一台...

解决:基础提供程序 Open 上失败,EF无法生成实体问题

在学校图书馆的电脑上安装VS2013和SQL R2后,调试项目报错:基础提供程序在 Open 上失败怀疑是数据库的问题,然后删除数据...

vue.js 学习日记第二章-vue中编写function及一些简单指令

官网:https://cn.vuejs.org/v2/guide/ vue.js 学习日记第一章:http://www.tnblog.net/18323015640/article/details/2...

使用nginx同一台服务器上配置多个二级域名2

在第一篇中介绍了一种方法:http://www.tnblog.net/aojiancc2/article/details/2430其实还可以使用第二种方法,也就是配置...

基于office 把wordwordxpptpptxxlsxlsx转为pdf线预览

//,要在服务器安装office,需要引用usingMicrosoft.Office.Interop.Word;usingMicrosoft.Office.Interop.PowerPoint;usingMi...

基于open office 把各种类型转为pdf线预览

//需要在服务器安装openoffice,引用cli_basetypes,cli_cppuhelper,cli_oootypes,cli_ure,cli_uretypes publicboolCon...

说一点程序中减少判断的做法

我们在架构层面上要尽量减少判断,不要让业余逻辑的变动就去修改代码逻辑那样是很不好的,那样的代码维护性很差,很容易造...
这一世以无限游戏为使命!
排名
2
文章
633
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术