一、前言

亲自动手尝试部署.Net Core在Linux,看了不少文章,感觉是很简单,但是做下去也会有很多问题,今天就写个文章记录下来。

二、环境安装

虚拟机(VMware),在网上找就行。

地址:https://download3.vmware.com/software/wkst/file/VMware-workstation-full-12.5.6-5528349.exe,直接下载就行。

Linux版本(ubuntu),这里选择了ubuntu系统,也是比较常用的,大家可以去找一些国内的下载源,比如 阿里的,网易的,下载速度是很快的。

阿里的:http://mirrors.aliyun.com/  网易的 http://mirrors.163.com/

以阿里的举个栗子,拉到最下边,选择ubuntu-releases 点击进去

进去之后这里有很多版本,我选择的是16.04,点击进入

选择如图所示的,下载就可以了。desktop是含有桌面版本的,使用起来比较方便,server版本是不带桌面的(当然选带桌面的啊,不然心里慌,看到黑屏还以为电脑坏了呢。[捂脸])

下载好安装就行了。虚拟机怎么安装在这里就不说了,不会的去百度一下。

三、安装DotNet Sdk

3.1 登录系统。

开机界面如下。输入密码登录进去之后,是这个界面(前几天还有小伙伴说我用的是mac,给我吓一跳,不得不说,还真的像)。

3.2 使用terminal终端。

在windows中叫cmd 命令行,就那个黑白屏。点击最上边一个图标,搜索ter ,然后点击拖拽出来到右边的栏里。方便我们以后点击随时使用。

3.3 下载dotnet sdk。

地址:https://www.microsoft.com/net/download/linux  dotnet sdk  是为了给开发人员开发时使用的,里边包括了运行时,严格来说,在服务器上部署网站不做开发,只用安装一个运行时就行了。这里不讲究那么多。

3.4 安装到linux系统里

下载好后把下边这个东西拖拽到你的系统里,记得改个名字,比如就叫dotnet.tar.gz。tar.gz 是linux下的一种压缩包格式。先放到home文件夹下。

右键点击出现菜单,点open terminal ,准备开始写命令。

执行命令:mkdir -p $HOME/dotnet && tar zxf dotnet.tar.gz -C $HOME/dotnet  (这一步就是在当前文件夹下 创建一个dotnet的文件下,并把dotnet.tar.gz解压到里边)

执行命令:export PATH=$PATH:$HOME/dotnet   (这一步就是设置环境变量,$HOME相当于你的home目录)

环境变量对java开发者来说并不陌生,然而好多人也只是知道需要配这个东西,但是为什么就不知道了。

科普一下环境变量:就是当你执行一个命令的时候,如果当前目录没有,它就会去当前的环境变量里去找(环境变量里存放的是一系列的目录,倘若在这些目录里找到了就可以执行),所以,为了我们在每个目录任何路径下都可以执行某个命令,就需要配置一下。

注意:linux 为每个用户创建了一个文件夹,默认/home/[username]下边,当前用户就是我自己songlin 所以点击home就直接显示了我的文件夹。下边是我自己相对于整个系统的目录,

这一点如果不懂可以下去之后学习,今天不做介绍。

3.6 检查命令

运行dotnet命令,出现以下情况,说明安装成功。但是这种方式设置的临时的,当你关闭terminal的时候就没有了。

如果要设置永久有效的,需要执行命令 sudo vim /etc/profile ,即用vim打开这个文件,在这个文件最下边加上一行 export PATH=$HOME/dotnet:$PATH 保存。

设置之后 重启一下就行了。因为这个东西是开机就启动的,执行了这一句话就相当于事先把环境变量设置好了。

接下来发布我们的站点,并把发布的网站复制到服务器的某个目录下边,我复制到了home/wwwroot/webapi下边,如下所示:

3.7 安装nginx配置代理ip访问

3.7.1 安装:sudo apt-get install nginx
3.7.2 然后配置nginx的代理转发,修改/etc/nginx/sites-available/default,修改内容如下,这一步需要root权限修改,注意是全部覆盖,直接添加可能会出问题。

