前言

本文是基于centos8,dotnetcore3.1。

(为了服务器安全使用,程序部署最好不要直接root账号进行操作。)

如果使用sudo命令时候,提示用户不在sudoers文件中的解决方法。原因是centos把用户权限保存在了/etc/sudoers中,并且sudoers默认为只读的。

则需要先以root登录系统,授予当前用户相应的权限

一般操作如下

--第一步、修改文件属性

chmod +wrx /etc/sudoers

--第二步、 执行命令修改配置(或者直接编辑soduers文件在【root ALL=(ALL) ALL】添加username ALL=(ALL) ALL)    --其中username为对应的用户名称
echo 'username ALL=(ALL) ALL' >> /etc/sudoers --第三步、恢复文件属性 chmod -w /etc/sudoers

修改完成后的文件

在Centos中安装NetCore SDK

不同步版本的centos,安装步骤或者命令可能会不一样。最好是参照官方的说明https://docs.microsoft.com/zh-tw/dotnet/core/install/linux-centos

执行命令

sudo dnf install dotnet-sdk-3.1

安装完成后,查看dotnet信息

dotnet --info

发布并部署dotnetcore应用程序

主要由两种方式发布dotnetcore项目:1、vs发布dotnetcore项目,2、使用dotnet publish命令来发布

第一步、发布项目

第一种方式:使用vs发布项目,右键对应的项目--【发布】

【高级】中配置目标框架,部署模式等

第二种方式:使用dotnet命令发布

.Net Core 发布命令与.Net FrameWork发布命令是不同的。.Net FrameWork使用的是donet MSBuild,而.Net Core 可以使用 dotnet publish 。

dotnetcore发布命令示例:dotnet publish D:\ProjectCode\XXX.WebApi.csproj -c release -r win-x64 -o D:\ProjectCode\Release\XXX.WebApi --self-contained false

解释:dotnet publish "解决方案/项目的路径" -c "发布关键字" -r "运行平台" -o "发布输出的路径" --self-contained "是否包含运行时的组件"

当在对应项目目录下执行脚本发布时,则无需指定项目路径,默认当前文件夹的项目;

发布关键字:release或者debug

运行平台:linux还是windows,可以不指定

是否包含运行时的组件:值是true或者false,就是是不包含dotnetcore运行组件,一般在目标服务器上已经安装dotnetcore了,就无需再包含运行组件了。这样可以降低发布包的占用空间,特别是在网络不是很好的情况下,也降低网络传输。

完整示例:

dotnet publish -c release -o bin/publishfile --self-contained -false

当然可以将其做成批处理文件,例如pubish.bat

cd /d %~dp0
dotnet publish -c Release -o bin/publishfile --self-contained false
pause

需要注意的是,部分项目必须文件可能不会随着发布而复制到发布目标文件夹中,需要手动复制,或者指定使用批处理命令来复制。例如swagger需要使用到项目.xml文件

第二步、将发布的目标文件夹进行压缩打包,并上传到centos中进行解压缩

将压缩包上传到centos中,并进行解压缩

第三步,启动项目

运行命令

dotnet xxxx.xxx.dll --urls="http://5589"

示例如下

注意,需要设定Centos防火墙,否则外部无法访问。不建议直接将防火墙关闭

使用ctrl+c可停止当前运行dotnetcore项目。当然直接使用控制台守护进程运行dotnetcore,就无法再进行其他操作了。所以一般不会如此操作。

我们可以以后台运行的方式启动dotnetcore项目

使用命令

nohup dotnet xxx.dll --urls="http://*:5889" > /dev/null 2>&1 &

相关解释

nohup 就是后台运行的命令

/dev/null:/dev/null相当于执行了command 1 > /dev/null。执行command产生了标准输出stdout(用1表示),重定向到/dev/null的设备文件中

/dev/null可以理解为/dev路径下的空文件;该命令将command命令的标准输出输出到空文件中

2>&1:可以理解为执行command产生的标准输出重定向到文件中,标准错误也重定向到文件中,期间只打开一次文件,&1的含义就可以理解为用标准输出的引用,引用的就是重定向标准输出产生打开的文件。

最后的 & 是必须的!

运行示例

管理dotnetcore程序

ps -aux | grep dotnet                     #查看dotnetcore进程
kill xxxx #杀死xxxx进程,xxxx为进程Id

(启动的dotnet项目,但是外部可能无法访问,有可能是因为没有配置开放防火墙对应的端口所致。)

虽然后台运行可以不影响控制台进程进行其他操作,但是后台运行没有对应的守护,而且不方便管理。所以很多时候会借助supervisor进行管理。这个后续再补充了。

