第一步、将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库
前言
我一直都是在windows平台上面做开发,今天也来分享下自己在Centos7上面部署ASP.NET Core应用程序。也是对自己知识的记录和回顾。
一、安装依赖环境
我们的ASP.NET Core应用程序是需要跑在.NET Core环境上面的。所以我们就需要先安装.NET Core环境。根据微软官方的文档说明:如果要开发 .NET 应用,请安装 SDK(包括运行时)。 或者,如果只需运行应用程序,请安装运行时。 如果要安装该运行时,建议安装 ASP.NET Core 运行时,因为它同时包括 .NET Core 和 ASP.NET Core 运行时。
可是在我测试了多次发下,按照官方的说法我只安装了ASP.NET Core运行时后,发现运行程序总是在报错。它给我的提示就是.NET SDK没有安装。所以还是安装了.NET CORE SDK。
第一步、将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库
命令如下:
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
第二步、安装.NET CORE SDK
命令如下:
sudo yum install dotnet-sdk-3.1
第三步、检查安装是否成功
命令如下:
dotnet --list-sdk
dotnet --list-runtimes
二、部署ASP.NET Core应用程序
1.上传到发布好的代码
使用ftp工具将自己的项目上传到Centos7服务器中
2.运行测试发布的项目
命令如下:
dotnet /home/ypf/Desktop/Test/Test.dll
当看到下图显示内容,说明你的项目已经可以正常运行了。我们就可以在服务器内使用浏览器测试浏览项目啦!
目前我们还不能在外网访问,我们的dotnet 默认只监听本地5000的端口,并且Centos7默认是开启防火墙,所以做如下2个操作。
2.1. dotnet命令加参数
dotnet /home/ypf/Desktop/Test/Test.dll --urls http://*5000
2.2.设置防火墙
//以下操作二选一
systemctl status firewalld // 查看防火墙状态
systemctl stop firewalld //关闭防火墙
firewall-cmd --zone=public --add-port=5000/tcp --permanent // permanent参数是永远存在,不然的话,重启后就没有了
firewall-cmd --reload // 重启防火墙 ,添加端口后记得执行此命令
3.使用Nginx进行反向代理
Nginx是一个高性能的Web服务器软件。这是一个比Apache HTTP Server更加灵活和轻量级的程序。我们的网站程序启动的端口是
5000
,可以借助Nginx把程序5000
端口映射到80
端口。
安装ngixn
3.1 添加Nginx存储库
要添加CentOS 7 EPEL仓库
sudo yum install epel-release
3.2 安装Nginx
现在Nginx存储库已经安装在您的服务器上,请使用以下yum命令安装Nginx:
sudo yum install nginx
3.3 启动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
此时,可以在本机的浏览器中访问服务器的IP地址。
如果拒绝访问,考虑服务器80
端口是否开放。可尝试通过下面两条命令开放80
端口、重启防火墙使修改即时生效。
firewall-cmd --zone=public --add-port=80/tcp --permanent
systemctl restart firewalld
设置Nginx开机启动
避免开机需要手动开启Nginx,可以通过如下快捷命令把Nginx配置成系统服务,并设置为开机启动:
systemctl enable nginx #设置开机启动
其他命令:
systemctl disable nginx #禁止开机启动
systemctl status nginx #查看运行状态
systemctl restart nginx #重启服务
修改Nginx配置文件
首先,拿到Nginx的默认配置文件/etc/nginx/nginx.conf,把默认80端口转发配置server节点用#符注释掉。
然后,我们新建一个配置文件netcore.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的配置加载目录/etc/nginx/conf.d
,最后执行命令nginx -s reload
重启Nginx即可。
总结
以上就是ASP.NET Core运行在Centos7上的所有步骤。
参考文章
在 CentOS 上安装 .NET Core SDK 或 .NET Core 运行时(微软官方)