1. 尝试新的开发组合:Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS
  2. Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之配置IdentityServer
  3. Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之数据迁移
  4. Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之添加实体
  5. Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之显示登录视图
  6. Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之验证码
  7. Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之登录、权限、菜单和登出
  8. Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之文章管理
  9. Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之文件上传
  10. Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之部署到Linux

要将Net Core 2的应用程序要部署到Linux上还是挺简单的,部署方式也很灵活,可以直接部署用nginx或apache做反向代理,也可以通过docker来部署。但部署后出现的小问题也很多。

下面来说说我的部署过程。我重新安装了一台CentOS7的虚拟机,安装好以后,执行以下命令更新系统:

yum -y update && yum –y upgrade

更新后就可安装所需的部件了。

安装Apache

由于是测试用,因而就不编译安装了,直接用yum来安装。笔者是参照《Host ASP.NET Core on Linux with Apache》一文来安装和设置反向代理的。

笔者在/etc/httpd/conf.modules.d/文件夹下添加了三个配置文件来设置代理、客户端和媒体域名

反向代理配置:cms.conf

<VirtualHost *:80>ServerName api.a.comProxyPreserveHost OnProxyPass / http://127.0.0.1:5000/ProxyPassReverse / http://127.0.0.1:5000/ErrorLog /var/log/httpd/cms-error.logCustomLog /var/log/httpd/cms-access.log common
</VirtualHost>

为了方便,特意设置了一个域名来访问服务器,为了能通过a.com访问服务器,记得修改本地机器的Windows\System32\drivers\etc\hosts文件,代码如下:

192.168.0.254 www.a.com
192.168.0.254 api.a.com
192.168.0.254 media.a.com

客户端:home.conf

<VirtualHost *:80>ServerName www.a.comDocumentRoot /var/www/home<Directory /var/www/home>Options +FollowSymLinksAllowOverride AllRequire all granted</Directory>
</VirtualHost>

这里要注意的是设置客户端的根目录。

媒体访问: media.conf

<VirtualHost *:80>ServerName media.a.comDocumentRoot /var/www/mediae<Directory /var/www/mediae>Options +FollowSymLinksAllowOverride NoneRequire all granted</Directory>
</VirtualHost>

安装MariaDB

这个要使用yum安装复杂点,具体步骤如下。

添加存储
vi /etc/yum.repos.d/MariaDB.repo

在文件中添加以下内容:

# MariaDB 10.2 CentOS repository list - created 2016-12-27 06:10 UTC
# http://downloads.mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://mirrors.ustc.edu.cn/mariadb/yum/10.2/centos74-amd64
gpgkey=https://mirrors.ustc.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1# MariaDB 10.0 CentOS repository list - created 2015-08-12 10:59 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2.9/centos74-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

如果有新版,许自行修改baseurl中的路径。
文件设置好以后就可执行以下命令安装了:

yum install MariaDB-server MariaDB-client  MariaDB-shared MariaDB-devel MariaDB-common MariaDB-compat

下载过程有点慢,需要耐心等待。安装好以后,需要自行添加服务,具体步骤如下:

chkconfig --add mysql
chkconfig mysql on
systemctl start mysql
systemctl enable mysql

服务器启动以后,使用图形化工具以SSH方式连接到数据库修改root的密码。这种方式是专家建议的,因为使用命令行方式会将命令缓存在机器,会有安全风险。

密码修改后,就创建一个数据库,并为数据库设置一个访问用户以备用。

安装.NET Core

这个能否安装成功是很关键的一步,如果安装得不好,就前功尽弃,有得忙了。具体安装步骤要参考《Prerequisites for .NET Core on Linux》的Install .NET Core for CentOS 7.1 (64 bit) & Oracle Linux 7.1 (64 bit)一节,也就是,先执行以下命令:

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'sudo yum install libunwind libicu
sudo yum install dotnet-sdk-2.1.4

这里与文中不同的地方就是安装dotnet的版本不同,这里将使用2.1.4版本,而不是文中的2.0.0版,如果不确定最新版本是那个,可以使用以下命令列出所有版本再选择:

yum list | grep dotnet

安装完成后,执行以下命令设置环境变量:

export PATH=$PATH:$HOME/dotnet

最后调用dotnet --version检查是否已经顺利安装。如果能正确显示版本号,说明已经安装好了。

执行迁移

