一、前言

亲自动手尝试部署.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. 带有图标的MessageBox

    MessageBoxUtils类的代码如下: Ext.define('org.pine.util.MessageBoxUtils', { singleton: true, /** 普通信息提示框 */ ...

  2. php正则表达式中preg_match_all函数的详解

    php正则表达式中的函数我们之前为大家结果一个preg_match函数,相信大伙对此有所了解,那么php正则表达式中preg_match_all函数的具体使用是如何的呢?今天我们就带大家了解php正则 ...

  3. 【转】【Salesforce】salesforce 零基础学习(十七)Trigger用法

    看本篇之前可以相应阅读以下Trigger相关文章: 1.https://developer.salesforce.com/page/Trigger_Frameworks_and_Apex_Trigge ...

  4. day 04作业

    目录 简述Python的五大数据类型的作用.定义方式.使用方法: 数字类型 字符串类型(str) 列表(list) 字典(dict) 布尔型(bool) 一行代码实现下述代码实现的功能: 写出两种交换 ...

  5. git 列出两个分支 或者两个提交版本之间不同的文件名字

    只列出名字 git diff remotes/origin/dev remotes/origin/master --name-only

  6. Walle实现自动发布

    walle是啥?能干啥?有啥用?这些我都不会去一一道来,如果你还没有明白前面提出的三个问题就不用往下看了,这里这回将walle安装了怎么去使用.如果都要面面俱到不是一两篇博客可以解决的问题,如果希望将 ...

  7. 《深入理解 Java 虚拟机》读书笔记:Java 内存区域与内存溢出异常

    前言 最近开始看这本书,记得前段时间拿起这本书的时候,心情是相当沉重的!当时的剧本是这样的-- 内景.家里 - 下午 我(画外):唉,有点无聊啊!(偶然撇过书架)这么多书得看到什么时候啊,要不要拿一本 ...

  8. 使用kubeadm 新加入节点(原始token过期后)---转发

    kubeadm join kubeadm init 安装完成后你会得到以下的输出,使用join指令可以新增节点到集群,此token 有效期为24小时 You should now deploy a p ...

  9. ReqMan — 需求提取和协同处理工具

            ReqMan是由德国engineering method AG公司开发的一款高效的.可自由定制的需求提取和协同处理工具.ReqMan 能够将PDF.Word.Excel等格式的文档提取 ...

  10. 如何查看已购买的office密钥

    登陆这个网址https://account.microsoft.com/services/ 声明 :转载请注明来源sogeisetsu.cnblogs.com