上篇《Docker基础入门及示例》文章介绍了Docker部署,以及相关.net core 的打包示例。这篇文章我将以oss.offical.site站点为例,主要介绍下在linux机器下完整的部署流程,.net core在docker容器中的运行已经介绍,这里.net core运行环境我会介绍直接在linux运行的场景,内容主要包含以下几个部分:

1. 基础工具和Linux环境准备

2. .Net Core环境安装及端口配置

3. Nginx的安装配置

4. Supervisor守护进程安装配置

  一. 基础工具和Linux环境准备

    工具介绍:

  Ubuntu:azure云端linux主机

  Xshell:免费的linux客户端工具

  FileZilla: 免费文件上传(sftp、ftp)工具

   vs2017:  开发工具

  本次部署主要是通过Nginx负载代理.net core服务,提供对外站点访问。.net core 本身的宿主则通过其自带的Kestrel服务运行。如果你是云主机请记得在管理控制台添加80访问端口。

  那这里我先创建一个www文件夹,作为后边存放站点文件的根目录,同时设置相关权限,这里可能会有一个小的需要注意的问题,现在很多云主机直接登录后权限是很低的,需要使用:sudo -s 命令提升权限,否则创建文件夹会出现权限不足的错误。

  1. mkdir /home/www/ossoffical     // 创建ossoffical站点文件夹

  2. chown [-R] 账号名称 ossoffical    // 把账号名称添加到www文件夹的所有者中,保证后续sftp上传文件夹等在无法提权的情况下也能操作

  二. .Net Core环境安装及端口配置

  1. 安装,这里参照微软官网即可,我这里使用的是Ubuntu 14.04版本,主要执行以下几条命令

sudo sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/dotnet-release/ trusty 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-1.0.1

  2. vs端口相关设置

  这里需要注意一下,当前版本创建的.net core项目在不制定具体端口的情况下,会默认使用5000端口。但是这个在后续的版本中会移除,见官方文档:

  并且我也希望自己指定具体的端口,这样以后站点多了之后防止冲突,我修改自己项目中的Program文件中内容,指定8000端口,如图:

  请注意先后的顺序,否则在vs中可能会出现调试无法打开的情况,发布当前项目。

  3. 上传项目文件运行

  a. 通过filezilla上传项目文件到ossoffical目录下

  b. 通过命令客户端进入ossoffical目录(cd /home/www/ossoffical),执行:dotnet OSS.Offical.Site.dll(我当前站点项目程序集名称),结果如图:

  退出执行ctrl+c 。当然我们也可以执行 “ dotnet OSS.Offical.Site.dll & ” ,让其在后台运行,只是这个更方便让我们查看。这个时候你可以访问对应的8000端口即可访问(云主机请注意开放访问端口)。

  三. Nginx安装

  1. 执行:sudo apt-get install nginx  命令

  2. 安装完成之后访问对应的80端口,应该如下:

  3. 配置代理

  a. mkdir /etc/nginx/hosts   创建一个文件夹,用来放置站点配置文件

  b. 执行 cd /etc/nginx/hosts   进入目录, 执行: vi ossoffical   按 “i” 添加如下内容:

server {
listen 80;

index index.html index.htm;

server_name www.osscoder.com; #域名

location / {
proxy_pass http://127.0.0.1:8000;   # 刚才设置的地址端口
        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;
}
}

  退出保存。

  4. 修改nginx配置文件,vi /etc/nginx/nginx.conf

  在http节点末尾,添加 :include /etc/nginx/hosts/*;

  5.  重启nginx服务器: sudo service nginx restart(reload)

  6. 进入站点目录,dotnet OSS.Offical.Site.dll & ,确保站点正确运行,访问 www.osscoder.com,如下:

 四. 守护进程安装配置

  为了保证服务能够稳定运行,我们安装守护进程以确保在应用程序出现异常中断时能够正常重启。

  1. 安装,执行:sudo apt-get install supervisor

  2. 安装成功后进入:/ect/supervisor/conf.d/ 目录,添加 ossoffical.conf 文件,添加如下内容:

[program:OSS.Offical.Site]
command=dotnet OSS.Offical.Site.dll //要执行的命令
directory=/home/www/ossoffical //命令执行的目录
environment=ASPNETCORE__ENVIRONMENT=Production #环境变量
user=osscoder //进程执行的用户身份
stopsignal=INT
autostart=true
autorestart=true
startsecs=3    //自动重启间隔
stderr_logfile=/var/log/ossoffical.err.log    //标准错误日志
stdout_logfile=/var/log/ossoffical.out.log     //标准输出日志

  把对应的目录和名称换掉即可,请删除注释,否则有时会出现命令执行失败的情况。完毕之后重启supervisor:

  sudo service supervisor stop

  sudo service supervisor start

  完成之后可以杀掉进程或者重启机器测试。

我最近正在开发OSS系列开源项目,现在已有OSS.Common,OSS.Http, OSS.Social 和 OSS.PayCenter 几个项目,如果你也有兴趣,请联系我或者关注公众号OSSCoder

原文地址:http://www.cnblogs.com/osscoder/p/6583269.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

Linux+Nginx+Asp.net Core部署相关推荐

  1. Linux中以单容器部署Nginx+ASP.NET Core

    正如 前文提到的,强烈推荐在生产环境中使用反向代理服务器转发请求到Kestrel Http服务器,本文将会实践将Nginx --->ASP.NET Core 部署架构容器化的过程. Nginx- ...

  2. ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路

    一.前言  最近一段时间自己主要的学习计划还是按照毕业后设定的计划,自己一步步的搭建一个前后端分离的 ASP.NET Core 项目,目前也还在继续学习 Vue 中,虽然中间断了很长时间,好歹还是坚持 ...

  3. ASP.NET Core 部署到docker

    ASP.NET Core 部署到docker ASP.NET Core:ASP.NET Core程序使用Docker部署 前提:本地已有 ASP.NET Core web应用程序,并且已安装docke ...

  4. ASP.NET Core部署到Linux服务器(CentOS7 x64)

    前言 本文主要讲解如何一步步将ASP.NET Core网站发布到Linux服务器,文中会讲解具体步骤及需要避免的各种问题. 目录 一.环境介绍 二.创建及发布ASP.NET Core网站项目 三.服务 ...

  5. ASP.NET Core部署到CentOS7,使用Nginx代理

    ASP.NET Core 的运行环境由新开发的 Kestrel Server 负责,IIS 退回到 HTTP 的侦听器的角色,微软也特别为了这个需求开发了 IIS Platform Handler,以 ...

  6. ASP.NET Core 部署到Cont OS 服务器

    一.前言 当 asp.net core 发布以后,实现了跨平台.基于好奇,我就测试了一下 core 项目部署到 linux 服务器.感觉一路还是有所收获,接下来记录一下操作流程. 工具:window ...

  7. Asp.Net Core部署:早知道,还是docker!以及一点碎碎念

    前言 AspNetCore技术栈在我们团队里的使用也有一段时间了,之前的部署方式一直是本地编译之后上传可执行文件到服务器,使用supervisor来管理进程这种很原始的方式. 参考之前的文章:Asp. ...

  8. 国产化之路-统信UOS /Nginx /Asp.Net Core+ EF Core 3.1/达梦DM8实现简单增删改查操作

    引言 经过前期的准备工作,.net core 3.1的运行环境和WEB服务器已经搭建完毕,这里需要注意一下,达梦DM8数据库对于Entity Framework Core 3.1 的驱动在NuGet官 ...

  9. javaweb简单的登录增删改查系统_国产化之路统信UOS /Nginx /Asp.Net Core+ EF Core 3.1/达梦DM8实现简单增删改查操作...

    引言 经过前期的准备工作,.net core 3.1的运行环境和WEB服务器已经搭建完毕,这里需要注意一下,达梦DM8数据库对于Entity Framework Core 3.1 的驱动在NuGet官 ...

最新文章

  1. 【最强ResNet改进系列】IResNet:涨点不涨计算量,可训练网络超过3000层!
  2. 【网络】TCP基础总结
  3. 5 怎么上下分屏_oppo的最新手机reno5系列怎么样
  4. 前端页面通过web3.eth.accounts无法获取账户信息
  5. 线程池优化之充分利用线程池资源
  6. git commit 规范指南
  7. [转载经验] 探亲签证申请
  8. 目标检测 | 火焰烟雾检测论文(实验部分)
  9. 回顾一年的工作历程_回顾历程、总结经验、展望未来
  10. 使用U盘安装win7系统遇到“缺少所需的 CD/DVD 驱动器设备驱动程序”解决办法
  11. UVA11584 Partitioning by Palindromes(动态规划)
  12. 关于网页抓取的10个误区(最新)
  13. Android基于环信SDK开发IM即时聊天(一)
  14. vue uniapp通用省市下拉选择器组件 布局样式可灵活根据ui变更 (区域 可根据数组嵌套的格式继续往下模仿即可)
  15. html滚轮下拉动画,html5+css3齿轮滚动动画代码
  16. HTML提供的5种空格实体(nbsp`;`ensp`; `emsp`;` thinsp`; `zwnj`;`zwj`;)
  17. Prim算法的具体实现
  18. 微软开源!世界首个AI量化投资平台 Qlib 基本使用教程
  19. OUTLOOK2021配置QQ邮箱
  20. 命题作文:Dimension Tree区间查找与IP数据包分类

热门文章

  1. 自动为DEV GridView控件添加SizeChanged事件
  2. PHP中如何配置smarty框架实现PHP代码和HTML代码分离
  3. [转]软件测试演义——中高级系列(序)
  4. 【OpenCV学习】OpenMP并行化实例
  5. VS.NET调试问题
  6. .NET 6新特性试用 | 模式匹配之Extended Property Patterns
  7. Docker小白到实战之Dockerfile解析及实战演示,果然顺手
  8. FastGithub让Github畅通无阻
  9. 听说过Netflix的Chaos Monkey吗?不用羡慕,我们.NET也有
  10. 都 2021 年了,竟然有人搞大数据时忽略 JSON 而去研究用 C# 把 XML 转换为 XML 的技术...