zoukankan      html  css  js  c++  java
  • Cenos7 部署asp.net core站点

    系统版本

    rpm -q centos-release
    --- centos-release-7-5.1804.el7.centos.x86_64

    安装libicu

    yum install libunwind libicu

    安装Core SDK

    #### Before installing .NET, you'll need to register the Microsoft key, register the product repository, and install required dependencies. This only needs to be done once per machine.
    sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
    ### Update the products available for installation, then install the .NET SDK.
    yum install rh-dotnet21 -y
    sudo yum update
    sudo yum install dotnet-sdk-2.1
    ## 验证是否安装成功
    dotnet --info
    .NET Core SDK (reflecting any global.json):
    Version: 2.1.403
    Commit: 04e15494b6
    Runtime Environment:
    OS Name: centos
    OS Version: 7
    OS Platform: Linux
    RID: centos.7-x64
    Base Path: /usr/share/dotnet/sdk/2.1.403/
    Host (useful for support):
    Version: 2.1.5
    Commit: 290303f510
    .NET Core SDKs installed:
    2.1.403 [/usr/share/dotnet/sdk]
    .NET Core runtimes installed:
    Microsoft.AspNetCore.All 2.1.5 [/usr/share/dotnet/shared/Microsoft.AspNetCore.All]
    Microsoft.AspNetCore.App 2.1.5 [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
    Microsoft.NETCore.App 2.1.5 [/usr/share/dotnet/shared/Microsoft.NETCore.App]
    To install additional .NET Core runtimes or SDKs:
    https://aka.ms/dotnet-download

    开启FTP服务

    1、查看版本
    vsftpd -v
    2、如果没有安装,则用下面的命令进行安装
    yum -y install vsftpd
    3、取消匿名访问
    修改配置文件
    vi /etc/vsftpd/vsftpd.conf
    把anonymous_enable=YES ,改为NO ,然后重启vsftpd
    4、重启服务
    systemctl restart vsftpd.service
    5、查看状态
    systemctl status vsftpd.service
    6、添加用户
    useradd webroot
    passwd abcd-1234
    ## 上传站点
    通过FileZila Ftp客户端将站点上传,或者通过ssh拷贝站点到目录/home/webroot/test下。

    安装Nignx

    #### 安装
    sudo yum install epel-release
    sudo yum install 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
    此时可以在浏览器中,输入地址http://192.168.226.129/ 验证nginx是否安装成功。
    在防火墙配置中,开放80端口
    firewall-cmd --zone=public --add-port=80/tcp --permanent
    systemctl restart firewalld
    #### 设置 Nginx 开机启动
    避免开机需要手动开启 Nginx,可以通过如下快捷命令把 Nginx 配置成系统服务,并设置为开机启动:
    systemctl enable nginx #设置开机启动
    #### 修改 Nginx 配置文件
    Nginx 的默认配置文件/etc/nginx/nginx.conf
    创建web站点私有配置文件,test.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;
    }
    }
    因为nginx配置文件中include include /etc/nginx/conf.d/*.conf; 已经通过通配符的方式包含了.conf的文件,我们只需将站点私有的配置文件拷贝该目录下即可。
    最后执行命令nginx -s reload重载 Nginx 配置,使其生效。
    在浏览器浏览http://192.168.226.129/,出现下面的服务器错误,
     
     
    这个问题是由于 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

    再次访问即可。

    安装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文档

    安装

    联网状态下,官方推荐首选安装方法是使用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已经帮我们初始化好了一个样例配置,我们需要简单修改一下。

    编辑配置文件

     vi /etc/supervisor/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 程序的宿主进程创建一个进程配置文件test.conf,保存并上传到/etc/supervisor/conf.d目录。

    或者通过vi 进行创建,注意该配置文件最好与站点名称保持一致。

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

    启动 Supervisor 服务,命令如下:

    supervisord -c /etc/supervisor/supervisord.conf
    # 进入 Supervisor 命令行界面

    supervisorctl -c /etc/supervisor/supervisord.conf

    # 使配置文件生效
    supervisorctl -c /etc/supervisor/supervisord.conf reload

    设置 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则表示设置成功,也可重启服务器验证。

    Supervisorctl 管理进程

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

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

    supervisorctl

    输入help

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

    supervisor的web管理端

    如果需要在远程访问,可以设置为本机的ip,192.168.226.129:9001

    更新配置

     supervisorctl update

    使其生效

     supervisorctl reload

    这时可以在本地浏览了

     发现并没有设置的test的进程,可能是因为test.conf没有其作用的原因,通过查看配置文件发现supervisor的配置文件[include]目录路径写错了,修改为下面的目录

    更新,重新加载配置

    刷新页面

    到此咱们的asp.net core 站点基本配置成功了。当然这里你也可以添加nginx的监控,步骤同上,不再说明了。

    参考文章

    Esofar's blog  https://www.cnblogs.com/esofar/p/8043792.html

  • 相关阅读:
    DDD~大话目录
    基于DDD的.NET开发框架-DDD经典分层
    补习知识:Entity Framework Code First属性映射约定
    一个官翻教程集合:ASP.NET Core 和 EF Core 系列教程
    补知识:EntityFramework Core映射关系详解
    关于this的问题
    promise
    js的类型转换
    不要在块内声明一个函数
    let和var
  • 原文地址:https://www.cnblogs.com/wolf-sun/p/9935262.html
Copyright © 2011-2022 走看看