ASP.NET Core学习之四 在CentOS上部署.net core

简介: 一、安装CentOs 以前在大学学过linux,但是对命令行总是有一种深深的排斥感,几年之后,还是又回来了。 1.下载 现在没法FQ,就算是FQ网速也是蜗牛一样慢,我使用阿里云的镜像站进行下载速度还是杠杠的。

一、安装CentOs

以前在大学学过linux,但是对命令行总是有一种深深的排斥感,几年之后,还是又回来了。

1.下载

现在没法FQ,就算是FQ网速也是蜗牛一样慢,我使用阿里云的镜像站进行下载速度还是杠杠的。

我使用的镜像地址是 https://mirrors.aliyun.com/centos/7.4.1708/isos/x86_64/CentOS-7-x86_64-DVD-1708.iso ,可以根据自己需要去下载,总目录地址:https://mirrors.aliyun.com/centos/

2.安装

安装教程网上非常多,这里也不详细解说,我是根据百度经验的文章搭建的,教程地址是https://jingyan.baidu.com/article/eae0782787b4c01fec548535.html

二、部署.NET core

1.发布程序

首先,创建.NET CORE 2 MVC项目,确保能运行成功;然后,发布.NET程序。

.net core 分为两种应用类型,分别是Portable application(便携应用)和Self-contained application(自宿主应用); 需要详细了解的请看 拥抱.NET Core,如何开发跨平台的应用并部署至Ubuntu运行 。

在生产环境中需要考虑服务器更好的性能,所以使用便携式发布(简单说就是服务器自带core环境)。

在当前项目右键进行发布到文件夹即可,默认路径为bin\Release\PublishOutput。

 

2.安装.NET Core SDK

  这里就是配置centos的core环境,让我们的网站可以运行起来。

  官方的安装文档:https://www.microsoft.com/net/learn/get-started/linuxcentos

在centos的右上角打开应用程序,找到终端并打开。

  首先、Add the dotnet product feed(其实就是向微软提交投名状,表示我这台服务器要用core),注意:先检测下是否能联网;

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft-com-prod \nbaseurl= https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'
 

   然后,才安装 core SDK。

命令一:sudo yum update

  需要一段时间,而且会提示是否继续,输入y然后回车。

  如果遇到提示another app is currently holding the yum lock;waiting for it to exit,表示yum正在被使用,通过以下命令强制关闭: rm -f /var/run/yum.pid

命令二、sudo yum install libunwind libicu
命令三、sudo yum install dotnet-sdk-2.0.2

  这一步也需要下载安装包,耗时需要比较长时间。完成后使用命令 dotnet --help 查看下是否安装成功。

3.部署网站

  首先,创建文件夹core,命令为

mkdir core

cd core

  我这里使用的是虚拟机,就直接将生成好的文件考到core目录下,然后执行命令(dotnet 项目名称.dll)

dotnet DotNetCoreWebDemo.dll

 

直接使用自带的火狐浏览器就能访问http://localhost:5000

 

终于部署完了,由于整个过程都是使用图形界面,也没有遇到不懂命令的难题。

其实还有很多问题存在:

如何使用nginx?

怎么配置守护服务supervisor?

怎么使用docker ?

三、使用nginx

1.安装nginx

可以FQ的去看原文:https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-centos-7

1.添加 CentOS 7 EPEL 仓库

sudo yum install epel-release

2.安装nginx

sudo yum install nginx

3.启动nginx

sudo systemctl start nginx

4.使用ip访问,出现以下界面即成功安装

