首页 > 系统相关 >Centos安装部署netcore 包含Nginx,Supervisor等

Centos安装部署netcore 包含Nginx,Supervisor等

时间:2023-03-22 12:35:59浏览次数:59  
标签:Supervisor supervisord Centos netcore Nginx conf 进程 supervisor


安装.NET Core SDK

安装libicu依赖

yum install libunwind libicu

注册dotnet 的repository

您需要注册Microsoft签名密钥并添加Microsoft产品提要

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

安装

sudo yum update
sudo yum install dotnet-sdk-2.2

安装完成

dotnet --info

CentOS 安装Nginx

首先,我们需要在服务器上安装Nginx。​​参考网址​

添加Nginx存储库

要添加CentOS 7 EPEL仓库,请打开终端并使用以下命令:

sudo yum install epel-release

EPEL的全称叫 Extra Packages for Enterprise Linux 。EPEL是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。装上了 EPEL之后,就相当于添加了一个第三方源。
如果你知道rpmfusion.org的话,拿 rpmfusion 做比较还是很恰当的,rpmfusion 主要为桌面发行版提供大量rpm包,而EPEL则为服务器版本提供大量的rpm包,而且大多数rpm包在官方 repository 中是找不到的。
另外一个特点是绝大多数rpm包要比官方repository 的rpm包版本要来得新,比如我前些日子在CentOS上安装的php,RHEL为了稳定性还在延用5.1.6版,我记得这是去年上半年的版本,而php 的最新版本已经到5.3.2,如果在php5.1.6的基础上安装phpmyadmin,则会提示php版本过低,这时候,EPEL中提供的较新php rpm就能很方便的派上用场了。

安装Nginx

现在Nginx存储库已经安装在您的服务器上,请使用以下yum命令安装Nginx:

sudo yum install nginx

启动Nginx

Nginx不会自行启动。要运行Nginx,请输入:

sudo systemctl start nginx

如果您正在运行防火墙,请运行以下命令以允许HTTP和HTTPS通信:

sudo firewall-cmd --permanent --zone=public --add-service=http 
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload

此时,可以在本机的浏览器中访问服务器的IP地址来验证Nginx是否成功运行。

如果能看到Nginx的默认转发网页则说明一切正常。

如果拒绝访问,考虑服务器80端口是否开放。可尝试通过下面两条命令开放80端口、重启防火墙使修改即时生效。

firewall-cmd --zone=public --add-port=80/tcp --permanent
systemctl restart firewalld

设置Nginx开机启动

避免开机需要手动开启Nginx,可以通过如下快捷命令把Nginx配置成系统服务,并设置为开机启动:

systemctl enable nginx  #设置开机启动

其他命令:

systemctl disable nginx   #禁止开机启动
systemctl status nginx #查看运行状态
systemctl restart nginx #重启服务

修改Nginx配置文件

首先,拿到Nginx的默认配置文件/etc/nginx/nginx.conf,把默认80端口转发配置server节点。

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;
}
}

保存后执行命令nginx -s reload重启Nginx即可。

在本地浏览器上访问服务器地址,运行结果:

502 Bad Gateway

这个问题是由于SELinux保护机制所导致,我们需要将Nginx添加至SELinux的白名单。执行命令:

yum install policycoreutils-python

sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx

sudo semodule -i mynginx.pp

再次访问,运行结果正常,可以看到,访问的接口成功返回数据,证明Nginx已经完成对我们部署应用程序的转发。

Supervisor配置守护进程

Supervisor是用Python开发的Linux/Unix系统下的一个进程管理工具。它可以使进程脱离终端,变为后台守护进程(daemon)。实时监控进程状态,异常退出时能自动重启。

Supervisor不支持任何版本的Window系统;仅支持在Python2.4或更高版本,但不能在任何版本的Python 3下工作。

其主要组成部分:

  • supervisord:Supervisor的守护进程服务,用于接收进程管理命令;
  • supervisorctl:Supervisor命令行工具,用于和守护进程通信,发送管理进程的指令;
  • Web Server:Web端进程管理工具,提供与supervisorctl类似功能,管理进程;
  • XML-RPC Interface:提供XML-RPC接口,请参阅XML-RPC API文档。

安装Supervisor

联网状态下,官方推荐首选安装方法是使用easy_install,它是setuptools(Python包管理工具)的一个功能。所以先执行如下命令安装 setuptools:

yum install python-setuptools

请更换root用户,执行如下命令安装Supervisor:

easy_install supervisor

配置Supervisor

运行supervisord服务的时候,需要指定Supervisor配置文件,如果没有显示指定,默认会从以下目录中加载:

$CWD/supervisord.conf  #$CWD表示运行supervisord程序的目录
$CWD/etc/supervisord.conf
/etc/supervisord.conf
/etc/supervisor/supervisord.conf (since Supervisor 3.3.0)
../etc/supervisord.conf (Relative to the executable)
../supervisord.conf (Relative to the executable)

所以,先通过如下命令创建目录,以便让Supervisor成功加载默认配置:

mkdir /etc/supervisor

加载目录有了,然后通过echo_supervisord_conf程序(用来生成初始配置文件)来初始化一个配置文件:

echo_supervisord_conf > /etc/supervisor/supervisord.conf
打开supervisord.conf文件,可以看到echo_supervisord_conf已经帮我们初始化好了一个样例配置,我们需要简单修改一下。

尾部找到如下文本片段:

