CentOS 下运行.net Core程序
系统: 阿里云的默认 CentOS 7.5 镜像
项目环境:.Net Core 2.2
一、安装.Net Core的运行环境
第一步,如果是一台新的服务器,可以升级一下系统的基础软件。如果没有必要也可以跳过这一步。
执行命令
sudo yum update
第二步,注册Microsoft签名密钥,每个机器只要注册一次就可以
注册命令
sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
执行结果
第三步:安装.Net Core SDK ,这里根据项目环境,需要安装2.2版的。不同的开发环境选择对应的运行时版本即可
执行命令
sudo yum install dotnet-sdk-2.2
完成后,通过命令,可以看出.net core的版本
dotnet --version
第四步:上传一个.Net Core的程序,进入到程序包所在目录
执行命令
dotnet HelloWrold.dll #项目的dll文件
到这里,就可以通过服务器IP加上程序设定的端口号(一般默认是5000)进行访问了。如果你的服务器是在云端,有安全防护,需要开启对应的端口访问权限
二、通过 nginx 进行转发
第一步、安装nginx
执行命令
sudo yum install nginx
第二步,修改 nginx 的配置文件
执行命令
vim /etc/nginx/nginx.conf
修改 location的值,修改的内容如下:
# 传递真实IP到后端
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:5000;
这个配置的意思是监听80端口,如果有人访问80端口就把请求转到5000端口,这里的5000端口就是你 .Net Core 程序的端口,默认为5000可以更改,如果有更改换掉即可。
第三步、重启 nginx 的服务。启动 .Net Core 的程序
#重启 nginx
systemctl restart nginx #进行dotnet 项目目录
cd /home/www/hello/ #运行dotnet 项目
dotnet Helloworld.dll
这个时候,我们就可以通过服务器的80端口,访问我们的 .Net Core 程序了。
第四步、配置多个.net core的转发
如果你的服务器的nginx需要转发多个正在运行的 .Net Core 项目,可以通过在nginx的 /etc/nginx/conf.d/ 目录下,为每个项目建立一个转发的规则文件
# 打开配置文件目录
cd /etc/nginx/conf.d/
这里的配置文件目录和文件格式 在 nginx.conf 中有指定。
进入目录后,新建一个文件
vim hello.conf #名称没有要求,可以和自己的项目名称一样,方便查找
server {
listen 80;
server_name hello.leodev.cn;
index index.html; location / {
# 传递真实IP到后端
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://localhost:5000;
}
}
可以看到,配置中,和之前nginx.conf的文件基本是一样的。 我们只是为项目绑定了一个域名
然后重启 nginx 服务,这个时候,我们就可以通过 绑定的域名,访问到我们的 .Net Core 程序了。
三、使用 supervisor 为程序创建守护进程
第一步、安装 supervisor
执行命令:
yum install supervisor
第二步、修改 supervisor 的配置文件
vi /etc/supervisord.conf
这里的意思,在 supervisord.d 文件夹下的所有 ini 类型的文件都是配置文件
我们在这个文件夹下为我们的守护程序创建一个配置文件
#创建配置文件
vim /etc/supervisord.d/hello.ini
[program:helloworldnetcore]
command=dotnet helloworld.dll #运行命令
directory=/home/www/hello #程序路径
environment=ASPNETCORE__ENVIRONMENT=Production
user=root
stopsignal=INT
autostart=true #自动启动
autorestart=true #3秒自动重启
startsecs=3
stderr_logfile=/var/log/ossoffical.err.log
stdout_logfile=/var/log/ossoffical.out.log
以上是我的项目的守护配置文件,可以根据自己的配置文件,修改前三行的内容
第三步、启动服务
supervisord -c /etc/supervisord.conf #启动服务
supervisorctl reload #重新加载配置 #其他相关操作
supervisorctl shutdown #关闭
systemctl enable supervisord #开机启动
systemctl is-enabled supervisord #验证是否开机启动
有时候启动的时候会提示错误:
错误1:端口被占用
解决方案:
#查询到 supervisord的进程
ps -ef | grep supervisord #将查询的进程的 id,杀掉
kill -9 PId
错误二:配置文件有问题
提示你执行
#执行命令,查看服务器启动失败的原因
systemctl status supervisord.service
可以看到提示的错误,不是一个有效的 boolean 值。 或者其他的错误提示。
这个情况,我会把创建的hello.ini 中的注释,都删除掉。这样就没有问题了。
还有人说是配置文件的编码格式问题,这个我没有去研究,发现只要把注释删除就可以正常启动。
到这里基本就完成了对 .Net Core 程序的进程守护,当 .Net Core 进程意外结束时,会自动启动。
第四步、配置守护进程的界面管理功能
打开 supervisor 的配置文件
vim /etc/supervisord.conf
去掉这里的注释,然后把值根据自己的习惯,修改一下。 记得开启阿里云中端口 9001 的访问权限。
这样,在浏览器,通过IP:port 的形式,就可以通过图形界面管理守护的进程了。非常方便。
CentOS 下运行.net Core程序的更多相关文章
- 因Console.Read()导致Centos 后台运行.net core程序报错
.net 控制台程序通常用 Console.Read(),或者Console.ReadKey()让进程阻塞保持,不退出. 但在.net core 需要将程序放在后台执行时 用Console.Read( ...
- [转帖]以Windows服务方式运行.NET Core程序
以Windows服务方式运行.NET Core程序 原作者blog:https://www.cnblogs.com/guogangj/p/10093102.html 里面使用了NSSM 工具 但是自己 ...
- 连表查询都用Left Join吧 以Windows服务方式运行.NET Core程序 HTTP和HTTPS的区别 ASP.NET SignalR介绍 asp.net—WebApi跨域 asp.net—自定义轻量级ORM C#之23中设计模式
连表查询都用Left Join吧 最近看同事的代码,SQL连表查询的时候很多时候用的是Inner Join,而我觉得对我们的业务而言,99.9%都应该使用Left Join(还有0.1%我不知道在 ...
- Windows下启动.Net Core程序脚本
@echo offstart cmd /k "cd /D %~dp0&&dotnet xxx.dll" cmd /k 是执行完dir命令后不关闭命令窗口 cd /d ...
- 以Windows服务方式运行.NET Core程序
在之前一篇博客<以Windows服务方式运行ASP.NET Core程序>中我讲述了如何把ASP.NET Core程序作为Windows服务运行的方法,而今,我们又遇到了新的问题,那就是: ...
- Linux环境下运行简单java程序
一.安装java 1.下载jdk8 登录网址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-213315 ...
- 在VC6.0下运行C语言程序,以及编程入门必备的常识类小知识!
今天给大家分享在VC6.0环境下编写C语言程序的基本步骤,为初学者打开学习C语言的第一道门.具体步骤如下(如果需要软件资源,可以留言): 1)新建工作区 依次点击 文件--新建--工作区 或是Ctrl ...
- Centos下安装 .net Core运行程序
首先要进行更新下镜像文件 sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo sh -c 'echo -e ...
- CentOS下搭建.NET Core项目运行环境
系统版本:CentOS 7.3 运行环境:.NET Core 数据库:MySQL 进程守护:Supervisor .NET Core环境 安装CentOS中.NET Core依赖库 yum insta ...
随机推荐
- Python适合练手的项目
原文地址:https://www.jianshu.com/p/039156321e30 项目地址:https://github.com/DeqianBai/Python-Project/tree/ma ...
- Mapbox矢量瓦片标准(mapbox vector-tile-spec)
目录 1. 目标 2. 文件格式 2.1. 文件后缀 2.2 MIME类型 3. 投影和范围 4. 内部结构 4.1. 图层 4.2. 要素 4.3. 几何图形编码 4.4. 要素属性 4.5. 示例 ...
- 支付宝小程序开发——如何获取支付宝小程序页面的https链接
前边介绍过通过配置支付宝Scheme协议alipays://来实现h5到小程序的跳转,其实还可以获取小程序页面的https格式链接,虽然支付宝官方并没有直接提供方案,但是通过小程序后台的“码管理”给页 ...
- Java13新特性 -- ZGC:取消使用未使用的内存
在JDK 11中,Java引入了ZGC,这是一款可伸缩的低延迟垃圾收集器,但是当时只是实验性的.号称不管你开了多大的堆内存,它都能保证在 10 毫秒内释放 JVM ,不让它停顿在那.但是,当时的设计是 ...
- 工控随笔_C#连接PLC_之_C#入门_03_基本数据类型
using System; using System.Collections.Generic; using System.Linq; using System.Text; //namespace 关键 ...
- fedora清理旧内核
先查看已安装的内核: rpm -qa|grep kernel 然后查看下当前在用的内核: uname -r 最后是删除内核: yum remove xxxx
- vue播放mu38视频兼容谷歌ie等浏览器
<template> <div id="id_test_video" style="width:100%; height:auto;"> ...
- 防范sql注入值得注意地方
sql注入是大家基本都清楚,一般来说用参数化就能解决注入的问题,也是最好的解决方式. 有次技术群里问到一个问题,如下图 很显然tableName是外部传递过来的,暂时不考虑具体的业务环境,但如果以se ...
- 使用docker-compose快速搭建gitlab
1. 准备工作: centos7 [root@dev_vonedao_95 gitlab]# docker -v Docker version , build 633a0ea [root@dev_vo ...
- Linux基础(02)MakeFile的创建和使用
makefile是生成文件的脚本 , 把当前文件下的.c文件生成.o文件和可执行程序 SRC = $(wildcard *.c) OBJS = $(patsubst %.c,%.o,$(SRC)) C ...