2、配制环境    

  1)配置防火墙

    命令:firewall-cmd --zone=public --add-port=80/tcp --permanent(开放80端口)

    命令:systemctl restart firewalld(重启防火墙以使配置即时生效)

  2)关闭SELinux ,使用getenforce 查询 

    临时关闭(不用重启机器):

      setenforce 0                  ##设置SELinux 成为permissive模式

      ##setenforce 1 设置SELinux 成为enforcing模式

    修改配置文件需要重启机器:

      修改/etc/selinux/config 文件

      将SELINUX=enforcing改为SELINUX=disabled

      重启机器即可

  3) 修改Nginx 配制,保存

              命令: vim /etc/nginx/nginx.conf

     location / {
       proxy_pass http://localhost:5000;
     }

      4) 重新加载Nginx配制文件

             命令:nginx -t 测试配制文件是否正确

             命令:nginx -s reload 重新加载nginx配制文件,不用重启nginx

    第三步补充: 通过反向代理将ip访问指向到 http://localhost:5000

    修改/etc/nginx/nginx.conf文件,在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;
         proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

如果是多站点部署,在conf.d下创建一个core.conf,内容为 server{ ... }

注意:如果不修改第二步,会被selinux的安全设置拒绝,导致反向代理失败

 

......

还需努力,只是迈出了半步。。。

最后说一句,尽量把虚拟机搞的性能高一点,真是卡死我也。

 

 

参考文章:

 https://www.cnblogs.com/Leo_wl/p/5734988.html

https://www.cnblogs.com/ares-yang/p/7736842.html

https://www.cnblogs.com/hohoa/p/5691071.html

https://www.cnblogs.com/ants/p/5732337.html

https://www.cnblogs.com/Burt/p/6566642.html

 https://www.cnblogs.com/rabbityi/p/7019662.html

 http://blog.csdn.net/jollypigclub/article/details/46862371 

 

 

相关文章
|
4天前
|
Java 物联网 C#
C#/.NET/.NET Core学习路线集合,学习不迷路!
C#/.NET/.NET Core学习路线集合,学习不迷路!
|
1月前
|
存储 开发框架 JSON
ASP.NET Core OData 9 正式发布
【10月更文挑战第8天】Microsoft 在 2024 年 8 月 30 日宣布推出 ASP.NET Core OData 9,此版本与 .NET 8 的 OData 库保持一致,改进了数据编码以符合 OData 规范,并放弃了对旧版 .NET Framework 的支持,仅支持 .NET 8 及更高版本。新版本引入了更快的 JSON 编写器 `System.Text.UTF8JsonWriter`,优化了内存使用和序列化速度。
|
7天前
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
|
29天前
|
监控 网络安全 调度
Quartz.Net整合NetCore3.1,部署到IIS服务器上后台定时Job不被调度的解决方案
解决Quartz.NET在.NET Core 3.1应用中部署到IIS服务器上不被调度的问题,通常需要综合考虑应用配置、IIS设置、日志分析等多个方面。采用上述策略,结合细致的测试和监控,可以有效地提高定时任务的稳定性和可靠性。在实施任何更改后,务必进行充分的测试,以验证问题是否得到解决,并监控生产环境的表现,确保长期稳定性。
46 1
|
2月前
|
开发框架 监控 前端开发
在 ASP.NET Core Web API 中使用操作筛选器统一处理通用操作
【9月更文挑战第27天】操作筛选器是ASP.NET Core MVC和Web API中的一种过滤器,可在操作方法执行前后运行代码,适用于日志记录、性能监控和验证等场景。通过实现`IActionFilter`接口的`OnActionExecuting`和`OnActionExecuted`方法,可以统一处理日志、验证及异常。创建并注册自定义筛选器类,能提升代码的可维护性和复用性。
|
1月前
|
开发框架 JavaScript 前端开发
一个适用于 ASP.NET Core 的轻量级插件框架
一个适用于 ASP.NET Core 的轻量级插件框架
|
1月前
|
开发框架 缓存 算法
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
开源且实用的C#/.NET编程技巧练习宝库(学习,工作,实践干货)
|
1月前
|
监控 安全 API
Docker + .NET API:简化部署和扩展
Docker + .NET API:简化部署和扩展
37 0
|
1月前
|
监控 安全 API
最完美的扩展Docker + .NET API:简化部署和扩展
最完美的扩展Docker + .NET API:简化部署和扩展
71 0
|
2月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
41 7