在liunx(CentOS-7)中部署netcore项目
liunx环境是
CentOS-7
,使用的是虚拟机
目录
一、liunx中安装net环境
二、在本地发布项目
三、在liunx中上传文件
四、运行net项目
五、开启liunx防火墙端口,让局域网内其它主机进行访问
六、进程守护使用Supervisord
七、管理多个netcore项目
八、相关链接
一、liunx中安装net环境
微软官方文档(https://learn.microsoft.com/zh-cn/dotnet/core/install/linux-centos)
1. CentOS Linux 7
安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。 打开终端并运行以下命令:
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
2. 安装SDK或者运行时
sudo yum install dotnet-sdk-7.0
或者
sudo yum install aspnetcore-runtime-7.0
3. 可以输入 dotnet --info
查看net安装信息
二、在本地发布项目
1. 在vs中右键发布文件夹,相关配置如下
三、在liunx中上传文件
1. 将发布的文件夹压缩成 Zip
格式
2. 在liunx中输入 rz
把文件上传到liunx中
3. 将zip文件夹进行解压
unzip <文件名称>
四、运行net项目
1. 在当前解压的文件夹下运行net项目
dotnet liunxDemo.dll
2. 如果出现端口被占用的情况,可以在启动时自定义端口号
如:
dotnet liunxDemo.dll --urls=http://0.0.0.0:5000
这里设置
0.0.0.0
的意义是:监听所有的网络接口,即 0.0.0.0,这样无论请求是从本机发送还是从网络的其他设备发送,应用都能接收到并处理。
如果是默认的localhost
就只能监听当前系统的请求,在同一个局域网是请求不到5000
端口网站的
3.在liunx中访问该网站
五、开启liunx防火墙端口,让局域网内其它主机进行访问
1.检测liunx防火墙状态
systemctl status firewalld
2.避免麻烦也可以直接关闭防火墙
systemctl stop firewalld.service // 停止firewalld服务
systemctl disable firewalld.service // 开机禁用firewalld服务
3.如果没有关闭防火墙则需要开启端口,我们先开启5000和9001端口,9001会在后面使用到
firewall-cmd --zone=public --add-port=5000/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
firewall-cmd --zone=public --add-port=9001/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
firewall-cmd --reload (更新防火墙规则)
firewall-cmd --zone=public --list-ports (查看所有打开的端口)
4.在局域网内的其它主机上访问该网站
可以看到已经可以成功访问该网站了。(注意:这里的
192.168.3.128
是liunx的IP地址)
六、进程守护使用Supervisord
1.为什么进行进程守护
在liunx中如果按
Ctrl+C
就会结束终端,如果不结束终端你就不能去做其它事情了。
2.使用Supervisord进行进程守护
Supervisor是一个进程管理工具,当进程中断的时候Supervisor能自动重新启动它。可以运行在各种类unix的机器上,supervisor就是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启。
官方文档:http://supervisord.org/
3.安装Supervisord
yum install supervisor -y #安装
systemctl enable supervisord # 开机自启动
systemctl start supervisord # 启动supervisord服务
若找不到supervisor包请尝试安装epel并更新yum
yum install epel-release -y
yum update
3.启用Superviosr Web界面
在安装supervisor后,寻找到etc/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))
这里我们将 port=127.0.0.1:9001
修改为 port=0.0.0.0:9001
这样局域网内的其它主机也可以进行访问了(防火墙在上面已经开了9001端口)
4.更新配置并重启supervisor
supervisorctl update
systemctl restart supervisord
5.在局域网内访问supervisor
可以看到已经可以成功打开supervisor了(你不会有中间那条数据,不用在意这个)
6.为netcore项目进行进程守护
配置Supervisord中进程Conf
先在 etc/supervisord.conf
结尾查看进程配置文件相关的位置与文件名
于是我们在 etc/supervisord.d
文件夹下新建 helloworld.ini
并编写简易的配置(下面的配置需要根据文件进行修改)
[program:helloworld] ;程序名称
command=dotnet helloworld.dll ;运行程序的命令
directory=/root/apps/helloworld/ ;命令执行目录
autorestart=true ;自动重启
stderr_logfile=/var/log/helloworld.err.log ; 错误日志文件
stdout_logfile=/var/log/helloworld.out.log ; 输出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 进程环境变量
user=root ; 进程执行的用户身份
stopsignal=INT
startsecs=10 ;自动重启时间间隔
environment 也可以填写 Development
7.重新启动Supervisor服务并查看是否成功
supervisorctl update
systemctl restart supervisord
8.进入Web页面查看
helloworld.dll (配置时ini内第一行填的名字) 属于running状态
可以看到已经可以成功打开supervisor了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2yDSJCup-1692328700083)(4.png)]
七、管理多个netcore项目
在 apps下建立多个文件夹,上传多个文件发布的Linux运行环境Asp .Net Core 应用文件
建立多个类似的Supervisor 进程 Conf
重启Supervisor服务
在Web面板上更快速的管理,操作,发布
八、相关链接
在Linux上使用Supervisor管理多个Asp .Net Core应用进程
Linux防火墙操作命令,开放或关闭端口
在 CentOS Linux 上安装 .NET SDK 或 .NET 运行时
Supervisor官方文档
VMware虚拟机通过bridged(桥接模式)设置静态IP