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 服务器上的一个记录,以及在部署期间遇到的问题以及解决办法.有不恰当的地方.欢迎大神指正. 二.前期准备 ...
随机推荐
- 0xctf[No parameters readfile](魔改版[GXYCTF2019]禁止套娃)
阅读本文前建议先阅读本站中的另一篇文章:[GXYCTF2019]禁止套娃 重要参考链接:http://www.heetian.com/info/827 Leon师傅魔改了[GXYCTF2019]禁止套 ...
- 54.Qt-将界面程序封装成动态库DLL
1.生成dll 然后选择创建共享库: 创建好后,修改pro文件,改为下面两句(这样就可以创建界面了): 然后修改sharedlib.h: #ifndef SHAREDLIB_H #define SH ...
- Redis GEO 功能使用场景
本文来源:https://www.dazhuanlan.com/2020/02/05/5e3a0a3110649/ 背景 前段时间自己在做附近直播相关业务,其中有一个核心的点就是检索用户附近的主播,也 ...
- java 图片相似度算法
利用直方图原理实现图像内容相似度比较 ,作为笔记记录在随笔中. public class PhotoDigest { public static void main(String[] ...
- Verilog基础入门——简单的语句块编写(一)
[题干] [代码] module top_module ( input in, output out ); assign out = ~in; endmodule 简单的实现一个非门
- 【纯水题】POJ 1852 Ants
题目大意 有一根长\(L\)厘米米的水平木棍上有\(n\)个蚂蚁,它们以每秒1cm/s的爬(fei)行(ben)到木棍的一端,之后掉下去. 给出每个蚂蚁的起始位置,但是不知道它们爬行的方向.相向而行的 ...
- centos8平台使用vmstat监控系统
一,vmstat的用途和特点: vmstat 是一个常用的系统性能分析工具,主要用来分析系统的内存使用情况,也常用来分析 CPU 上下文切换和中断的次数. 相对于 iostat 来说,vmstat 可 ...
- python 爬虫 循环分页
import osfrom time import sleepimport fakerimport requestsfrom lxml import etreefake = faker.Faker() ...
- python爬虫获取下一页
from time import sleep import faker import requests from lxml import etree fake = faker.Faker() base ...
- allure测试报告
首先如果你没有安装 pytest 库的话,先使用 pip 安装一下: pip install pytest 另外还需要安装 pytest 支持 allure 报告的插件库: pip install a ...