如何将Asp.net core 3.1 网站部署到Centos7.X服务器上
一、安装.net core SDK及asp.net core 运行时.
1远程登陆Centos7.X 服务器
ssh -p8080 root@188.180.180.180
2.安装 .NET 之前,需要:注册 Microsoft 密钥;注册产品存储库;安装必需的依赖项。(每台计算机只需要执行一次此操作。)
[root@localhost ~]#sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
3.安装 .NET Core SDK
[root@localhost ~]#sudo yum install dotnet-sdk-3.1
4.安装 ASP.NET Core 运行时(注意:ASP.NET Core 运行时,因为它同时包括 .NET Core 和 ASP.NET Core 运行时)
[root@localhost ~]#sudo yum install aspnetcore-runtime-3.1
二、拷贝网站程序到服务器指定用户的指定目录下
scp -r -P 8xxxx d:\发布项目\China.WebChat.Project root@188.180.180.180:GangHangProject
三、开放Centos7.X 服务器的指定端口
1.检查防火墙状态
[root@localhost ~]#firewall-cmd --state
running
2.开放指定的端口(假设是:8888),[移除端口用:remove]
[root@localhost ~]#firewall-cmd --permanent --add-port=8888/tcp
success
3.检查指定的端口是否已开放
[root@localhost ~]#firewall-cmd --query-port=8888/tcp
no
4.重启防火墙(修改配置后,必须重启防火墙,操作才能生效)
[root@localhost ~]#service firewalld restart
Redirecting to /bin/systemctl restart firewalld.service
5.再次检查防火墙状态(可省略此步)
[root@localhost ~]#firewall-cmd --query-port=8888/tcp
yes
6.查看防火墙规则(此步可省略,目的是再确认一下)
[root@localhost ~]#firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s31f6
sources:
services: ssh dhcpv6-client
ports: 8888/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
至此,如在服务器上运行donet appname.dll,通过开放的端口应该可以访问的到。
四、安装并配置 nginx (反向代理服务器,如不考虑负载平衡,可不用此代理,直接跳到第五步。)
1.添加Nginx存储库
[root@localhost ~]#sudo yum install epel-release
2.安装Nginx
[root@localhost ~]#sudo yum install nginx
3.启动Nginx(Nginx不会自行启动)
[root@localhost ~]#sudo systemctl start nginx
4.允许HTTP和HTTPS通信(对防火墙操作,此步视具体情况运行)
[root@localhost ~]#sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=httpssudo firewall-cmd --reload
5.配置Nginx,可以直接在服务器上修改nginx的配置文件,也可以下载下来修改,然后再上传。
[root@localhost ~]#vi /etc/nginx/nginx.conf
打开后i键修改,添加以下内容:
server {
listen 8888;
server_name localhost;
location / {
proxy_pass http://localhost:5000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
按ESC键,再输入 :wq 保存退出
如想下载到本地编辑,然后再上传到服务器,可用以下两条命令。
scp -P8080 root@188.180.180.180:/etc/nginx/nginx.conf nginx.conf
scp -P8080 nginx.conf root@188.180.180.180:/etc/nginx/nginx.conf
6.验证nginx配置文件是否正确(进入nginx安装目录sbin下,输入命令:)
[root@localhost ~]#nginx -t
…… nginx.conf syntax is ok
…… nginx.conf test is successful
7.重启nginx服务
[root@localhost ~]#nginx -s reload
五、安装并配置 进程守护者 Supervisor (以便程序能不间断运行)
1.安装
[root@localhost ~]#yum install python-setuptools
[root@localhost ~]#easy_install supervisor
2.配置
(1) 指定 Supervisor 配置文件 目录,并生成缺省的配置文件
[root@localhost ~]#mkdir /etc/supervisor
[root@localhost ~]#echo_supervisord_conf > /etc/supervisor/supervisord.conf
(2)对生成的缺省配置文件进行编辑
[root@localhost ~]#vi /etc/supervisor/supervisord.conf
在打的文件最下边找到如下文本片段:
;[include]
;files = relative/directory/*.ini
修改为:
[include]
files = /etc/supervisor/conf.d/*.conf
3.为已经部署的asp.net core 网站添加进程配置文件(假设叫:netcore.conf)
[root@localhost ~]#vi /etc/supervisor/conf.d/netcore.conf
文件内容如下:
[program:China.WebChat.Project] ;自定义进程名称
command=dotnet China.WebChat.Project.dll ;程序启动命令
directory=/home/dell/GangHangProject/China.WebChat.Project ;命令执行的目录
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 ;请求停止时用来杀死程序的信号
4.应用配置文件,启动Supervisor
[root@localhost ~]#supervisord -c /etc/supervisor/supervisord.conf
5.配置Supervisor开机启动
(1)设置并编辑服务配置文件
[root@localhost ~]#vi /usr/lib/systemd/system/supervisord.service
文件内容如下:
[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
(2)设置开机启动
[root@localhost ~]#systemctl enable supervisord.service
[root@localhost ~]#systemctl daemon-reload
六、重启服务器
[root@localhost ~]#reboot
至此全部搞定,Good luck!