在Migrator项目上单击鼠标右键选择发布会看到如下图所示的标签页。

在标签页内,可以根据自己需要修改输出文件夹,如果不修改就直接单击Create Profile按钮,切换到如下图所示的视图。

单击发布等待处理完成后,就可以将SimpleCmsWithAbp\src\SimpleCmsWithAbp.Migrator\bin\Release\PublishOutputMigrator文件夹内的文件通过SFTP方式传输到服务器上。

文件传输完成后,打开appsettings.json文件,修改里面的数据库连接后,就可执行dotnet SimpleCmsWithAbp.Migrator.dll执行迁移了。

发布应用程序

与发布迁移一样,在Web.Host项目执行发布后,将发布文件上传到服务器。文件上传后,修改appsettings.json里的数据库连接和ServerRootAddressClientRootAddressCorsOrigins的设置。

文件上传后,在/etc/systemd/system/下添加一个名为kestrel-cms.service的文件,文件内容如下:

[Unit]
Description=SimpleCMS with ABP[Service]
WorkingDirectory=/var/www/cms
ExecStart=/usr/bin/dotnet /var/www/cms/SimpleCmsWithAbp.Web.Host.dll
Restart=always
# Restart service after 10 seconds if dotnet service crashes
RestartSec=10
SyslogIdentifier=dotnet-example
User=apache
Environment=ASPNETCORE_ENVIRONMENT=Development[Install]
WantedBy=multi-user.target

这里要注意的是User的值,必须为Apache的用户。具体的一些配置还需要深入了解,在这里暂时不深入研究了。

文件编辑好以后,就可启用服务了:

systemctl enable kestrel-cms.service

然后是启动服务并查看状态:

systemctl start kestrel-cms.service
systemctl status kestrel-cms.service

如果要查看日志,可以使用以下命令:

sudo journalctl -fu kestrel-cms.service

开启防火墙端口

CentOS安装好以后默认是没有开发任何端口的,这个需要根据文章描述开启80端口。

至此,应用服务器就可以访问了。

调试

如果碰到以下转发错误:

[error] (13)Permission denied: proxy: AJP: attempt to connect to 10.x.x.x:7009 (virtualhost.virtualdomain.com) failed

需要参考《Apache Mod_proxy ‘[Error] (13)Permission Denied’ Error on RHEL》进行设置。

转发调整好以后,很不幸,在应用程序部署以后就出错了,但发现没有在本机调试时的日志可看,都不知道错误在哪里。然后根据《Debugging ASP Core on Linux with Visual Studio 2017》一文,在vs2017才看到了错误。

要使用vs2017进行远程调试,首先要修改Web.Host的Program.cs文件,将BuildWebHost方法修改为以下代码,以便通过ip地址访问应用程序:

        public static IWebHost BuildWebHost(string[] args){return WebHost.CreateDefaultBuilder(args).UseUrls("http://*:5000").UseStartup<Startup>().Build();}

经过远程调试后,终于发现是图形库无法工作,创建不了验证码。后来换了个图形库,还是不行,这个问题还是比较棘手的。

后来把验证码去掉后,发现上传文件有错误,最终发现是目录权限问题。最后能上传了,但显示又有问题,这个是因为代理不能将upload转发到wwwroot\upload造成的。看来需要将上传文件夹独立出来设置权限,并设置独立的访问地址比较合适,而这也是微软建议的方式,也就是建立一个独立的媒体服务。这也是为什么在前面需要添加一个域名的原因。

