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

    至此,部署完毕。。。    

    部分参考自  https://www.cnblogs.com/jayjiang/p/12610637.html

  • 相关阅读:
    数据结构 B/B+树
    Hadoop的目录结构
    安装JDK
    OSTEP-projects concurrency-webserver
    第二十四章(制作HTTP服务器端)学习笔记
    day4_生成小数的程序
    day4_用集合生成8位密码的程序
    day4_集合操作
    day3_homework
    day6_random模块的用法、break和continue
  • 原文地址:https://www.cnblogs.com/allen-zqw/p/13427547.html
Copyright © 2011-2022 走看看