新的业务来了,需要使用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. hdu 4370

    这个题说实话我没看出来,我看的别人的博客 https://blog.csdn.net/u013761036/article/details/39377499 这个人讲的很清楚,可以直接去看他的 题目给 ...

  2. poj 3159

    差分约束 我也忘了谁说的了,反正我记得有人说过,只要是差分约束问题都可以转换成图 至少目前看来都是这样的 我一开始spfa+queue超时 看别人博客才知道要用spfa+stack,感觉智商又下降了一 ...

  3. mysql5.6版本的优化

    1. 目标 l 了解什么是优化 l 掌握优化查询的方法 l 掌握优化数据库结构的方法 l 掌握优化MySQL服务器的方法 2. 什么是优化? l 合理安排资源.调整系统参数使MySQL运行更快.更节省 ...

  4. SQL Server 2008 安装(lpt亲测)

    SQL Server安装真的遇到好多问题啊!!  于是就决定写个备忘,方便自己也方便别人. 1.下载安装包 2.打开安装包,就遇到了restart computer 那里failed的错误,导致无法继 ...

  5. Windows 10 IoT Core 17101 for Insider 版本更新

    除夕夜,微软发布了Windows 10 IoT Core 17101 for Insider 版本更新,本次更新只修正了一些Bug,没有发布新的特性. 已知的问题: F5 driver deploym ...

  6. 背水一战 Windows 10 (97) - 选取器: CachedFileUpdater

    [源码下载] 背水一战 Windows 10 (97) - 选取器: CachedFileUpdater 作者:webabcd 介绍背水一战 Windows 10 之 选取器 CachedFileUp ...

  7. python爬虫学习之日志记录模块

    这次的代码就是一个日志记录模块,代码很容易懂,注释很详细,也不需要安装什么库.提供的功能是日志可以显示在屏幕上并且保存在日志文件中.调用的方式也很简单,测试代码里面有. 源代码: #encoding= ...

  8. PackageManager整理

    一.PackageManager的功能 1.安装.卸载应用.2.查询permission相关信息.3.查询Application相关信息(application,activity,receiver,s ...

  9. 前端页面使用emoji

    概述 最近在工作中遇到了移动端emoji的显示问题,于是查找了一些相关资料,试验了一番,把心得记录下来,供以后开发时参考,相信对其他人也有用. 参考资料: 为网站添加emoji表情的支持 思路 在页面 ...

  10. Python安装模块的几种方法

    一.方法1: 单文件模块 直接把文件拷贝到 $python_dir/Lib 二.方法2: 多文件模块,带setup.py 下载模块包,进行解压,进入模块文件夹,执行:python setup.py i ...