Centos中部署NetCore项目(一)的更多相关文章

  1. Centos中部署NetCore项目(二)

    前言 在centos中部署程序,一般都不会是使用控制台进程直接启动,或者是后台运行.而是一些守护进程管理工具进行管理,例如supervisor. 部署Web相关程序,使用nginx是比较普遍的, 安装 ...

  2. 在Linux系统中部署NodeJS项目

    在Linux系统中部署NodeJS项目 安装NodeJS 首先进入 Node 官网,下载对应的 Node包 下载下来后是一个后缀为 xz 的压缩包,我们把这个包上传到 Linux 系统中的 /usr/ ...

  3. CentOS 7 部署 node 项目

    CentOS 7 部署 node 项目 安装 node 环境 方法一:使用 wget 的方式下载压缩包进行解压 淘宝node镜像地址,进入地址选择自己想要安装的版本 wget https://npm. ...

  4. 在centos中部署jenkins

    在centos中部署jenkins,需要的环境:安装jdk,Apache-tomcat 这两步我前面文章里已写,再次忽略 到官网下载最新的jenkins 我这里的是  jenkins.war 把该文件 ...

  5. 在Tomcat中部署Web项目的操作方法,maven项目在Tomcat里登录首页报404

     maven项目在Tomcat里登录首页报404, 解决:编辑conf/server.xml进行配置<Host>里的<Context>标签里的path. <Context ...

  6. 在Tomcat中部署web项目的三种方式

    搬瓦工搭建SS教程 SSR免费节点:http://www.xiaokeli.me 在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Man ...

  7. linux 环境下tomcat中部署jfinal项目

    tomcat中部署jfinal项目 问题现象如下图 问题描述: 我在自己的windows7系统上tomcat下面跑这个项目没有任何问题吗,但是当我把项目上传到linux服务器上的tomcatwebap ...

  8. .NetCore中的程序通过Docker在CentOS中部署

    基础说明 安装Docker过程就略过了 创建一个Asp.Net Core程序 启用Docker支持,会生成Dockerfile文件,接下来看下这个文件,当然不同的版本生成的具体可能不一致 FROM m ...

  9. 在Linux服务器部署 .NET-Core 项目

    一.文章概要  这篇文章是讲述一个Linux 新手将 .NET-Core 项目部署在 Linux 服务器上的一个记录,以及在部署期间遇到的问题以及解决办法.有不恰当的地方.欢迎大神指正. 二.前期准备 ...

随机推荐

  1. C++派生类与基类的关系

    派生类与基类有这些关系: 1.公有派生类从基类继承所有成员和成员函数 2.公有派生类无法直接访问从基类继承的私有成员,但可以通过继承的公共接口访问. 3.公有派生类无法继承基类的友元函数. 4.基类先 ...

  2. 《C++ primer plus》第3章练习题

    注:有的题设条件自己改动了一下,比如英寸英尺改成米和厘米,部分题目自己加了点额外要求. 1.要求用户输入身高(m),用下划线提示用户输入,将身高转化成"米"加"厘米&qu ...

  3. RHSA-2018:3665-重要: NetworkManager 安全更新

    [root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 修复命令: 使用root账号登陆She ...

  4. 深入理解Logger日志——框架绑定原理

    深入理解Logger日志--框架绑定原理 说到Logger日志的动态绑定,主要归功与Slf4j,在之前的文章也说过,Slf4j是类似于Apache Common-Logging,英文为Simple L ...

  5. 多测师讲解 _教师(必备)_高级讲师肖sir

    教学心得1.备课要充分,防止第二天上课会出现一些突发情况2.上课要有自己的思路,不一定要按照课件上的讲3.上课气氛比较沉闷的时候,可以适当的开下玩笑,缓解大家的学习氛围4.讲课的时候提醒学员不要做笔记 ...

  6. 安装clion

    转战c语言,首先搞定编辑器,之前用的pycharm所以就直接用clion了,但是装完不能直接用参考 https://www.cnblogs.com/lyc94620/p/9581786.html 所以 ...

  7. 盐城5138.6118(薇)xiaojie:盐城哪里有xiaomei

    盐城哪里有小姐服务大保健[微信:5138.6118倩儿小妹[盐城叫小姐服务√o服务微信:5138.6118倩儿小妹[盐城叫小姐服务][十微信:5138.6118倩儿小妹][盐城叫小姐包夜服务][十微信 ...

  8. echo输出彩色文字

    开启转义功能 echo -e表示开启转义功能,比如: 彩色文字语法 echo -e "\e[前景;背景;特效m""hello""\e[0m" ...

  9. 多路查找树(2-3 树、2-3-4 树、B 树、B+ 树)

    本文参考自<大话数据结构> 计算机中数据的存储 一般而言,我们都是在内存中处理数据,但假如我们要操作的数据集非常大,内存无法处理了,在这种情况下对数据的处理需要不断地从硬盘等存储设备中调入 ...

  10. jenkins:配置密钥时报错的解决:Failed to add SSH key. Message invalid privatekey(Jenkins 2.257)

    一,报错的现象: 1,提示信息: jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key. Message ...