一、文章概要

 这篇文章是讲述一个Linux 新手将 .NET-Core 项目部署在 Linux 服务器上的一个记录,以及在部署期间遇到的问题以及解决办法。有不恰当的地方。欢迎大神指正。

二、前期准备

 如果你要部署在Linux服务器上,首先你需要连接到Linux服务器。那么用什么工具连呢?1. 如果你是在Windows的系统环境下,我是采用 PuTTY来进行SSH 连接的。可以参考:使用Putty连接SSH管理linux图文教程 。2.如果你的系统是Mac 的,那直接用Terminal 就可以啦。输入:

ssh root@hostname

然后就连接上Linux 服务器啦。

   2.1 项目环境

  • .NET-Core 项目的版本为 .NET Core 1.1
  • Linux 服务器的版本为Ubuntu 14.04

   2.2 所需工具

  • PuTTY

三、文章内容

  在上面的步骤都做好了之后呢,我们登陆到Linux 服务器上,进行如下操作:

  1. 可以先用mkdir /data 创建一个发布用的文件夹。
  2. 然后进入cd data
  3. 操作 git ,先把你的项目clone 到 data文件夹 git clone 项目地址
  4. 进行dotnet 的命令操作。 dotnet restore 进行包的还原,有些因为是有些包是自己公司的,所以要加上自己公司包的地址
dotnet restore -s http://nuget.222.om/nuget/core -s http://nuget.565646.com/nuget/Default
  1. dotnet publish -c release 操作,进行发布。发布成功,得到发布后的路径为:/data/MyProject/MyProject.Web/bin/release/netcoreapp1.1/ubuntu.14.04-x64/publish
  2. 用supervisor 来管理
  3. 先安装 supervisor 通过 用apt-get install supervisor命令安装supervisor
  4. 在 /etc/supervisor/conf.d 目录中添加 q.conf 配置文件,其中的配置如下:
[program:q]
directory=/data/MyProject/MyProject.Web/bin/release/netcoreapp1.1/ubuntu.14.04-x64/publish
command=/data/MyProject/MyProject.Web/bin/release/netcoreapp1.1/ubuntu.14.04-x64/publish/MyProject.Web
autostart=true
autorestart=true
stderr_logfile=/var/log/q.err.log
stdout_logfile=/var/log/q.out.log
environment=Hosting__Environment=Production
user=root
stopsignal=INT
  1. 运行命令service supervisor restart重启supervisor,站点就会自动启动
  2. 在浏览器输入地址,成功运行。

四、问题解决

   4.1 错误:

Err https://apt-mo.trafficmanager.net trusty/main amd64 Packages

Bad header line

   解决:

https://www.idaima.com/a/6735.html

   4.2 错误:

Reading package lists... Done

Building dependency tree

Reading state information... Done

E: Unable to locate package dotnet-dev-1.0.0-preview2.1-003177

E: Couldn't find any package by regex 'dotnet-dev-1.0.0-preview2.1-003177'

   解决:

由于上一个问题没解决导致

   4.3 错误:

在Linux上还原包失败

   解决:

有些因为是有些包是自己公司的,所以要加上自己公司包的地址```C#

dotnet restore -s http://nuget.222.om/nuget/core -s http://nuget.565646.com/nuget/Default

####   4.4 问题:

> A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name correct and that SQL Server is configured to allow remote connections.(provider: TCP Provider, error: 35 - An internal exception was caught) ---> System.AggregateException: One or more errors occurred. (No such device or address) ---> System.Net.Internals.SocketExceptionFactory+ExtendedSocketException: No such device or address

####   相关问题:
> https://github.com/dotnet/corefx/issues/8086 ###五、参考文献 * 1.这篇是讲如何在Linux 上配置`.NET-Core`的环境的。[.NET - Powerful Open Source Development](https://www.microsoft.com/net/core#linuxubuntu)
* 2.这篇是讲如何使用Putty连接SSH管理linux图文教程。[使用Putty连接SSH管理linux图文教程](http://down.chinaz.com/server/201109/1169_1.htm)
* 3.这篇是讲sudo 出现unable to resolve host 解决方法。[sudo 出现unable to resolve host 解决方法](http://blog.csdn.net/ichuzhen/article/details/8241847)
* 4.这篇是讲Vim常用的命令,因为我刚刚接触 Linux ,对那些命令有些陌生,大神可以跳过。[Vim常用的命令](http://pizn.github.io/2012/03/03/vim-commonly-used-command.html)
* 5.记一次阿里云Linux服务器安装.net core sdk的问题以及解决方法.[记一次阿里云Linux服务器安装.net core sdk的问题以及解决方法](https://www.idaima.com/a/6735.html)
* 6.System.Net.Internals.InternalSocketException on OSX/Linux (Debian).[System.Net.Internals.InternalSocketException on OSX/Linux (Debian)](https://github.com/dotnet/corefx/issues/8086)
* 7.ASP.NET Core Web API on Ubuntu 14.04 LTS doesn't get SQL connection to MSSQL 2008 server. [ASP.NET Core Web API on Ubuntu 14.04 LTS doesn't get SQL connection to MSSQL 2008 server](http://stackoverflow.com/questions/40150357/asp-net-core-web-api-on-ubuntu-14-04-lts-doesnt-get-sql-connection-to-mssql-200)
* 8.Linux sudo 命令。[Linux sudo 命令](http://www.cnblogs.com/sparkdev/p/6189196.html)
* 9.Linux kill 强制关闭 进程。(不建议使用)[Linux kill 强制关闭 进程](http://blog.csdn.net/lechengyuyuan/article/details/16337233)
* 10.Linux认证辅导:Linux下杀僵尸进程办法。 [Linux认证辅导:Linux下杀僵尸进程办法](http://6244685.blog.51cto.com/6234685/1316234)

在Linux服务器部署 .NET-Core 项目的更多相关文章

  1. Linux服务器部署.Net Core笔记:目录

        目录 Linux服务器部署.Net Core笔记:一.开启ssh服务 Linux服务器部署.Net Core笔记:二.安装FTP Linux服务器部署.Net Core笔记:三.安装.NetC ...

  2. Linux服务器部署.Net Core笔记:四、安装Supervisor进程守护

    Supervisor 是用 Python 开发的 Linux/Unix 系统下的一个进程管理工具.它可以使进程脱离终端,变为后台守护进程(daemon).实时监控进程状态,异常退出时能自动重启. Su ...

  3. 在Linux上部署DotNet Core项目的时候发现Apache无法转发Kestrel的5000端口的问题

    CentOS服务器上使用Apache托管Dotnet Core2,服务启动了,端口也打开了.在本地使用curl命令可以访问5000端口的网页内容,但是访问Apache的端口却无法获取到网页的内容.想起 ...

  4. linux 服务器部署的web项目存入数据库的时间不正确

    在linux获取当前时间 date 获取的时间是正常的 ----- java写了个测试类 public class TestDate { public static void main(String[ ...

  5. Linux服务器部署.Net Core笔记:六、安装MySQL

    接下来我们在 Centos7 系统下使用 yum 命令安装 MySQL,需要注意的是 CentOS 7 版本中 MySQL数据库已从默认的程序列表中移除,所以在安装前我们需要先去官网下载 Yum 资源 ...

  6. Linux服务器部署.Net Core笔记:五、安装Nginx

    我们搜索一下yum库关于nginx的rpm包:yum list | grep nginx 找到rpm安装包,我们就可以使用yum直接安装了:yum install nginx 修改nginx配置文件: ...

  7. Linux服务器部署.Net Core笔记:三、CentOS 7上安装.NetCore运行环境

    1.要开始安装 .NET,您需要注册 Microsoft 签名密钥并添加 Microsoft 产品提要.每台机器只需要做一次. 打开命令提示符并运行以下命令:sudo rpm -Uvh https:/ ...

  8. Linux服务器部署.Net Core笔记:二、安装FTP

    1.安装 安装ftp:yum install -y vsftpd 将ftp设置开机启动:systemctl enable vsftpd.service 2.配置 安装好后在ftp配置文件里进行配置 : ...

  9. Linux服务器部署.Net Core笔记:一、开启ssh服务

    开启ssh服务需要root权限,先用root账户登陆系统 在安装ssh前我们先更新一下yum:yum update 先检查有没有安装ssh服务:rpm -qa | grep ssh 如果没有安装ssh ...

  10. linux部署.net Core项目

    首篇笔记,多多关照.方便回忆和给新手指导,大神绕道 首先在Linux系统部署.net Core项目首先准备一个Linux系统的服务器,百度云,阿里云都行. 1.net core 部署在Linux系统上 ...

随机推荐

  1. linux dd使用记录

    dd if=/dev/sda of=/dev/sdb bs=10M Linux下显示dd命令的进度: dd if=/dev/zero of=/tmp/zero.img bs=10M count=100 ...

  2. alpha-咸鱼冲刺day1-紫仪

    总汇链接 一,合照 emmmmm.自然是没有的. 二,项目燃尽图 三,项目进展   登陆界面随意写了一下.(明天用来做测试的) 把学姐给我的模板改成了自家的个人主页界面,侧边栏啥的都弄出来了(快撒花花 ...

  3. Twisted 使用多线程

    Twisted 提供主线程和辅线程,主线程只有1个,即reactor.run(),辅线程有多个,可以自由配置 Twisted 大多数代码运行在主线程中,dataReceived(),connectio ...

  4. vue 中获取select 的option的value 直接click?

    我刚开始遇到这个问题的时候 直接用的click进行dom操作获取value 但是发现并灭有什么作用 问了旁边大神 才想起来还有change这个操作 于是乎 答案有了解决方案 1.在你的select中添 ...

  5. jQuery 文档操作之prepend() 和prependTo()方法.

    //prepend() $("#btnpre").click(function(){ //该方法在被选元素的开头(仍位于内部)插入指定内容. $("div"). ...

  6. JAVA_SE基础——57.有了包之后类与类之间的访问使用import语句

    代码1访问代码2 代码1: class Demo3 { public static void main(String[] args) { Demo4 a = new Demo4(); a.print( ...

  7. split 过滤空的元素

    命令形式: split(str='',number=string.count(str))[n] str 分隔符 number 切分几次,[n] 获取第几个值. 1.如果切分的可迭代对象中包含空元素的解 ...

  8. spring MVC中定义异常页面

    如果我们在使用Spring MVC的过程中,想自定义异常页面的话,我们可以使用DispatcherServlet来指定异常页面,具体的做法很简单: 下面看我曾经的一个项目的spring配置文件: 1 ...

  9. LXC学习实践(1)LXC的概念和用途

    1.LXC是什么? LXC是Linux containers的简称,是一种基于容器的操作系统层级的虚拟化技术,Sourceforge上有LXC这个开源项目. 2.LXC能做什么? LXC和Linux内 ...

  10. [NOIP2009][LuoguP1073] 最优贸易 - Tarjan,拓扑+DP

    Description&Data 题面:https://www.luogu.org/problemnew/show/P1073 Solution Tarjan对联通块缩点,在DAG上按照拓扑序 ...