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

C