Centos中部署NetCore项目(一)
前言
本文是基于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项目(一)的更多相关文章
- Centos中部署NetCore项目(二)
前言 在centos中部署程序,一般都不会是使用控制台进程直接启动,或者是后台运行.而是一些守护进程管理工具进行管理,例如supervisor. 部署Web相关程序,使用nginx是比较普遍的, 安装 ...
- 在Linux系统中部署NodeJS项目
在Linux系统中部署NodeJS项目 安装NodeJS 首先进入 Node 官网,下载对应的 Node包 下载下来后是一个后缀为 xz 的压缩包,我们把这个包上传到 Linux 系统中的 /usr/ ...
- CentOS 7 部署 node 项目
CentOS 7 部署 node 项目 安装 node 环境 方法一:使用 wget 的方式下载压缩包进行解压 淘宝node镜像地址,进入地址选择自己想要安装的版本 wget https://npm. ...
- 在centos中部署jenkins
在centos中部署jenkins,需要的环境:安装jdk,Apache-tomcat 这两步我前面文章里已写,再次忽略 到官网下载最新的jenkins 我这里的是 jenkins.war 把该文件 ...
- 在Tomcat中部署Web项目的操作方法,maven项目在Tomcat里登录首页报404
maven项目在Tomcat里登录首页报404, 解决:编辑conf/server.xml进行配置<Host>里的<Context>标签里的path. <Context ...
- 在Tomcat中部署web项目的三种方式
搬瓦工搭建SS教程 SSR免费节点:http://www.xiaokeli.me 在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Man ...
- linux 环境下tomcat中部署jfinal项目
tomcat中部署jfinal项目 问题现象如下图 问题描述: 我在自己的windows7系统上tomcat下面跑这个项目没有任何问题吗,但是当我把项目上传到linux服务器上的tomcatwebap ...
- .NetCore中的程序通过Docker在CentOS中部署
基础说明 安装Docker过程就略过了 创建一个Asp.Net Core程序 启用Docker支持,会生成Dockerfile文件,接下来看下这个文件,当然不同的版本生成的具体可能不一致 FROM m ...
- 在Linux服务器部署 .NET-Core 项目
一.文章概要 这篇文章是讲述一个Linux 新手将 .NET-Core 项目部署在 Linux 服务器上的一个记录,以及在部署期间遇到的问题以及解决办法.有不恰当的地方.欢迎大神指正. 二.前期准备 ...
随机推荐
- C++派生类与基类的关系
派生类与基类有这些关系: 1.公有派生类从基类继承所有成员和成员函数 2.公有派生类无法直接访问从基类继承的私有成员,但可以通过继承的公共接口访问. 3.公有派生类无法继承基类的友元函数. 4.基类先 ...
- 《C++ primer plus》第3章练习题
注:有的题设条件自己改动了一下,比如英寸英尺改成米和厘米,部分题目自己加了点额外要求. 1.要求用户输入身高(m),用下划线提示用户输入,将身高转化成"米"加"厘米&qu ...
- RHSA-2018:3665-重要: NetworkManager 安全更新
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 修复命令: 使用root账号登陆She ...
- 深入理解Logger日志——框架绑定原理
深入理解Logger日志--框架绑定原理 说到Logger日志的动态绑定,主要归功与Slf4j,在之前的文章也说过,Slf4j是类似于Apache Common-Logging,英文为Simple L ...
- 多测师讲解 _教师(必备)_高级讲师肖sir
教学心得1.备课要充分,防止第二天上课会出现一些突发情况2.上课要有自己的思路,不一定要按照课件上的讲3.上课气氛比较沉闷的时候,可以适当的开下玩笑,缓解大家的学习氛围4.讲课的时候提醒学员不要做笔记 ...
- 安装clion
转战c语言,首先搞定编辑器,之前用的pycharm所以就直接用clion了,但是装完不能直接用参考 https://www.cnblogs.com/lyc94620/p/9581786.html 所以 ...
- 盐城5138.6118(薇)xiaojie:盐城哪里有xiaomei
盐城哪里有小姐服务大保健[微信:5138.6118倩儿小妹[盐城叫小姐服务√o服务微信:5138.6118倩儿小妹[盐城叫小姐服务][十微信:5138.6118倩儿小妹][盐城叫小姐包夜服务][十微信 ...
- echo输出彩色文字
开启转义功能 echo -e表示开启转义功能,比如: 彩色文字语法 echo -e "\e[前景;背景;特效m""hello""\e[0m" ...
- 多路查找树(2-3 树、2-3-4 树、B 树、B+ 树)
本文参考自<大话数据结构> 计算机中数据的存储 一般而言,我们都是在内存中处理数据,但假如我们要操作的数据集非常大,内存无法处理了,在这种情况下对数据的处理需要不断地从硬盘等存储设备中调入 ...
- jenkins:配置密钥时报错的解决:Failed to add SSH key. Message invalid privatekey(Jenkins 2.257)
一,报错的现象: 1,提示信息: jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key. Message ...