上篇《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.HttpOSS.Social和 OSS.PayCenter几个项目,如果你也有兴趣,请联系我或者关注公众号OSSCoder

Linux+Nginx+Asp.net Core及守护进程部署的更多相关文章

  1. Linux+Nginx+Asp.net Core

    Linux+Nginx+Asp.net Core 上篇<Docker基础入门及示例>文章介绍了Docker部署,以及相关.net core 的打包示例.这篇文章我将以oss.offical ...

  2. Linux+Nginx+Asp.net Core部署

    上篇<Docker基础入门及示例>文章介绍了Docker部署,以及相关.net core 的打包示例.这篇文章我将以oss.offical.site站点为例,主要介绍下在linux机器下完 ...

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

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

  4. [06]ASP.NET Core中的进程内(InProcess)托管

    ASP.NET Core 进程内(InProcess)托管 本文作者:梁桐铭- 微软最有价值专家(Microsoft MVP) 文章会随着版本进行更新,关注我获取最新版本 本文出自<从零开始学 ...

  5. linux第1天 fork exec 守护进程

    概念方面 文件是对I/O设备的抽象表示.虚拟存储器是对主存和磁盘I/O设备的抽象表示.进程则是对处理器.主存和I/O设备的抽象表示 中断 早期是没有进程这个概念,当出现中断技术以后才出现进程这个概念 ...

  6. windows/Linux下设置ASP.Net Core开发环境并部署应用

    10分钟学会在windows/Linux下设置ASP.Net Core开发环境并部署应用 创建和开发ASP.NET Core应用可以有二种方式:最简单的方式是通过Visual Studio 2017 ...

  7. ASP.NET Core ASP.NET Core+MVC搭建及部署

    ASP.NET Core+MVC搭建及部署 一.创建项目: 1.选择ASP.NET Core Web Application(.NET Core) 注意框架 2.选择Web Application: ...

  8. ASP.NET Core 2.0发布/部署到Ubuntu服务器并配置Nginx反向代理

    原文链接https://www.linuxidc.com/Linux/2017-12/149557.htm ASP.NET Core 2.0 怎么发布到Ubuntu服务器?又如何在服务器上配置使用AS ...

  9. Linux系统添加应用服务进程的守护进程

    以前曾在Linux上维护应用服务,但是只是简单的迭代版本等工作,没有什么技术含量.最近部署在Linux服务器上的一个平台的总线进程broker(下面总线用broker指代)经常挂掉,由于总线负责服务之 ...

随机推荐

  1. mybatis 反向生成步骤

    Mybatis 反向生成. 反向生成的步骤: 反向生成的文件 打开文件夹显示 3.打开generator.xml文件 更改配置信息  路径一般情况下用英文  中文的路径有些会识别不了  或产生乱码 4 ...

  2. BZOJ 2761 不重复数字 set

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=2761 题目大意: 给出N个数,要求把其中重复的去掉,只保留第一次出现的数. 例如,给出 ...

  3. 水壶-[Kruskal重构树] [解题报告]

    水壶 本来从不写针对某题的题解,但因为自己实在是太蠢了,这道题也神TM的恶心,于是就写篇博客纪念一下 H水壶 时间限制 : 50000 MS 空间限制 : 565536 KB 评测说明 : 2s,51 ...

  4. 函数式编程编程即高阶函数+monad

    高阶函数负责数据的单次映射: monad负责数据处理流的串联,并使得串联函数具有相同的形式. 同时moand负责基础类型和高阶类型间的转换.

  5. Netty入门(一)环境搭建及使用

    一.项目创建 在 Eclipse 中右键,新建->项目->Maven->Maven Project->下一步->选择 quickstart 下一步->设置如图(参数 ...

  6. sql 一个表的字段更新至另一个字段的方法

    update Lc_Taxs set TaxMember = convert(int,Lc_Taxs2.TaxNo)  from Lc_Taxs a,(select * from Lc_Taxs ) ...

  7. browerify初步了解

    之前在写Signature Request Warnings & eth_sign学习的时候在里的signing examples时了解到browserify工具,可以通过这个例子学习如何使用 ...

  8. yarn的学习-1-包管理工具

    https://yarn.bootcss.com 使用yarn的原因: 1.速度超快 Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载. 同时利用并行下载以最大化资源利用率,因此安装速度更快 ...

  9. Jenkins与Github集成

    Jenkins目前是手动进行项目构建的,如何才能做到Github并持续集成呢? 配置前要求: 1.Jenkins已经安装Github插件 2.Jenkins服务器已经拥有一个公网IP地址 第一步:配置 ...

  10. jupyter中添加conda环境

    安装完Anaconda利用conda创建了虚拟环境,但是启动jupyter notebook之后却找不到虚拟环境. 实际上是由于在虚拟环境下缺少kernel.json文件,解决方法如下: 首先安装ip ...