ASP.NET Core2.0发布有一阵子了,这是.NET 开源跨平台的一个重大里程碑, 也意味着比1.0版本要更加成熟。目前.net core具备开源、跨平台、灵活部署、模块化架构等等特性,吸引着一大批开发者。笔者也开始加入拥抱.net core大军,那就搭建一个我的网站吧!数据库
首先申明的是,这应该是一个长期的项目,我会不按期的更新,持续集成,慢慢的把想要的新功能叠加到网站上。这也是积累的过程,我但愿经过文章分享给博友们,也欢迎大家关注我,与我一同讨论,共同进步!json
话很少说,我们开始~windows
服务器环境浏览器
开发环境安全
这里为了搭建公网能够访问的网站,服务器我用的是XX云服务器(自带Server 2008系统,提供公网IP)。固然你们只是想练练手不想花钱,也不要紧,本地运行调试也好,有些远程配置内容能够直接跳过。服务器
有了服务器,咱们还须要搭建数据库。这里我选的是SQL Server 2012 Express版(带数据库管理工具,大概700M),对应中小型应用就够了。主要由于云服务器CPU、内存、磁盘是在太珍贵了,尽可能够用就好,不用最新或功能最全的版本。架构
运行SQL Server 安装包,按照提示一步步安装便可,默认安装是包含客户单SDK和管理工具,安装完毕后,SQL Server会自动生成一个数据库实例;打开菜单中SQL Server Management Studio,链接数据库实例,能够看到能正常访问数据库。固然,这样访问本地的数据库没问题,可是咱们须要外网远程访问数据库,因此须要作些配置:app
第1步,咱们选中数据库实例,右键-->属性-->选中 安全性模块化
由于远程访问就不能仅仅经过Windows身份验证了,这里咱们选中SQL Server和Windows身份验证模式;工具
第2步,选中 链接,确认“容许远程链接到此服务器”选中;
第3步,数据库实例-->安全性-->登陆名-->sa右键属性
将超级管理员sa密码设置一下,并将sa用户启用;
第6步,咱们能够关闭SQL Server Management Studio,打开SQL Server 配置管理器
选中MSSQLSERVER的的协议,将TCP/IP协议状态改为已启用(默认是禁用),完毕后咱们重启SQL Server;
TCP/IP属性,切换IP地址页签,确认TCP端口是不是1433,若是不是,以下配置:
至此,SQL Server的相关配置已经设置完毕,但仍是不能支持远程访问,咱们还须要设置一下服务器防火墙。
打开服务器管理器,选中防火墙配置,里面有“入站规则”,点击进去;
选中“新建规则...”
规则类型选择端口:
协议选择TCP协议,端口号输入1433(SQL Server默认端口)
下一步,选择“容许链接”
下一步,规则配置文件,全选
最后,输入规则名称,取名“SQL Server 端口”,点击完成,能够看到咱们的添加的规则已在防火墙容许访问范围了。
在本地机器上打开VS 2017,找到视图-服务器资源管理器--数据链接,右键-->添加链接;
更改数据源,选择Microsoft SQL Server ;
服务器名,输入云服务器的IP地址,选择SQL Server身份验证,敲入以前设置的用户名和密码,就能够加载远程数据库实例下的全部数据库。这样咱们连远程数据库就没有问题了。
为了在服务器上运行咱们的网站,首先须要配置IIS。
Server 2008上,添加"角色",选中“Web 服务器”,完成IIS安装。
通常的.net发布的网站,如今就能够配置运行了,可是.net core与传统的Asp.Net程序不一样,Asp.Net Core App使用了Kestrel Server。Kestrel是一个跨平台的Web Server,与IIS同样负责请求的监听、接收和响应,但没有IIS丰富的管理功能,仍须要由IIS来处理一些前置工做。
因此这块咱们还须要安装IIS到Kestrel server的反向代理:.NET Core Windows Server Hosting bundle
安装完成后,须要重启一下机器,而后咱们就能够正式的搭.net core网站了。
准备工做作完后,咱们终于能够开始建项目了,打开VS 2017,文件-->项目,建立Asp.net Core Web项目,点击肯定;
这里默认选择.net core 2.0环境,Web 应用程序(模型视图控制器),注意,这里的身份验证,我选择了我的用户帐户,主要是方便用户和角色管理,和身份验证。后面有单独的章节,专门跟你们探讨一下这块的知识。肯定后,VS 自动帮咱们生成好可运行的项目代码。
这时候,咱们就要经过链接远程服务器上的数据库,经过Code First方式,生成数据库表结构了。
先在数据库中实例中,建立一个数据库,命名为MyWebSite:
在本地VS中,经过以前服务器资源管理器的配置,咱们看到能够链接MyWebSite这个数据库,并测试链接成功。
点肯定创建数据链接,右键-->属性,能够查看链接字符串,拷贝一下这个链接字符串
Data Source=180.*.*.89;Initial Catalog=MyWebSite;User ID=sa;Password=***********
打开项目配置文件appsettings.json:
把默认的链接字符串用上面字符串替换以下:
"ConnectionStrings": { "DefaultConnection": "Data Source=180.*.*.89;Initial Catalog=MyWebSite;User ID=sa;Password=*******" },
这样,数据库链接就配置好了。由于选择的是我的身份验证的项目,因此VS帮咱们生成好了对应的实体类和数据库迁移,咱们所要作的,是要数据库更新,来生成相应的表结构。
打开工具-->Nuget包管理器-->程序包管理器控制台
输入update-database并运行,成功后,咱们回头看看远程的MyWebSite数据库,帮咱们自动生成了全部的表结构
接下来,咱们ctrl+F5运行一下,网站正常启动以下:
网站本地运行没问题了,咱们继续后续发布的操做,项目右键,选择“发布...”,暂时咱们选择本地文件夹(后面项目管理的时候,咱们再配置远程发布),将发布后生成的文件拷贝到云服务器上,这里放到c:\MyWebSite目录中。
IIS管理中,选中网站,把默认的Default Web Site停用,由于它占用了80端口,跟咱们要搭建的冲突;
右键-->添加网站
以下图配置,用80端口,HTTP默认访问端口。
点肯定,这样咱们的网站至此,成功搭建!
用用浏览器,输入外网IP地址访问咱们的云服务器(若是不能正常访问,请检查防火墙是否开放了80端口,按照以前设置一下就行):
ok,完美~