So Easy - 在Linux服务器上部署 .NET Core App
一.环境准备
- 服务器:阿里云64位CentOS 7.4.1708版本;
- 客户端:Windows 10;
- SFTP客户端:FileZilla;用来进行文件传输;
- SSH工具:Xshell 6;用来在Windows 上远程访问CentOS;
二.在Linux上安装.NET 环境
使用如下命令注册Microsoft需要的依赖环境,该命令类似于Window上的环境变量,它指向了微软的环境源,地址中的对每个系统是不一样,所以我们要斟酌一下的Linux系统是什么,再去拉取。
wget -q https://packages.microsoft.com/config/ubuntu/18.04/packages-microsoft-prod.deb
比如你当时装了.NET Core3.0,但是呢!微软过了几天又出了.NET Core 3.1 ,这个时候就需要更新你这个配给的配置,通过以下命令。
yum update
yum update命令会重新拉取下,随后重新做配置,但你的dotnet sdk不会受任何影响,随后安装dotnet sdk。
yum install dotnet-sdk-3.1
安装完会出现以下截图,随后我们可以通过dotnet--info来判断是否安装成功。
此时环境就运行环境就搭建完璧了~
二.使用FileZilla工具向服务器推送应用程序
值得一提的是任何服务器的ftp端口都是22,这个是必须要注意的,否则会一直连接失败。
此时我们向服务器传送了发布文件,如果不出意外我们可以直接在Liunx上看到。通过Ls 、Cd /完成查看。
随后我们找到了以dll结尾并且是你解决方案的名称,随后我们直接dotnet 命令来进行启动项目。
三.启动应用程序
此时我们可以看到我们的内网是以5000端口启动的,这得益于我们直接将.NET Core直接设置原因,当然我们如果要在阿里云上公网IP的安全映射进行设置,在此之前我们要测试一下内网是否正常,常用的命令是curl,不够这个命令需要安装,在Centos和ubuntu安装命令是不一样的。具体命令如下:
apt-get install curl //ubuntu的命令
yum install curl //Centos的命令
关于Curl这个命令很强大,这个就不这里详谈了,安装完成之后就可以使用这个命令了,最后我们测试内网看看是否正常。
此时发现内网已经打通,现在我们通过阿里云公网IP对内网进行映射。在阿里云中的安全组中,找到安全组规则,添加一条映射。放开所有IP,这样就ok了,具体如下。
此时,试着激动的双手打开手机试着去访问....OK,Nice..
.
四.进程守护
不过一个尴尬的事情出现了,我们只是通过dotnet命令启动了项目,但是我们的XShell关闭你的应用程序就会关闭,此时我们就需要进程守护了。这样就可以让你的应用程序每时每刻都可以为你服务。Supervisor是Python做一个client/server服务,是Linux/Unix双系统下的一个进程管理工具。它可以很方便的监听、启动、停止、重启一个或多个进程。用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。通过这里你应该就会明白我们会干什么,我们会尝试着关闭Xshell,看看它会不会帮我们去重启应用程序,如果可以正常访问,那么你的进程守护配置成功!好吧废话不多说。
我们首先需要在Linux系统上安装 Supervisor ,在安装它之前,我们需要安装Python 包。
yum install python-setuptools
随后我们在安装Supervisor,执行结果如下图。
easy_install supervisor
随后创建几个文件夹,包括supervisor,在这个文件夹中包含了supervisor的一切配置。包含了进程配置文件(也就是大概你想让这个进程去干什么?去执行什么命令?在什么目录下?下面我们会逐一说明下配置文件的各个节点)以及supervisor本身监听服务的配置。
4.1 在etc文件夹下新建文件夹supervisor
mkdir /etc/supervisor
4.2 在supervisor文件夹下新建文件夹conf.d
mkdir /etc/supervisor/conf.d
4.3 生成supervisord.conf 配置文件
echo_supervisord_conf > /etc/supervisor/supervisord.conf
4.4 定位到文件夹下修改配置文件:
cd /etc/supervisor
vim supervisord.conf
改变这个路径只是为了能够找到我们的conf.d文件夹中我们自定义的配置文件。conf.d中是我们自己创建的。所以要进行改变。我们在这个文件内容的最下面,可以看到有一个included标签,这个就是我刚才所说的。它默认是这个样子,从内容可以看出是让我们进行修改的。
修改前的内容如下:
;[include]
;files = relative/directory/*ini
修改后的内容如下:
[include]
files = conf.d/*.conf
这个时候supervisord的配置已经结束了,那么就剩你的应用程序级别的配置文件了。上述的步骤其实都可以通过FileZilla工具实现,这样更好的去编辑。
4.5 创建应用程序级别配置文件
[program:AspNetCore_Cookie]
command=dotnet AspNetCore_Cookie.dll
directory=/home/publish
environment=ASPNETCORE__ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true
autorestart=true
startsecs=
stderr_logfile=/var/log/HelloWebApp.err.log
stdout_logfile=/var/log/HelloWebApp.out.log
对于上述的配置文件我做了如下解释,当然有错误的话可以纠正,毕竟是根据我对鸟语的理解不是很...emmm
command= 要执行的命令,在.NET Core 应用程序中 我们都是使用dotnet 命令来启动应用程序的
directory= 命令执行的目录 比如你的publish 在某个文件夹 那你就写哪里
environment= 环境变量 ASP.NET Core的环境变量 可能是有的时候需要linux管理员去访问,不过我是root,这个我是不太懂
user= 进程执行的用户身份 这里写的root
stopsignal=INT 这个都没人动 我也不动 emmm
autostart= 是否自动启动
autorestart= 是否自动重启
startsecs= 自动重启间隔
stderr_logfile= 标准错误日志
stdout_logfile= 标准输出日志
就现在,我们的配置已完毕,如果你是按照上方进行配置的,那么你肯定是没有问题的。
4.6 启动进程守护服务
运行 supervisord -c /etc/supervisor/supervisord.conf 看看是否包报错信息,如果没有则配置成功。随后我们直接启动Supervisord服务。
sudo supervisorctl shutdown && sudo supervisord -c /etc/supervisor/supervisord.conf
并且我们查看进程看看我们刚才的应用程序级别配置是否有效。
现在配置一切成功,去打开你的网站吧!,关闭你的XShell 或者 云端在线远程,这个时候再去试着访问你的网站。ok没问题。
So Easy - 在Linux服务器上部署 .NET Core App的更多相关文章
- 如何在Linux服务器上部署禅道
最近换了新的项目团队,由于新团队比较年轻化,没有实行正规的项目管理,于是我自告奋勇要为团队管理出一份力,帮助团队建立敏捷化的项目管理,经过多方考究和对比后,选择了目前较受欢迎的开源项目管理软件:禅道. ...
- linux服务器上部署项目,同时运行两个或多个tomcat
在阿里云服务器上部署项目的时候,想使用阿里云提供的负载均衡服务并创建两个监听(如图), 但需要一台服务器提供两个端口,于是就请教前辈并查询资料,得知: 一台服务器提供两个端口,有两种方式: 1.一个t ...
- Django项目在Linux服务器上部署和躺过的坑
引言 在各方的推荐下,领导让我在测试环境部署之前开发的测试数据预报平台.那么问题来了,既然要在服务器上部署, 就需要准备: 1.linux服务器配置 2.linux安装python环境搭建与配置 3. ...
- 如何在Linux服务器上部署Mysql
一.安装mysql 1.通过文件上传工具,将mysql安装包上传到linux服务器上 2.卸载mariadb包,由于系统中存在mariadb包会导致mysql安装时报错mariadb-libs被mys ...
- linux服务器上部署jdk+tomcat+rocketmq+redis-cluster
通常我们拿到一组干净的linux服务器,需要初始化安装一些基础软件,这里一站式介绍部署jdk+tomcat+rocketmq+redis-cluster 前言:如果要在多台服务器上安装,在一台服务器上 ...
- 零基础在Linux服务器上部署javaweb项目
本教程使用的工具下载链接:http://pan.baidu.com/s/1sl1qz2P 密码:43pj 一.安装JDK 1.首先要查看服务器的系统版本,是32位还是64位 #getconf LONG ...
- .Net Core WebApi(三)在Linux服务器上部署
鸽了好久,终于有个时间继续写了,继上一篇之后,又写(水)了一篇,有什么不足之处请大家指出,多谢各位了. 下面有两个需要用到的软件,putty和pscp,我已经上传到博客园了,下载请点击这里. 一.准备 ...
- linux服务器上部署springboot项目,并让他持续运行到后台
我们知道在运行springboot 项目只需要java -jar + 项目的war包(jar包)名. 但是只要终端已停止那么服务就会被关闭,也就无法访问到我们的项目了.所以我们可以使用守护进程的方式来 ...
- 在 Linux 服务器上部署 nginx 之后不能访问
原文地址:https://blog.csdn.net/lipeigang1109/article/details/73295373 解决办法:https://jingyan.baidu.com/art ...
随机推荐
- 使用 Angular 打造微前端架构的 ToB 企业级应用
这篇文章其实已经准备了11个月了,因为虽然我们年初就开始使用 Angular 的微前端架构,但是产品一直没有正式发布,无法通过生产环境实践验证可行性,11月16日我们的产品正式灰度发布,所以是时候分享 ...
- 听说PHP的生成器yield处理大量数据杠杠的
官方解释yield yield生成器是php5.5之后出现的,官方文档这样解释:yield提供了一种更容易的方法来实现简单的迭代对象,相比较定义类实现 Iterator 接口的方式,性能开销和复杂性大 ...
- String类的详细
String str = new String("abc")创建过程 (1) 先定义一个名为str的对String类的对象引用变量放入栈中. (2) 然后在堆中(不是常量池)创建一 ...
- Java 数据类型、变量
Java 数据类型 在 Java 中,对于每一种数据都定义了明确的具体的数据类型,在内存中分配了不同大小的内存空间. 整数类型 (byte.short.int.long) 1.Java 各整数类型 ...
- linux用户资源控制
/etc/security/limits.conf配置文件详解 这个文件主要是用来限制用户对资源的使用.是/lib64/security/pam_limits.so模块对应的/etc/serurity ...
- .Net Core 3.0 使用 Serilog 把日志记录到 SqlServer
Serilog简介 Serilog是.net中的诊断日志库,可以在所有的.net平台上面运行.Serilog支持结构化日志记录,对复杂.分布式.异步应用程序的支持非常出色.Serilog可以通过插件的 ...
- Servlet+Ajax实现搜索框智能提示
简介:搜索框相信大家都不陌生,几乎每天都会在各类网站进行着搜索.有没有注意到,很多的搜索功能,当输入内容时,下面会出现提示.这类提示就叫做搜索框的智能提示,本门课程就为大家介绍如何使用Servlet和 ...
- 针对可变类型的for遍历
针对可变类型的for遍历 举个例子 lis = [1,6,1, 2, 3,3, 4, 5] for i in lis: lis.remove(i) print(lis) [6, 1, 2, 3, 3, ...
- php-fpm的pool、php-fpm慢执行日志、open_basedir、php-fpm进程管理
6月13日任务 12.21 php-fpm的pool12.22 php-fpm慢执行日志12.23 open_basedir12.24 php-fpm进程管理 12.21 php-fpm的pool p ...
- shell中的函数、shell中的数组、告警系统需求分析
7月16日任务 20.16/20.17 shell中的函数20.18 shell中的数组20.19 告警系统需求分析 20.16/20.17 shell中的函数 函数就是一个子shell就是一个代码段 ...