linux 环境下部署 Asp.Net Core 项目 访问 oralce 数据库

时间:2023-03-08 16:55:55
linux 环境下部署 Asp.Net Core 项目 访问 oralce 数据库

1.ASP.NET Core 是一个跨平台的高性能开源框架,可以部署到Linux上,那项目部署在Linux上有哪些好处呢?

1、linux硬件需求小,大部分版本免费,成本低。

2、linux的用户管理严格,病毒难以破坏。

3、linux是模块化的,可裁减,出现问题只要关闭一个模块,windows只有微软自己才会裁减。

4、linux是多用户多进程系统,适合做服务器。

5、linux上还有一个最大的好处,可以使用docker容器,Docker是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化,对服务器的部署很方便。

2.安装.NET Core SDK

Linux各个发行版如何安装.NET Core SDK,微软官方已经给出了标准答案,我这里就把在CentOS上的安装方法做一个简要说明。

Step1:安装dotnet产品提要

要开始安装.NET,您需要注册Microsoft签名密钥并添加Microsoft产品提要。每台机器只需要做一次。 打开命令提示符并运行以下命令:

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'

Step2:安装.NET SDK

更新可用于安装的产品,安装.NET所需的组件,然后安装.NET SDK。
在命令提示符下,运行以下命令:

sudo yum update
sudo yum install libunwind libicu
sudo yum install dotnet-sdk-2.1. #最新版本请关注官网

两步即可完成.NET Core SDK在CentOS7系统下的安装,最后可执行一下命令dotnet --version,如果正常输出版本号则说明安装没有出现问题。

3.部署ASP.NET Core应用程序

下面就尝试把我用ASP.NET Core Web API 开发的一个接口网站部署到我们已经安装.NET SDK的CentOS系统(下文简称服务器)中。

程序发布过程省略,把编译后的程序发布到了本地文件夹中。

然后借助FTP工具FileZilla把程序文件传输到Linux服务器的一个文件夹中。

上传完毕后,进入该项目的目录,输入如下命令启动程序:

dotnet Demo.Jwt.dll   #程序动态库文件

如果你可以看到如下界面则表示程序启动成功。

linux 环境下部署 Asp.Net Core 项目 访问 oralce 数据库

4.Nginx配置反向代理

由于程序启动成功后,只能本地http://localhost:5000访问,要想跨域访问,就必须用Nginx把http://localhost:5000反向代理出去

Nginx是一个高性能的Web服务器软件。这是一个比Apache HTTP Server更加灵活和轻量级的程序

4.1安装Nginx

Step1:添加Nginx存储库

要添加CentOS 7 EPEL仓库,请打开终端并使用以下命令:

sudo yum install epel-release

Step2:安装Nginx

现在Nginx存储库已经安装在您的服务器上,请使用以下yum命令安装Nginx:

sudo yum install nginx

Step3:启动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地址http://服务器IP地址来验证Nginx是否成功运行。

如果拒绝访问,考虑服务器80端口是否开放。可尝试通过下面两条命令开放80端口、重启防火墙使修改即时生效。

firewall-cmd --zone=public --add-port=/tcp --permanent
systemctl restart firewalld

4.2设置Nginx开机启动

systemctl enable nginx  #设置开机启动

其他命令:

systemctl disable nginx   #禁止开机启动
systemctl status nginx #查看运行状态
systemctl restart nginx #重启服务

4.3修改Nginx配置文件

首先,拿到Nginx的默认配置文件/etc/nginx/nginx.conf,把默认80端口转发配置server节点用#符注释掉。

linux 环境下部署 Asp.Net Core 项目 访问 oralce 数据库

然后,我们新建一个配置文件netcore.conf,内容如下:

server {
listen ;
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即可。

5、Asp.Net Core 项目中使用 Dapper + Oracle.ManagedDataAccess.Core 连接oracle数据库

在vs2017中工具菜单中=》NuGet包管理工具中 分别安装这两个包

linux 环境下部署 Asp.Net Core 项目 访问 oralce 数据库

linux 环境下部署 Asp.Net Core 项目 访问 oralce 数据库

这个Dapper 就不展开说明了,可以百度。百度上有很多例子

关键的 oracle连接字符串写法说明下,使用了Oracle.ManagedDataAccess.Core 连接oracle数据库,按照这样的连接字符串就不用再安装oracle客户端了,省了很多事情,尤其是Linux环境下。

注意:在Linux中千万不能用 System.Data.OracleClient.dll 来访问oracle数据库,Linux 下不支持 System.Data.OracleClient.dll ,我被这个问题被坑了 好久好久,总认为是oracle客户端没有配置好。

Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.123.85)(PORT=))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User Id=his;Password=his