server {
listen 80;
location / {
proxy_pass http://localhost:5000;
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;
}
}

3.7.3 重新加载

sudo nginx -t  //检查配置是否正确
sudo nginx -s reload //重新加载

这样就能实现ip访问了。打开你的虚拟机,使用ifconfig 查看ip地址,然后浏览器输入ip地址就可以访问了。

3.8 安装Supervisor

3.8.1 安装:sudo apt-get install supervisor

3.8.2 配置:

安装完成之后,在 /ect/supervisor/confg.d/ 目录下新建一个配置文件,取名为 TestCore.conf (我取的是当前项目的名称)

使用命令新建文件: sodu touch testcore.conf

打开testcore.conf,写入如下命令(如果没有权限,请参照上面的方法):  

[program:testcore]
command=dotnet WebApplication.dll #要执行的命令
directory=/home/songlin/wwwroot/webapi #命令执行的目录
environment=ASPNETCORE__ENVIRONMENT=Production #环境变量
user=www-data #进程执行的用户身份
stopsignal=INT
autostart=true #是否自动启动
autorestart=true #是否自动重启
startsecs= #自动重启间隔
stderr_logfile=/var/log/testcore.err.log #标准错误日志
stdout_logfile=/var/log/testcore.out.log #标准输出日志

注意:#后边的内容要去掉,这里是注释,但是supervisor不识别,而且直接输dotnet命令还找不到,现在暂时用下边的配置,直接输入命令的全路径 /home/songlin/dotnet/dotnet,我环境变量之前是配过的,这个问题我也不知道为什么。

[program:testcore]
command=/home/songlin/dotnet/dotnet WebApplication1.dll
directory=/home/songlin/wwwroot/webapi
environment=ASPNETCORE__ENVIRONMENT=Production
user=www-data
stopsignal=INT
autostart=true
autorestart=true
startsecs=
stderr_logfile=/var/log/testcore.err.log
stdout_logfile=/var/log/testcore.out.log

3.8.3 重启

sudo service supervisor stop
sudo service supervisor start

之后重启虚拟机就行了,然后直接用ip访问我们的站点就可以了。

3.8.4 替代方案

当然,也可以用Linux原生的命令nohup命令来替代,意思是不挂起的执行某个命令,就可以了,具体可以搜索一下使用方法。

四、总结

磕磕绊绊总算是部署完成了,感觉还是有点问题,不过总算运行起来,可能有很多配置还没配好,以后再说吧,用到的时候再研究,这只是练练手。    