为了更好的做调试,打算尝试一下在CentOS中使用VS Code来执行最终的调试和发布,看看效果如何。

Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ext JS之部署到Linux相关推荐

  1. 通过极简模拟框架让你了解ASP.NET Core MVC框架的设计与实现[中篇]:请求响应

    <200行代码,7个对象--让你了解ASP.NET Core框架的本质>让很多读者对ASP.NET Core管道有了真实的了解.在过去很长一段时间中,有很多人私信给我:能否按照相同的方式分 ...

  2. 通过极简模拟框架让你了解ASP.NET Core MVC框架的设计与实现[上篇]

    <200行代码,7个对象--让你了解ASP.NET Core框架的本质>让很多读者对ASP.NET Core管道有了真实的了解.在过去很长一段时间中,有很多人私信给我:能否按照相同的方式分 ...

  3. ASP.NET Core 入门教程 2、使用ASP.NET Core MVC框架构建Web应用

    原文:ASP.NET Core 入门教程 2.使用ASP.NET Core MVC框架构建Web应用 一.前言 1.本文主要内容 使用dotnet cli创建基于解决方案(sln+csproj)的项目 ...

  4. 《ASP.NET Core 3 框架揭秘(上下册)》送书结果公告

    [免费送书].Net5实操后的我一夜未眠,来个大胆预测!的送书抽奖结果已经出来了: 这位中奖的同学尽快填写收货地址,4/2 日还没有完成填写将作废,奖品可是热门的<ASP.NET Core 3 ...

  5. [ASP.NET Core 3框架揭秘] 异步线程无法使用IServiceProvider?

    标题反映的是上周五一个同事咨询我的问题,我觉得这是一个很好的问题.这个问题有助于我们深入理解依赖注入框架在ASP.NET Core中的应用,以及服务实例的生命周期. 一.问题重现 我们通过一个简单的实 ...

  6. Asp.net core abp 无密码登录

    需求是Asp.net core  abp 无密码登录 具体是另外一个系统跳转到我这个系统需要做一个无密码登录,免登录的效果. 但它那个是java系统,授权也不一样,无法共用验证. 所以我在本系统增加了 ...

  7. 《ASP.NET Core 6框架揭秘》实例演示[19]:数据加解密与哈希

    数据保护(Data Protection)框架旨在解决数据在传输与持久化存储过程中的一致性(Integrity)和机密性(confidentiality)问题,前者用于检验接收到的数据是否经过篡改,后 ...

  8. 《ASP.NET Core 6框架揭秘》实例演示[10]:Options基本编程模式

    依赖注入使我们可以将依赖的功能定义成服务,最终以一种松耦合的形式注入消费该功能的组件或者服务中.除了可以采用依赖注入的形式消费承载某种功能的服务,还可以采用相同的方式消费承载配置数据的Options对 ...

  9. 《ASP.NET Core 6框架揭秘》实例演示[32]:错误页面的N种呈现方式

    由于ASP.NET是一个同时处理多个请求的Web应用框架,所以在处理某个请求过程中出现异常并不会导致整个应用的中止.出于安全方面的考量,为了避免敏感信息外泄,客户端在默认情况下并不会得到详细的出错信息 ...

最新文章

  1. Vert.x 发送邮件
  2. squid 安装、配置、优化
  3. java 计算移动平均线_基于Java语言开发的个性化股票分析技术:移动平均线(MA)...
  4. 剑指Offer(Java实现)按之字形顺序打印二叉树
  5. java.lang.ExceptionInInitializerError的原因
  6. 小程序获取头像试试水 02《 程序员变现指南之 微信QQ 小程序 真的零基础开发宝典》
  7. Spring cloud Loadbalance
  8. Linux服务器运行环境搭建(二)——Redis数据库安装
  9. 分布式事务模型--XA Specification
  10. oracle数据库stuff的用法,sql STUFF用法
  11. mysql8无法修改端口_mysql8.0.18 修改端口报错 Can't start server: Bind on TCP/IP port: Permission denied...
  12. python画三维散点图-Python 绘制酷炫的三维图步骤详解
  13. Python全栈(第一部分)day1
  14. TBB concurrent_set 没有erase
  15. 【图像分割】基于matlab粒子群优化T熵图像分割【含Matlab源码 286期】
  16. linux系统安装gcc依赖包,linux安装gcc需要的依赖包
  17. 在线搜索全网音乐支持歌曲外链下载等源码[免费开源]
  18. 英雄联盟自定义局怎么和其他服务器的玩家玩,英雄联盟自定义为什么没有玩家进来...
  19. 一份来自前端开发工程师的规范简历
  20. web多媒体技术在视频编辑场景的应用

热门文章

  1. 第十五周项目二----用哈希法组织关键字之链地址法
  2. img、link、html使用样式
  3. python递归 及 面向对象初识及编程思想
  4. mac 视频转文字工具
  5. 值得入手的键盘——Keychron K8 Pro
  6. 崛起的云平台,彰显信息国产化的中国力量
  7. 惠普HP LaserJet Pro M405d 打印机驱动
  8. 身为程序员就算月薪再高,想找女朋友的话这些你千万别做!
  9. c语言里什么叫double,c语言double什么意思
  10. 半色调技术简介(一)