.netcore部署centos

本文详细介绍如何将.NET Core应用程序部署到Linux系统的过程,包括安装必要的软件如dotnet SDK、Jexus、supervisord,配置Jexus和supervisord以确保应用程序稳定运行,并介绍如何设置自启动服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:最近公司有个项目用 .netcore开发的项目,然后闲的没事就研究如果发布到Linux系统上

 

需要安装的插件以及支撑架构

1.dotnetSDK

2.jexus

Jexus 是Linux平台上 的一款免费的ASP.NET WEB服务器。它是 Linux、Unix、FreeBSD等非Windows系统架设 ASP.NET WEB 服务器的核心程序,具备反向代理、入侵检测等重要功能。拥有IIS和其它Web服务器所不具备的高度的安全性

3.supervisord

supervisord 是用Python实现的一款非常实用的进程管理工具,在批量服务化管理时特别有效。可以将非Daemon的应用转为Daemon程序。

 

安装dotnetSDK

执行命令

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm

sudo yum update

sudo yum install libunwind libicu

sudo yum install dotnet-sdk-2.1.200

 

 

安装对应的 dotnet运行时,这次开发用到的是 2.0.6

参考地址:

https://www.microsoft.com/net/download/linux-package-manager/centos/runtime-2.0.6

执行命令

sudo yum install dotnet-runtime-2.0.6

 

传输项目到指定的目录下

Windows系统下传输文件夹到指定centos服务器上,也可以通过其他方式传输

pscp -r E:\WebSite\admin1.lottery.com root@192.168.0.55:/dotnet/webAPP/

创造发布站点完毕之后,验证web项目是否可运行,执行命令

dotnet /dotnet/webAPP/Lottery.WEB.dll

然后根据开启的端口访问站点(注意:记得开启端口,防止不可访问)

 开发的端口在代码的规定好的

Program.cs文件中

 public static void Main(string[] args)
        {
            BuildWebHost(args).Run();

        }

public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
            .UseUrls("http://*:5001")
                .Build();
    }

 

 

安装Jexus

执行命令

curl https://jexus.org/release/x64/install.sh|sh

cd /usr/jexus/siteconf

cp default lottery               #lottery是配置名称,不同网站名称不同

vim lottery

修改的内容参考:

port=80

root=/ /dotnet/webAPP/admin1.lottery.com/

hosts=*,admin2.lottery.com    #OR your.com,*.your.com 

# addr=0.0.0.0

# CheckQuery=false

NoLog=true

AppHost={CmdLine=/dotnet/webAPP/admin1.lottery.com/Lottery.WEB.dll;AppRoot=/dotnet/webAPP/admin1.lottery.com;Port=5001}

 

 

重启读取配置文件

sh /usr/jexus/jws restart

 

重启读取配置文件之后,做好host文件映射即可通过域名方式访问该站点 

Centos上设置jexus开机自启动

参考地址:http://www.bubuko.com/infodetail-1295747.html

cd /etc/init.d

vim jws

i编辑模式,粘贴下面内容

#!/bin/bash  
#chkconfig: 2345 80 05
#description:jws
#

. /etc/rc.d/init.d/functions

case "$1" in

start)

  echo "Jexus Start.."

  /usr/jexus/jws start

  ;;

stop)

  echo "Jexus Stop.."

  /usr/jexus/jws stop

  ;;

restart)

  echo "Jexus Restart"

  /usr/jexus/jws restart

  ;;

status)

  /usr/jexus/jws status

  ;;*)

  exit 1

  ;;
esac   
exit $RETVAL

添加权限以及添加服务

chmod 766 jws

chkconfig --add jws

 

安装supervisord

参考地址:https://www.cnblogs.com/hobinly/p/7382038.html

yum install python-setuptools

easy_install supervisor

 

配置supervisor

etc下创建目录,并赋权限

mkdir -m 700 -p /etc/supervisor

 

在目录/etc/supervisor”下创建配置文件

echo_supervisord_conf > /etc/supervisor/supervisord.conf

 

修改配置文件

vim /etc/supervisor/supervisord.conf

 

在文件末尾添加,注意首尾需无空格,需顶格

[include]

