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 #程序动态库文件
如果你可以看到如下界面则表示程序启动成功。
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
节点用#
符注释掉。
然后,我们新建一个配置文件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包管理工具中 分别安装这两个包
这个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