Linux系统(ubuntu)部署Asp.Net Core网站
一、前言
亲自动手尝试部署.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网站的更多相关文章
- Ubuntu部署Asp.net core网站无法访问
前几天应工作需要,在阿里云上部署一个测试站点.本以为分分钟的事情,没想到打脸了. 当时直接新建一个webapi项目,publish后直接上传到阿里云,随后设置nginx转发网站端口5000. 接着打开 ...
- Linux+Nginx+Supervisor部署ASP.NET Core实操手册
一.课程介绍 在上一节课程<ASP.NET Core托管和部署Linux实操演练手册>中我们学过net core的部署方式多样性和灵活性.我们通过远程工具输入dotnet 程序集名称.dl ...
- linux 环境下部署 Asp.Net Core 项目 访问 oralce 数据库
1.ASP.NET Core 是一个跨平台的高性能开源框架,可以部署到Linux上,那项目部署在Linux上有哪些好处呢? 1.linux硬件需求小,大部分版本免费,成本低. 2.linux的用户管理 ...
- 在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.总结 ...
- Linux下自动化部署ASP.NET CORE 3.1(Docker+Jenkins+Nginx)
1.先配置好Docker阿里云加速,可以使用阿里云容器服务 (可自己在阿里云申请,要不然安装东西直接很慢)注意:https://XXXX.mirror.aliyuncs.com为阿里云加速服务分配地址 ...
- asp.net core跨平台--CentOS7.2部署asp.net core网站
随着vs2015 2017的发布,.NETCore越来越流行了,我就尝试着做了个demo,在centos上试着运行了一下,中间遇到很多问题,不过最后还是成功运行,记录一下过程.废话不多说,直接开始: ...
- LINUX 下Jexus部署ASP.NET Core WebApi
服务器:LINUX ubuntu16.04 开发软件:VS2015 Update3 dotnet sdk: DotNetCore.1.0.0-VS2015Tools.Preview2 1. ...
- ASP.NET CORE网站部署到 windows server 的IIS 上去
章基于我自己经验的一个总结,在windows服务器上部署asp.net core网站.环境是 windows server 2012数据中心版本 第一步先安装 IIS 服务器 接下来就是一路下一步,然 ...
- 如何优雅的利用Windows服务来部署ASP.NET Core程序
上一篇文章中我给大家讲述了五种部署ASP.NET Core网站的方法,其中有一种方式是通过Windows服务来进行部署,这样既可以做到开启自启动,又不会因为iis的反向代理而损失部分性能.但是美中不足 ...
随机推荐
- 带有图标的MessageBox
MessageBoxUtils类的代码如下: Ext.define('org.pine.util.MessageBoxUtils', { singleton: true, /** 普通信息提示框 */ ...
- php正则表达式中preg_match_all函数的详解
php正则表达式中的函数我们之前为大家结果一个preg_match函数,相信大伙对此有所了解,那么php正则表达式中preg_match_all函数的具体使用是如何的呢?今天我们就带大家了解php正则 ...
- 【转】【Salesforce】salesforce 零基础学习(十七)Trigger用法
看本篇之前可以相应阅读以下Trigger相关文章: 1.https://developer.salesforce.com/page/Trigger_Frameworks_and_Apex_Trigge ...
- day 04作业
目录 简述Python的五大数据类型的作用.定义方式.使用方法: 数字类型 字符串类型(str) 列表(list) 字典(dict) 布尔型(bool) 一行代码实现下述代码实现的功能: 写出两种交换 ...
- git 列出两个分支 或者两个提交版本之间不同的文件名字
只列出名字 git diff remotes/origin/dev remotes/origin/master --name-only
- Walle实现自动发布
walle是啥?能干啥?有啥用?这些我都不会去一一道来,如果你还没有明白前面提出的三个问题就不用往下看了,这里这回将walle安装了怎么去使用.如果都要面面俱到不是一两篇博客可以解决的问题,如果希望将 ...
- 《深入理解 Java 虚拟机》读书笔记:Java 内存区域与内存溢出异常
前言 最近开始看这本书,记得前段时间拿起这本书的时候,心情是相当沉重的!当时的剧本是这样的-- 内景.家里 - 下午 我(画外):唉,有点无聊啊!(偶然撇过书架)这么多书得看到什么时候啊,要不要拿一本 ...
- 使用kubeadm 新加入节点(原始token过期后)---转发
kubeadm join kubeadm init 安装完成后你会得到以下的输出,使用join指令可以新增节点到集群,此token 有效期为24小时 You should now deploy a p ...
- ReqMan — 需求提取和协同处理工具
ReqMan是由德国engineering method AG公司开发的一款高效的.可自由定制的需求提取和协同处理工具.ReqMan 能够将PDF.Word.Excel等格式的文档提取 ...
- 如何查看已购买的office密钥
登陆这个网址https://account.microsoft.com/services/ 声明 :转载请注明来源sogeisetsu.cnblogs.com