Linux+Nginx+Asp.net Core部署

上篇《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跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326390.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

com.microsoft.sqlserver.jdbc.SQLServerException: 索引 7 超出范围。

今天在做项目的时候,使用的jdbc底层增加,然后出现了个问题,找了好久没有找出来是什么问题,后来在网上查了下,发现别人都说是?写成了中文的了,于是我就返回来看,没看出来,…

ps中对齐,历史记录,图层

一、对齐: 1.激活对齐:视图–》对齐 2.新建一个文件,然后置入一张图片,设置一个参考线,使用移动工具进行移动,当移动到参考线附近的时候图片会自己吸到参考线上。 3.移动到参考线的时候如需设置空隙&…

Docker基础入门及示例

Docker近几年的发展可谓一日千里,特别从是2013年随着一个基于LXC的高级容器引擎开源,到现在,其在linux和windows上都有了很好的支持,并且已经有很多公司将docker用于实际的生产环境部署当中。这篇文章我将针对以下几个方面简单介绍…

2016蓝桥杯省赛---java---B---3(平方怪圈)

题目描述 思路分析 代码实现 package com.kuang.study.lanqiao;public class Main {public static void main(String[] args) {int start0;int cnt0;//循环的次数for (int i 2; i < 100; i) {starti;while (cnt<1000){System.out.println(start);String astart"&q…

PS仿制图章工具、油桶工具、渐变

一、仿制图章工具&#xff1a; 1.找到仿制图章工具&#xff0c;或者按快捷键s&#xff0c;选择需要仿制的内容&#xff0c;按住alt,然后找到需要放置的地方&#xff0c;鼠标拖动即可完成仿制。 一、油桶工具&#xff1a; 1.激活&#xff1a;快捷键&#xff1a;G 2.选择需要…

使用 Visual Studio 对源代码文件进行哈希处理以确保文件完整性

对所有编译的软件语言来说&#xff0c;将人类可读代码转换成计算机可读代码都是一项软件保障挑战&#xff1a; 用户如何有信心相信在其计算机上运行的软件程序是根据开发者创建的同一源代码文件生成的呢&#xff1f; 这不一定&#xff0c;即使源代码文件经过行业专家评审&#…

php 输出01,php基础01_thinkphp输出Hello World-Go语言中文社区

用phpstorm和mamp搭建好php开发环境后&#xff0c;就来体验一下thinkPHP的输出过程1.下载thinkphp3.2.3版本框架&#xff0c;将其放入本地主机MyPhp文件夹中thinkphp3.2.3所包含的目录内容如下&#xff1a;目录对应文件为&#xff1a;composer.json:PHP组件的依赖管理器index.p…

人脸识别活体检测之眨眨眼和张张嘴

【这段时间有点忙&#xff0c;终于截止今天2018.06.22完成了人脸识别的最后一道程序——活体检测之眨眨眼和张张嘴】 关于人脸识别的内容我之前也写过好几篇博文&#xff0c;其中有&#xff1a; {java实现人脸识别源码} {C#winforms实现windows窗体人脸识别} {人脸识别活体检测…

工作效益问题

图解 代码实现 package com.kuang.study.lanqiao;public class Main {public static void main(String[] args) {int n8;//机器人个数int[] pre{0,0,0,0,1,0,2,3,5};//选择这个工作后的其那句最近工作下标int[] profit {5,1,8,4,6,3,2,4}; //工作收益int opt[]new int[n1];op…

amazon php 空间,(四)Amazon Lightsail 部署LAMP应用程序之扩展PHP前端

扩展PHP前端既然PHP前端和数据库是分开的&#xff0c;您将为Web层添加可伸缩性和容错性: 在以下步骤&#xff0c;您将获取Web前端实例的快照&#xff0c;并从该快照部署另外2个Web层实例。最终&#xff0c;您将在三个Web实例前面添加一个负载均衡器。至此&#xff0c;您将拥有一…

相邻数字+(正月点灯笼的动态规划2)(递归+DP)---JAVA

思路分析 代码实现 递归实现 package com.kuang.study.lanqiao;public class Main {public static void main(String[] args) {int arr[]{1,2,4,1,7,8,3};int max d(arr,arr.length-1);System.out.println(max);}public static int d(int[] arr,int n){if(n0){return arr[0]…

.NET Core Tools 1.0 版本

与上周发布的Visual Studio 2017一起&#xff0c;微软还发布了.NET Core Tools 1.0。这些工具对所有.NET核心开发人员都非常有用&#xff0c;无论他们使用VS2017、Visual Studio for Mac、Visual Studio Code&#xff0c;还是基于他们自己选择的非微软IDE。 对于想要使用.NET C…

塑造Visual Studio的未来

类似于Windows Insider计划&#xff0c;Microsoft为Visual Studio也启动了一项提前体验计划。该计划被命名为Visual Studio预览&#xff0c;它允许任何对Visual Studio未来感兴趣的用户都能参与其中。Microsoft已经为Visual Studio的三个主要版本&#xff08;社区版、专业版、企…

2016蓝桥杯省赛---java---C---8(冰雹数)

题目描述 任意给定一个正整数N&#xff0c; 如果是偶数&#xff0c;执行&#xff1a; N / 2 如果是奇数&#xff0c;执行&#xff1a; N * 3 1生成的新的数字再执行同样的动作&#xff0c;循环往复。通过观察发现&#xff0c;这个数字会一会儿上升到很高&#xff0c; 一会儿又…

临时表的软更新

当今绝大多数开发者都使用经典关系数据库来存储数据。尽管取而代之的无架构数据存储&#xff08;统称为“NoSQL 存储”&#xff09;在各种业务方案中都证明相当有效&#xff0c;但经典关系数据库是沿用了几十年且目前仍适用的方法。每次更新现有表记录时&#xff0c;都不会自动…

2017蓝桥杯省赛---java---C---1(外星日历)

题目描述 思路分析 求除以9的余数 代码实现 package TEST;import java.math.BigInteger;public class Main {public static int max;public static void main(String[] args) {System.out.println(23%9);//ESystem.out.println(190%9);//ASystem.out.println(343251%9);//IB…

Win10上编译CoreCLR的Windows和Linux版本

一、编译环境 首先&#xff0c;不管是Windows还是Linux版本CoreCLR的编译&#xff0c;都是在Windows10上进行的。 二、CoreCLR for Windows 在Windows上做编译怎么能少得了Visual Studio,由于Visual Studio 2017刚刚发布&#xff0c;所以选用Visual Studio 2017版本作为编译工…

老司机实战Windows Server Docker:2 docker化现有iis应用的正确姿势

前言 上一篇老司机实战Windows Server Docker&#xff1a;1 初体验之各种填坑介绍了安装docker服务过程中的一些小坑。这一篇&#xff0c;我们来填一些稍大一些的坑&#xff1a;如何docker化一个现有的iis应用。 问题分析 听说Windows支持原生docker了&#xff0c;大家一定都…

2017蓝桥杯省赛---java---C---2(兴趣小组)

题目描述 思路分析 直接进行暴力解决 代码实现 package TEST;import java.math.BigInteger;public class Main {public static void main(String[] args) {// TODO Auto-generated method stubint[] A {12894792, 92774113, 59529208, 22962224,2991600, 83340521, 87365045…

人脸识别活体检测之张张嘴和眨眨眼

暑【这段时间有点忙&#xff0c;终于截止今天2018.06.22完成了人脸识别的最后一道程序——活体检测之眨眨眼和张张嘴】关于人脸识别的内容我之前也写过好几篇博文&#xff0c;其中有&#xff1a; {java实现人脸识别源码} {C#winforms实现windows窗体人脸识别} {人脸识别活体检测…