• 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]
    name=packages-microsoft-com-prod 
    baseurl= https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod
    enabled=1
    gpgcheck=1
    gpgkey=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.3  #最新版本请关注官网

    两步即可完成.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   #程序动态库文件

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

    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=80/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节点用#符注释掉。

    然后,我们新建一个配置文件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即可。 

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

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

    这个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=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)));User Id=his;Password=his
  • 相关阅读:
    《面向模式的软件体系结构2用于并发和网络化对象模式》读书笔记(13) 线程安全接口和双检查加锁优化
    《面向模式的软件体系结构2用于并发和网络化对象模式》读书笔记(15) 监视器对象
    《面向模式的软件体系结构2用于并发和网络化对象模式》读书笔记(8) 主动器
    《面向模式的软件体系结构2用于并发和网络化对象模式》读书笔记(6) 扩展接口
    《面向模式的软件体系结构2用于并发和网络化对象模式》读书笔记(12) 策略化加锁
    《面向模式的软件体系结构2用于并发和网络化对象模式》读书笔记(10) 接受器 连接器
    《面向模式的软件体系结构2用于并发和网络化对象模式》读书笔记(11) 同步模式与定界加锁
    《面向模式的软件体系结构2用于并发和网络化对象模式》读书笔记(7) 事件处理模式与反应器
    《面向模式的软件体系结构2用于并发和网络化对象模式》读书笔记(14) 并发模式和主动对象
    Ubuntu 12.04开机默认启动IBus Anny
  • 原文地址:https://www.cnblogs.com/flywong/p/11266774.html
Copyright © 2020-2023  润新知