新的业务来了,需要使用linux环境部署web服务,作为一个C#的懒惰程序员,就这么上了车【狗脸】,废话不多说,跟我一样的小白请看,大神请绕路。

  站点暂时没有使用Docker部署,为什么呢,因为我还没搞清楚哇,摊手~

  


目标  

  VS2017+Core2.0+bootstrap+vue+ubuntu14.04+nginx半天完成一个新网站的搭建和部署。

GO

  首先下载VS2017,安装的时候,注意请务必勾选如下:

    

  确认本地Windows和linux环境下都已经安装.net core

  检测方法如下:windows 打开cmd  输入dotnet

         linux 下打开temernal  输入dotnet亦然,

  具体安装方法请参考微软官网,window:https://www.microsoft.com/net/download/windows/build

                linux:https://www.microsoft.com/net/download/linux/build

新建解决方案:

  

此处先说说拙见:Program.cs和Startup.cs文件同为项目启动文件,但是实际上项目由main作为唯一入口startup中主要含有一些项目的配置,比如IOC组件注入、MVC配置,具体请百度。

开发就到此为止。

window下部署:本地运行CMD控制台,切换到程序运行目录:cd E:\QMX\qmxweb\QMX.CoreWeb\QMX.CoreWeb

运行命令:dotnet restore   拉取项目所需引用以及幻云nuget包准备运行

运行命令:dotnet run   这个命令完成了本地的程序运行,结果如下:

  

此时使用浏览器打开localhost:8080/# 完成本地的站点运行。

以上仅仅完成了程序的运行,并没有完成部署,若想使用8080端口部署该应用,操作如下:

在运行目录下,执行命令:dotnet publish

    

此时即完成了站点发布产物的生成  那么我们怎么将这个产物进行部署到指定端口呢?

上图中最后一行指出了发布产物的位置,切换到此目录下:cd E:\QMX\qmxweb\QMX.CoreWeb\QMX.CoreWeb\bin\Debug\netcoreapp2.0\publish\

执行发布命令:dotnet QMX.CoreWeb.dll  此时即完成了站点的发布,并会报告出该应用程序监听端口,如下:

  

至此已经完成window下core站点的发布。

linux下部署:

准备:

  1)安装nginx 此处不再赘述  具体请参考https://www.cnblogs.com/jimisun/p/8057156.html

  2)安装.netcore组件

  3)下载winscap 地址 https://www.winpcap.org/install/default.htm

  4)下载putty 地址https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html

GO:

  1)使用nginx监听8080端口  具体操作就是在nginx的安装目录下配置站点对应域名映射本机8080端口。

  2)使用winscap连接本机的window环境和服务器linux环境

  

在此工具帮助下在linux下建立文件夹  从window下找到coreweb对应的发布产物,拷贝到对应的linux环境下。

  3)使用putty连接上远程机器之后,切换到对应的发布产物  默认:【应用程序名称】.ll所在目录下,执行

  dotnet  [YourAppName].dll

此时可以看到shell提示系统已经监听了8080端口,此时linux内部访问8080端口已经可以直接访问该应用,配合上nginx则实现了域名直接访问内部8080端口的过程。

那么,是不是到此结束了呢??答案是:否

 

  当你辛辛苦苦撸完代码部署完毕之后,你随后关掉了shell,却发现原先能访问的站点不能访问了,这是为什么呢?

  因为该程序依赖shell的持续执行,如若不想干等,只有重新搞一个守护进程持续帮我们执行dotnet运行app的命令。

守护进程

  执行命令:sudo apt-get install supervisor   安装完毕守护进程

  但是我们要进行守护进程的配置:本人安装的守护进程默认安装路径在/etc/supervisor/之下,ls我们看到有一个conf.d的文件夹和supervisor.conf,显然后者就是我们要的配置文件了!

vim打开之后,大失所望,原因,包含的文件是*.conf  吗,去读取的守护配置文件,自己在写一个吧。

  

切换到conf,d文件夹下,打开vim [AppName].conf   编写如下文件

  [program:qmxCoreService]
  command=dotnet QMX.CoreWeb.dll; 运行程序的命令
  directory=/root/QMX.Web/ ; 命令执行的目录
  autostart=true ; 程序意是否自动启动
  autorestart=true; 程序意外退出是否自动重启
  stderr_logfile=/var/log/QMX.CoreWeb.err.log ; 错误日志文件
  stdout_logfile=/var/log/QMX.CoreWeb.out.log ; 输出日志文件
  user=root; 进程执行的用户身份
  stopsignal=INT

以上配置完毕之后,:wq退出vim之后  执行命令:supervisord -c /etc/supervisor/supervisord.conf

执行之后,正常情况下啥都不发生,如果发生了以下错误,如:

Another program is already listening on a port that one of our HTTP servers is configured to use. Shut this program down first before starting supervisord.
For help, use /usr/bin/supervisord -h

不要紧张,两步即可轻松解决:

1)find / -name supervisor.sock   得到该路径  path1

2)unlink  path1

再次读取supervisord -c /etc/supervisor/supervisord.conf

此时 ps -ef | grep  [APPName***]  如果出现两个进程,一个是守护进程,一个是dotnet [app].dll则说明完成守护了呢。

到此为止  coreweb在linux下的部署就ok了。