Linux系统(ubuntu)部署Asp.Net Core网站的更多相关文章

  1. Ubuntu部署Asp.net core网站无法访问

    前几天应工作需要,在阿里云上部署一个测试站点.本以为分分钟的事情,没想到打脸了. 当时直接新建一个webapi项目,publish后直接上传到阿里云,随后设置nginx转发网站端口5000. 接着打开 ...

  2. Linux+Nginx+Supervisor部署ASP.NET Core实操手册

    一.课程介绍 在上一节课程<ASP.NET Core托管和部署Linux实操演练手册>中我们学过net core的部署方式多样性和灵活性.我们通过远程工具输入dotnet 程序集名称.dl ...

  3. linux 环境下部署 Asp.Net Core 项目 访问 oralce 数据库

    1.ASP.NET Core 是一个跨平台的高性能开源框架,可以部署到Linux上,那项目部署在Linux上有哪些好处呢? 1.linux硬件需求小,大部分版本免费,成本低. 2.linux的用户管理 ...

  4. 在Linux CentOS上部署Asp.Net Core项目(Tengine、Asp.Net Core、Centos、MySql)

    一.前言 1.简单记录一下Linux CentOS 7中安装与配置Tengine的详细步骤. 2.简单比较一下Tengine 和Nginx 3.搭建Asp.net Core和部署 Web程序 4.总结 ...

  5. Linux下自动化部署ASP.NET CORE 3.1(Docker+Jenkins+Nginx)

    1.先配置好Docker阿里云加速,可以使用阿里云容器服务 (可自己在阿里云申请,要不然安装东西直接很慢)注意:https://XXXX.mirror.aliyuncs.com为阿里云加速服务分配地址 ...

  6. asp.net core跨平台--CentOS7.2部署asp.net core网站

    随着vs2015 2017的发布,.NETCore越来越流行了,我就尝试着做了个demo,在centos上试着运行了一下,中间遇到很多问题,不过最后还是成功运行,记录一下过程.废话不多说,直接开始: ...

  7. LINUX 下Jexus部署ASP.NET Core WebApi

    服务器:LINUX  ubuntu16.04  开发软件:VS2015 Update3   dotnet sdk: DotNetCore.1.0.0-VS2015Tools.Preview2   1. ...

  8. ASP.NET CORE网站部署到 windows server 的IIS 上去

    章基于我自己经验的一个总结,在windows服务器上部署asp.net core网站.环境是 windows server 2012数据中心版本 第一步先安装 IIS 服务器 接下来就是一路下一步,然 ...

  9. 如何优雅的利用Windows服务来部署ASP.NET Core程序

    上一篇文章中我给大家讲述了五种部署ASP.NET Core网站的方法,其中有一种方式是通过Windows服务来进行部署,这样既可以做到开启自启动,又不会因为iis的反向代理而损失部分性能.但是美中不足 ...

随机推荐

  1. swiper-动态更改数据后轮播点击或拖动失效

    出现的问题: 1.swiper不能自动切换(设置了autoplay). 2.数据不匹配(需要加载的数据以改变,但是swiper里面的数据出现错误). 3.数据匹配过后,永远切换不到第一条数据. 4.根 ...

  2. Eclipse - 安装Indent Guide,使JAVA代码具备编辑缩进线,和Delphi一样酷!!

    Delphi里面默认就有代码编辑缩进线,这在编写逻辑复杂的大块代码时候非常有好处,可以清楚地看到每块代码的范围,下面就是Delphi里面代码编辑缩进线的截图: 非常棒的效果,我喜欢,在处理复杂逻辑代码 ...

  3. ipc$ 空连接 net use

    常用命令 [xxx]表示的内容,需要根据自己的需求更改 //建立空连接 > net use \\127.0.0.1\ipc$ //删除连接 > net use \\127.0.0.1\ip ...

  4. unity shader入门(二)语义,结构体,逐顶点光照

    下为一个逐顶点漫反射光照shader Shader "study/Chapter6/vertexShader"{ Properties{_Diffuse("Diffuse ...

  5. MySQL Replication--多线程复制MTS

    多线程复制 多线程复制MTS(Mult-Threaded Slave Applier)指使用多个线程来并发应用二进制日志.在MYSQL5.6版本中,多线程复制基于schema来实现,将多个数据库下的事 ...

  6. MySQL/MariaDB数据库的查询缓存优化

    MySQL/MariaDB数据库的查询缓存优化 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MySQL架构 Connectors(MySQL对外提供的交互接口,API): ...

  7. openssl获取ssl证书,配置https

  8. C#锐利体验2读书笔记

    匿名方法,迭代,匿名方法允许我们以一种“内联”的方法来编写方法代码;匿名方法是直接与委托实例化相关联的,使委托实例化更加直观方便.匿名方法的几个相关问题--参数列表,--返回值,--外部变量. add ...

  9. luoguP2768: 珍珠项链(矩阵乘法优化DP)

    题意:有K种珍珠,每种N颗,求长度为1~N的项链,包含K种珍珠的项链种类数.N<=1e9, K<=30; 思路:矩阵快速幂,加个1累加前缀和即可. #include<bits/std ...

  10. 实用Golang库

    框架: 1. Golang轻量级并发服务器框架: zinx / https://www.jianshu.com/p/23d07c0a28e52. 国内谢大牛模仿django制作的重框架: beego3 ...