zoukankan      html  css  js  c++  java
  • CentOS8 .NET Core项目部署

    1. 安装 .NET Core SDK

      .NET Core 3.1 在 CentOS 8 的默认包存储库中有提供,直接使用下面命令安装 SDK:

      sudo dnf install dotnet-sdk-3.1

      安装完成后,使用 dotnet --info 命令查看是否能正确输出当前 SDK 信息。

    2. 安装 ftp

      2.1 使用以下命令安装VSFTPD:

      sudo yum install vsftpd

      2.2 启动服务,并将其设置为在系统启动时启动,并显示以下内容:

      sudo systemctl start vsftpd
    
      sudo systemctl enable vsftpd

      2.3 开启21端口进行通信,注意这里是云服务器控制台开启端口

      2.4 配置VSFTPD

        修改 /etc/vsftpd/vsftpd.conf 配置文件 。

        使用以下命令编辑配置文件:

        vi /etc/vsftpd/vsftpd.conf

        此处注意 userlist_enable 、userlist_deny 的设置,如果仅用来上传一次文件,可以设置 userlist_enable=No, 之后再关闭

        完成配置文件编辑后,保存更改。vi 保存退出: Esc 进入命令模式,输入 :wq 即可。

        重启vsftpd服务:

        sudo systemctl restart vsftpd

      2.5 创建ftp 用户

        使用命令:

        sudo adduser newftpuser
        sudo passwd newftpuser

        根据提示输入密码。

        将新用户添加到用户列表:

        echo "newftpuser" | sudo tee –a /etc/vsftpd/user_list

        给新用户创建目录,并调整权限:

        sudo mkdir –p /home/newftpuser/ftp/upload
    
        sudo chmod 550 /home/newftpuser/ftp
    
        sudo chmod 750 /home/newftpuser/ftp/upload
    
        sudo chown –R testuser: /home/newftpuser/ftp

        使用用户及密码登录服务器

        ftp ip

    3. 使用ftp 上传 .NET Core 文件

      将文件压缩为.zip 文件

      命令上传文件:

      put test.zip

      上传成功后,在服务器的 /home/newftpuser 文件中将出现 上传的 test.zip

      命令解压文件:

      unzip test.zip

    4. 启用防火墙
      查看防火墙状态:

      systemctl status firewalld

      启动防火墙:

      systemctl start firewalld

      允许 HTTP 和 HTTPS:

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

      开放 80 端口:

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

      重启防火墙:

      firewall-cmd --reload

    5. 安装 nginx

      安装 nginx

      sudo dnf install nginx

      启动 nginx

      systemctl start nginx

      设置开机自启

      systemctl enable nginx

      配置 nginx,nginx 默认的配置文件为 /etc/nginx/nginx.conf

      修改 该配置文件,如果有多个项目配置文件可以在 /etc/nginx/conf.d 中创建多个 .conf 文件

      server {
                    listen        80;      #更改为80端口
                    server_name   localhost;  #更改为域名名称
                    location / {
                        proxy_pass         http://localhost:5000;  #更改为 .netcore项目的地址 
                        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;
                        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
                        proxy_set_header   X-Forwarded-Proto $scheme;
                    }
                }
      }

      测试配置:

      nginx -t

      重新启动:

      nginx -s reload

      查看状态:

      sudo systemctl status nginx

      需要注意80 端口是否被占用,使用以下命令查看端口:

      netstat -tulpn

      如果被占用,可用以下命令杀死进程:

      kill -pid

    6. 启动项目

      进入项目文件,使用以下命令启动项目:

      dotnet TEST.WebAPI.dll

      至此,如果配置正确,你应该可以使用域名或者ip 在你本地访问项目。

    7. 守护进程Supervisor

      7.1 安装 Supervisor

    #执行epel-release
    sudo yum -y install epel-release
    
    #安装Supervisor
    sudo yum -y install supervisor
    
    #使用配置文件启动supervisor
    sudo supervisord -c /etc/supervisord.conf
    
    #启动supervisorctl
    sudo supervisorctl -c /etc/supervisord.conf
    
    #查看supervisor 版本
    version

    #查看状态
    status

      7.2 创建.NET Core项目的Supervisor配置文件

    #进入supervisord.d目录
    cd /etc/supervisord.d
    
    #新建NetCore进程配置文件
    sudo touch DemoNetCore.ini
    
    #查看和编辑DemoNetCore.ini配置文件
    sudo vim DemoNetCore.ini
    
    #进入文件后,按“i”或者“a”进入插入模式,插入下面的配置信息
    #配置程序名称
    [program:DemoNetCore]
    #运行程序的命令
    command=dotnet Demo.Net.Core.dll --urls="http://*:8081;http://*:8082"
    #命令执行的目录
    directory=/var/www
    #进程环境变量
    environment=ASPNETCORE_ENVIRONMENT=Production
    #进程执行的用户身份
    user=demo
    #进程停止信号,可以为TERM, HUP, INT, QUIT, KILL, USR1, or USR2等信号默认为TERM 。当用设定的信号去干掉进程,退出码会被认为是expected,非必须设置
    stopsignal=INT
    #如果是true的话,子进程将在supervisord启动后被自动启动,默认就是true,非必须设置
    autostart=true
    #这个是设置子进程挂掉后自动重启的情况,有三个选项,false,unexpected和true。如果为false的时候,无论什么情况下,都不会被重新启动,如果为unexpected,只有当进程的退出码不在下面的exitcodes里面定义的退出码的时候,才会被自动重启。当为true的时候,只要子进程挂掉,将会被无条件的重启
    autorestart=true
    #这个选项是子进程启动多少秒之后,此时状态如果是running,则我们认为启动成功了,默认值为1 。非必须设置
    startsecs=1
    #错误日志文件
    stderr_logfile=/var/log/DemoNetCore.err.log
    #输出日志文件
    stdout_logfile=/var/log/DemoNetCore.out.log

      7.3 保存配置文件,并重新启动

    #通过配置文件来启动supervisor
    sudo supervisord -c /etc/supervisord.conf
    
    #启动supervisorctl
    sudo supervisorctl -c /etc/supervisord.conf
    
    #重新加载配置文件
    reload
    
    #查看运行的状态
    status

      7.4 查看站点知否运行

    ps -aux | grep "Demo.Net.Core.dll"

      7.5 配置Supervisor开机自启动

    #进入system目录
    cd /usr/lib/systemd/system
    
    #编辑supervisord.service文件
    sudo vim supervisord.service

    supervisord.service文件内容为:

    [Unit]
    Description=Process Monitoring and Control Daemon
    After=rc-local.service nss-user-lookup.target

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

    [Install]
    WantedBy=multi-user.target

     编辑好后保存退出,然后执行命令,查看是否启动成功

    #启动服务
    systemctl enable supervisord
    
    #验证一下是否为开机启动
    systemctl is-enabled supervisord

      7.6 Supervisor常用命令

    # 启动所有
    supervisorctl start all
    
    # 重启所有
    supervisorctl restart all
    
    # 停止所有
    supervisorctl stop all
    
    #PS:要操作某个服务,把all换成服务名即可
    
    #查看服务状态
    supervisorctl status

    至此,部署完毕。。。    

  • 相关阅读:
    三次请求(读-改-读)引出nibernate 一级缓存
    算法竞赛入门经典第一、二章摘记
    uva 10905 Children's Game
    uva 11205 The broken pedometer
    uva 10160 Servicing stations
    uva 208 Firetruck
    uva 167 The Sultan's Successors
    zoj 1016 Parencodings
    uva 307 Sticks
    uva 216 Getting in Line
  • 原文地址:https://www.cnblogs.com/xwhgr/p/13958749.html
Copyright © 2011-2022 走看看