;[include]
;files = relative/directory/*.ini

改为:

[include]
files = conf.d/*.conf

即,把注释去除、设置/etc/supervisor/conf.d为Supervisor进程配置文件加载目录。

这样,Supervisor会自动加载该目录下.conf后缀的文件作为共同服务配置。Supervisor管理的每个进程单独写一个配置文件放在该目录下,supervisord.conf配置文件中保留公共配置。

创建进程配置加载目录:

mkdir /etc/supervisor/conf.d

接下来就需要为我们已经部署的ASP .NET Core程序的宿主进程创建一个进程配置文件netcore.conf,保存并上传到/etc/supervisor/conf.d目录。

配置文件netcore.conf内容如下:

[program:Scorpio.WebApi]                        ;自定义进程名称
command=dotnet Scorpio.WebApi.dll ;程序启动命令
directory=/home/wwwroot/scorpio ;命令执行的目录
autostart=true ;在Supervisord启动时,程序是否启动
autorestart=true ;程序退出后自动重启
startretries=5 ;启动失败自动重试次数,默认是3
startsecs=1 ;自动重启间隔
user=root ;设置启动进程的用户,默认是root
priority=999 ;进程启动优先级,默认999,值小的优先启动
stderr_logfile=/var/log/Scorpio.WebApi.err.log ;标准错误日志
stdout_logfile=/var/log/Scorpio.WebApi.out.log ;标准输出日志
environment=ASPNETCORE_ENVIRONMENT=Production ;进程环境变量
stopsignal=INT ;请求停止时用来杀死程序的信号

启动Supervisor服务,命令如下:

supervisord -c /etc/supervisor/supervisord.conf

这时,在会发现我们部署的网站程序不在shell中通过dotnet xxx.dll启动,同样可以访问。

设置Supervisor开机启动

首先为Supervisor新建一个启动服务脚本supervisor.service,然后保存并上传至服务器/usr/lib/systemd/system/目录。

脚本内容如下:

# supervisord service for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

设置开启启动:

systemctl enable supervisor

验证是否成功:

systemctl is-enabled supervisor

如果输出enabled则表示设置成功,也可重启服务器验证。

其它Linux发行版开机启动脚本 User-contributed OS init scripts for Supervisor

Supervisorctl管理进程
Supervisor服务启动后,受其管理的进程会在后台运行。可以通过supervisorctl客户端管理进程。

输入如下命令进入supervisorctl交互终端,按Ctrl+C键退出:

supervisorctl
输入help查询帮助:

supervisor> help

default commands (type help <topic>):
=====================================
add exit open reload restart start tail
avail fg pid remove shutdown status update
clear maintail quit reread signal stop version

输入help ****查询详细命令,比如输入help stop:

supervisor> help stop

stop <name> Stop a process
stop <gname>:* Stop all processes in a group
stop <name> <name> Stop multiple processes or groups
stop all Stop all processes

如何启动、停止、重启进程等命令,我这里就不在记录,大家自行查找吧。

除此之外,Supervisor还提供了Web管理界面用来管理进程,如何配置启动请参考官方文档。

标签:Supervisor,supervisord,Centos,netcore,Nginx,conf,进程,supervisor
From: https://blog.51cto.com/dupeng0811/6142385

相关文章

  • .netcore 在Linux(Centos)使用Docker方式部署
    运行环境假设你已经安装好了.netcore运行环境,未配置可以看这篇​​[linux(centos)搭建.netcore运行环境]​​centos:7.2cpu:1核2G内存1M带宽docker:18.06.1-ce安装docke......
  • netcore强制使用https,把所有的HTTP请求转换为HTTPS
    使用HTTPS根据官方文档(​​https://docs.microsoft.com/en-us/aspnet/core/security/enforcing-ssl?view=aspnetcore-2.1&tabs=visual-studio#require-https​​),它建议A......
  • netcore读取、写入文件内容
    读取文件内容使用System.IO.StreamReader文档地址​​System.IO.StreamReader​​.FileStreamfileStream=newFileStream("file.txt",FileMode.Open);using(StreamRe......
  • Centos 安装 arm-linux-gnueabihf-gcc (armcc交叉工具链)
    环境:CentOS64位准备工作:1.在linux系统的/usr/local/新新建(mkdir)arm文件夹,并改权限(chmod)为777。mkdirarm【新建/usr/local/arm/目录】chmod777arm【修......
  • Centos7 下的SVN安装与配置
    ```Centos7下的SVN安装与配置1.关闭防火墙   临时关闭防火墙   systemctlstopfirewalld       永久防火墙开机自关闭   systemctldisablefirewa......
  • Centos 7 启动错误:XFS_WANT_CORRUPTED_GOTO 修复
    如果出现以下报错[sda]Assumingdrivecache:writethroughInternalerrorxfsXFS_WANT_CORRUPTED_GOTOatline1662offilefs/xfs/libxfs/xfs_alloc.cCallerxfs......
  • CentOS7安装mysql提示“No package mysql-server available
    在CentOS7上安装mysql时,出现了以下的提示:原因是:CentOS7带有MariaDB而不是MySQL,MariaDB和MySQL一样也是开元的数据库,您可以使用yum-yinstall mariadb-servermariadb命令......
  • linux 查看JVM默认参数 (centos7)
    #情景之前学习过“深入了解JVM虚拟机”,习得了一些JVM方面的一些知识,但是并没有相应的实战虽然没有相应的实战,但是。咱们也得知道如何查看JVM默认参数,以及如何修改相应的JVM......
  • CentOS下安装Nacos
    CentOS下安装Nacos前言这阵子因为蘑菇博客的镜像越来越大,所以就打算重新构建一下蘑菇博客的Docker镜像,这里就打算在Centos下安装配置Nacos,之前写过一篇博客关于Window下......
  • centos安装adb
    #安装jdksudoyuminstalljava-1.8.0-openjdk-devel或者你自己安装jdk配置环境变量#下载sdkwgethttps://dl.google.com/android/repository/sdk-tools-linux-3859397.zi......