.net core2.0+nginx+Ubuntu14.04【一个小白的初次尝试】的更多相关文章

  1. Install Sogou IM 2.0 in Ubuntu14.04+/Xfce

    Ubuntu14.04+ 安装搜狗输入法 搜狗输入法是一款非常友好的输入法产品,从Ubuntu14.04开始对Linux支持,不过只是Debian系的,是Ubuntu优麒麟组引入的.优麒麟是针对国人设 ...

  2. 使用Docker快速创建.Net Core2.0 Nginx负载均衡节点

    本文版权归博客园和作者吴双本人共同所有 转载和爬虫请注明原文地址 www.cnblogs.com/tdws 一.Self-Host Kestrel 1. 在vs2017中新建dotnet core2. ...

  3. .Net Core2.0 + Nginx + CentOS 部署

    准备把项目往Linux上迁移,整个流程跑了一下,也遇到无数个坑...以下为亲测并修改后的完整流程... 安装ZIP yum install -y unzip zip Putty:WINDOWS上传文件 ...

  4. spark 1.6.0 安装与配置(spark1.6.0、Ubuntu14.04、hadoop2.6.0、scala2.10.6、jdk1.7)

    前几天刚着实研究spark,spark安装与配置是入门的关键,本人也是根据网上各位大神的教程,尝试配置,发现版本对应最为关键.现将自己的安装与配置过程介绍如下,如有兴趣的同学可以尝试安装.所谓工欲善其 ...

  5. ubuntu14.04下安装cudnn5.1.3,opencv3.0,编译caffe及配置matlab和python接口过程记录

    已有条件: ubuntu14.04+cuda7.5+anaconda2(即python2.7)+matlabR2014a 上述已经装好了,开始搭建caffe环境. 1. 装cudnn5.1.3,参照: ...

  6. ubuntu14.04上实现faster rcnn_TF的demo程序及训练过程

    安装环境:Ubuntu14.04.显卡Tesla K40C+GeForce GT 705.tensorflow1.0.0.pycharm5.0 说明:原文见博客园,有问题原文下留言,不定期回复.本文作 ...

  7. Ubuntu14.04下安装tomcat

    1.官方网站下载最新的tomcat:http://tomcat.apache.org/download-80.cgi在ubuntu上,我们下载zip和tar.gz.Ubuntu14.04安装和配置To ...

  8. .NET Core2.0+MVC 用session,cookie实现的sso单点登录

    博主刚接触.NET Core2.0,想做一个单点登录的demo,所以参考了一些资料,这里给上链接: 1.http://www.cnblogs.com/baibaomen/p/sso-sequence- ...

  9. Ubuntu14.04(nginx+php+mysql+vsftp)配置安装流程

    Ubuntu14.04(nginx+php+mysql+vsftp)配置安装流程 1.先切换到root用户 sudo  su 2.更新软件源 apt update apt-get upgrade 3. ...

随机推荐

  1. JAVA的 IO NIO AIO笔记

        IO      linux内核将所有外部设备都看做一个文件来操作,对一个文件的读写会调用内核系统命令,放回一个file descriptor(文件描述符), 对一个socket的读写也会有相应 ...

  2. shell实例利用crontab自动清除日志

    shell实例利用crontab自动清除日志 程序运行会产生很多的日志,对于无用的日志手动删除比价麻烦,写一个自动执行的命令是很有必要的. 删除文件shell命令 find 对应目录 -mtime + ...

  3. Python selenium webdriver设置加载页面超时

    1.  pageLoadTimeout: pageLoadTimeout方法用来设置页面完全加载的超时时间,完全加载即页面全部渲染,异步同步脚本都执行完成.没有设置超时时间默认是等待页面全部加载完成才 ...

  4. 通过代码定义shape/selector

    public class DrawableUtil { /** * 定义一个shape资源 * * @param rgb * @param corneradius * @return */ publi ...

  5. Redis 设计与实现 (一)--数据结构

    底层数据结构:动态字符串.字典.整数集合.双端链表.压缩列表 字符串对象: int    浮点数值 raw  字符串值>32字节 embstr   字符串值<32字节 字符串编码转换: i ...

  6. 告诉你,Spring Boot 真是个牛逼货!

    现在 Spring Boot 非常火,各种技术文章,各种付费教程,多如牛毛,可能还有些不知道 Spring Boot 的,那它到底是什么呢?有什么用?今天给大家详细介绍一下. Spring Boot ...

  7. 【转】CSS中的浮动和清除浮动

    以下转自<CSS中的浮动和清除浮动,梳理一下!> 浮动到底是什么? 浮动核心就一句话:浮动元素会脱离文档流并向左/向右浮动,直到碰到父元素或者另一个浮动元素.请默念3次! 浮动最初设计的目 ...

  8. GloVe损失函数的理解

        简介 GloVe是一种非常简单快速的训练词向量的算法.与复杂的word2vec相比,其是一个log双线性模型,仅通过一个简单的损失函数就能够得到很好的结果. (1)J=∑i,jNf(Xi,j) ...

  9. mysql 开发基础系列13 选择合适的数据类型(下)

    一.  BloB和Text 1. 合成索引 合成索引可以提高大文本字段BLOB和Text的查询性能, 合成索引是在表中增加一个字段存放散列值,这种技术只能用于精确匹配的查询,可以使用md5()或sha ...

  10. 项目ITP(五) spring4.0 整合 Quartz 实现任务调度

    前言 系列文章:[传送门] 项目需求: 二维码推送到一体机上,给学生签到扫描用.然后需要的是 上课前20分钟 ,幸好在帮带我的学长做 p2p 的时候,接触过.自然 quartz 是首选.所以我就配置了 ...