files=/etc/supervisor/conf.d/*.conf

 

 

在目录/etc/supervisor”下创建dotnet core 进程配置文件存放目录“conf.d

mkdir -m 700 /etc/supervisor/conf.d

 

创建进程配置文件 

vim /etc/supervisor/conf.d/lottery.conf

 

"lottery"可以为dotnet core 入口dll文件名字 ,插入内容,注意首尾需无空格,需顶格:

[program:Lottery.WEB]

command=/bin/bash -c "dotnet Lottery.WEB.dll"

directory=/dotnet/webAPP/admin1.lottery.com/

stderr_logfile=/var/log/Lottery.error.log

stdout_logfile=/var/log/Lottery.stdout.log

environment=ASPNETCORE_ENVIRONMENT=Production

user=root

stopsignal=INT

autostart=true

autorestart=true

startsecs=1

 

 

[program:Lottery.WEB] ;显示名称

command=/bin/bash -c "dotnet MyDotNetName.dll"  ;运行命令,启动dotnet进程

directory=/usr/PublishOutput/   ;MyDotNetName目录

stderr_logfile=/var/log/Lottery.error.log  ;错误日志文件

stdout_logfile=/var/log/Lottery.stdout.log  ;日志文件

environment=ASPNETCORE_ENVIRONMENT=Production  ;进程环境变量

user=root   ;进程执行用户

autostart=true  ;自动启动 autorestart=true   ;是否自动重启

startsecs=1     ;自动重启间隔时间

 

创建supervisor 自启动服务

vim /etc/systemd/system/supervisor.service

 

编辑内容: 

[Unit]

Description=supervisor

 

[Service]

Type=forking

ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf

ExecStop=/usr/bin/supervisorctl shutdown

ExecReload=/usr/bin/supervisorctl reload

KillMode=process

Restart=on-failure

RestartSec=42s

 

[Install]

WantedBy=multi-user.target

 

使配置生效

systemctl daemon-reload

 

设置服务开机启动,即设置enable

systemctl enable supervisor.service

启动服务

systemctl start supervisor.service

 

使配置生效

systemctl daemon-reload

设置服务开机启动,即设置enable

systemctl enable supervisor.service

启动服务

systemctl start supervisor.service

 

验证dotnet进程是否启动

使用命令“ps -ef | grep dotnet”查看dotnet 是否运行

[root@cli ~]# ps -ef | grep dotnet

root      1549  2529  0 17:17 pts/0    00:00:00 grep --color=auto dotnet

root     27795 27764  0 17:07 ?        00:00:02 dotnet Lottery.WEB.dll 

 

supervisor远程管理

使用命令“vim /etc/supervisor/supervisord.conf”修改配置文件,如下设置

;[inet_http_server]         ; inet (TCP) server disabled by default

;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)

;username=user              ; (default is no username (open server))

;password=123               ; (default is no password (open server))
;以下内容开启http服务[inet_http_server]

port=192.168.1.71:9001      ;ip 加端口

username=admin               ;登陆账号,可以不设

password=123456              ;登陆账户,可以不设

 也可以设置成


[inet_http_server]
;port=127.0.0.1:9001      ;ip 加端口
port=9001
username=root               ;登陆账号,可以不设
password=123456              ;登陆账户,可以不设

 重启服务,就可以访问了

注意防火墙是否对端口9001例外

 

 

 

 图片验证码报错的话安装

解决:

yum install libgdiplus-devel 

注意:

yum install libgdiplus 后,在centos7 下,程序并不能运行成功还是报错,查看libgdiplus安装情况

rpm -qa |grep libgdiplus

rpm  -ql libgdiplus-2.10-9.el7.x86_64

/usr/lib64下缺少libgdiplus.so文件

Centos7 需要通过安装libgdiplus-devel来解决

 

注意

Dotnet程序在运行当中,重复覆盖包,并不能直接覆盖到,所以需要重启 dotnet,如果使用了supervisord,则需要重启supervisord(目前本人没有找到其他更好的方法)

systemctl restart supervisor.service

 

Dotnet程序在运行当中,重复覆盖包,并不能直接覆盖到,所以需要重启 dotnet项目的进程

进入supervisor的管理界面

 

点击Restart进行该进程重启

 

或者使用这个命令重启

 

supervisorctl -c /etc/supervisor/supervisord.conf restart Lottery.WEB

 

转载于:https://www.cnblogs.com/jhy55/p/9101044.html

Centos7发布说明 环境说明: 服务器系统:CentOS 7.2.1511 相关工具:Xshel、Xftp 服务器软件软件:.netcore、nginx、supervisor 准备好发布的程序 安装.NET Core SDK for CentOS7 打开网址:https://www.microsoft.com/net/core#linuxcentos 复制如下命令,单步执行: sudo yum install libunwind libicu curl -sSL -o dotnet.tar.gz https://go.microsoft.com/fwlink/?LinkID=835019 sudo mkdir -p /opt/dotnet && sudo tar zxf dotnet.tar.gz -C /opt/dotnet sudo ln -s /opt/dotnet/dotnet /usr/local/bin 输入 dotnet –info 来查看是否安装成功 配置Nginx 下载安装Nginx,单步执行如下命令: curl -o nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm rpm -ivh nginx.rpm yum install nginx systemctl start nginx 来启动nginx systemctl enable nginx 来设置nginx的开机启动(linux宕机、重启会自动运行nginx不需要连上去输入命令)。 配置防火墙 命令:firewall-cmd --zone=public --add-port=80/tcp --permanent(开放80端口) 命令:systemctl restart firewalld(重启防火墙以使配置即时生效) 测试nginx是否可以访问。 配置nginx对ASP.NET Core应用的转发 修改 /etc/nginx/conf.d/default.conf 文件,将文件内容替换为: server { listen 80; location / { proxy_pass http://localhost:5000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值