大麦网网站内似网站开发,网络营销渠道的优缺点,网站流量怎么提升,四川航天中瑞建设工程有限公司网站笔记本电脑装了双系统#xff08;Windows 10和Ubuntu16.04#xff09;快半年了#xff0c;平时有时间就喜欢切换到Ubuntu系统下耍耍Linux#xff0c;熟悉熟悉Linux命令、Shell脚本以及Linux下的各种应用的安装、配置、运行。使用下来的感受是Linux确实相当好使#xff0c;… 笔记本电脑装了双系统Windows 10和Ubuntu16.04快半年了平时有时间就喜欢切换到Ubuntu系统下耍耍Linux熟悉熟悉Linux命令、Shell脚本以及Linux下的各种应用的安装、配置、运行。使用下来的感受是Linux确实相当好使熟悉基本操作之后的工作的效率提升不是一星半点况且现在Linux的使用面已经相当广泛随着.NET的跨平台战略的落地实施.NET Core.NET程序员也很有必要熟悉Linux下的.NET开发。因此这篇博客我们就讲解一下ubuntu下的asp.net core mvc开发。一、准备工作首先介绍一下我的开发环境1、操作系统ubuntu 16.04 ubuntu是目前主流的linux桌面系统官方网站https://www.ubuntu.com/download。2、开发工具vscode 1.22.2vscodevisual studio code简称vscode是微软提供的跨平台的代码编辑器可以通过安装扩展支持多种编程语言C#、C、Python、Node.js等等。如果你觉得vs太重可以试试这个轻量级的vscode官方网站https://code.visualstudio.com/。3、运行环境.net core 2.1.net core是微软官方出的.net的跨平台版本我们开发跨平台的web应用使用的asp.net core mvc需要安装.net core运行环境官方网站https://dotnet.github.io/4、数据库mysql 5.7mysql不用多介绍了数据库领域三巨头oracle、mysql、sqlserver之一免费开源的跨平台数据库。自带的MySQL Workbench可以非常方便的操作mysql。据说微软的sqlserver也推出了linux版以后有机会再试一试。官方网站https://www.mysql.com/。5、web serverjexus 5.8.3我们开发好的asp.net core mvc应用发布后需要一个web server提供运行环境jexus就是linux下免费开源的asp.net web server。这里无需对jexus多做介绍详细的内容可以去官方网站https://www.jexus.org/查询。怎么安装如上的环境这里限于篇幅不重点介绍。相信读者根据官方文档一定要仔细查阅或者百度就可以顺利完成上述环境的准备。我们这篇博客的目标就是在ubuntu下使用vscode开发asp.net core应用并通过ef core完成数据的持久化数据库使用免费开源跨平台的mysql最终将发布好的asp.net core mvc应用在jexus里承载并让jexus随机启动这样我们一启动好电脑就能打开我们的asp.net core mvc应用了。关于本次项目案例这里我选择一个现成的方案——参会报名应用它来自于《Pro Entity Framework Core 2 for ASP.NET Core MVC》这本书网上有免费电子英文版。这里也顺便推荐一下这本书这本书的特点就是为初学者准备了几个简要的开发案例配备详细的实现步骤和截图学习体验非常好这里不得不佩服国外人写的教程。 你必须掌握的Entity Framework 6.x与Core 2.0 作者汪鹏 当当 广告 购买 二、使用vscode开发asp.net core应用在ubuntu中按ctrlaltt快捷键打开控制台输入dotnet --version命令查看.net core版本确保正确安装。然后我们输入dotnet new mvc命令创建asp.net core mvc应用。看到如上显示的Restore succeeded即创建成功。然后我们使用vscode打开这个目录可以看到如下图所示的项目目录结构。如果有提示要你安装C#扩展点击Yes安装即可。从截图可以看到通过vscode为我们展示的asp.net core mvc的项目结构非常清晰。Controller对应控制器Models对应模型类Views对应视图wwwroot存放一些静态资源包括js、css、img、libbootstrap、jquery。几个配置文件都是json格式的文件熟悉json的也没什么问题。还有1个csproj文件普通的C#项目都会有这个文件。还有两个cs文件分别为Program.cs和Startup.cs其中Program.cs中的Main方法是程序的运行入口Startup.cs是项目启动时的一些配置信息比如添加mvc支持路由的设置等等。vscode中看到的asp.net net core应用就是一个完整可运行的版本。我们在vscode中打开Program.cs文件在BuildwebHost方法中加上一行代码WebHost.CreateDefaultBuilder(args).UseStartupStartup() .UseUrls(new string[]{http://localhost:5001,http://localhost:5002}).Build();然后在vscode界面下按ctrlf5快捷键或者点击vscode菜单栏中的Debug-Start Without Debugging直接运行该项目即可访问我们创建的asp.net core应用。 默认url是localhost:5001localhost:5002也可以访问这就是我们通过添加了UseUrls方法后所起到的作用。此时的vscode状态截图如下我们通过中间的导航栏可以看到此时的vscode处于运行状态我们可以通过快捷键shiftf5或者点击红色方块按钮停止项目运行。 或者切换到asp.net core的项目目录下输入dotnet run命令启动运行asp.net core项目。 三、添加EF Core在vscode项目中使用EF Core连接mysql需要添加引用Microsoft.EntityFrameworkCore和MySql.Data.EntityFrameworkCore包。点击菜单栏-View-Command Palette-Nuget Package Manager:Add Package输入Microsoft.EntityFrameworkCore按回车。选择版本自动添加引用。 MySql.Data.EntityFrameworkCore包安装方式也是一样。安装好之后vscode右下角会提示要Restore项目点击Restore即可。这样我们就可以为UseMySQL方法引入namespace了。注意关于该程序的具体代码这里不再详细给出本文最后会放出该项目的完整代码。开发完毕后我们可以打开控制台切换到asp.net core的目录下用ef core命令生成数据库。输入的命令为dotnet ef migrations add Initial但却发生如下的错误提示这个错误提示就是没有找到匹配的dotnet ef命令。我们打开项目的csproj文件加入如下的配置信息。ItemGroup DotNetCliToolReference IncludeMicrosoft.EntityFrameworkCore.Tools Version2.0.0 / DotNetCliToolReference IncludeMicrosoft.EntityFrameworkCore.Tools.DotNet Version2.0.0 / /ItemGroup编辑后的完整配置信息如下我们在控制台再次执行dotnet ef migrations add Initial命令。又出错了错误截图如下错误提示信息不能将concretetypemapping转换为relationaltypemapping类型。感觉应该是Microsoft.EntityFrameworkCore的版本较高API写法进行了调整需要写新的类型转换代码。这个问题先放一放后面有时间再研究一下。网上百度了一番说是Microsoft.EntityFrameworkCore的版本过高我们用的是2.1.1版本降低到2.0.2版本即可。同样的操作vscode菜单栏-view-command palette-Nuget Package Manager:Add Package输入Microsoft.EntityFrameworkCore按回车。选择版本2.0.2版本自动添加引用。最终修改后的csproj文件如下Project SdkMicrosoft.NET.Sdk.WebPropertyGroupTargetFrameworknetcoreapp2.0/TargetFramework/PropertyGroupItemGroupPackageReference IncludeMicrosoft.AspNetCore.All Version2.0.6/PackageReference IncludeMicrosoft.EntityFrameworkCore Version2.0.2/PackageReference IncludeMySql.Data.EntityFrameworkCore Version8.0.11//ItemGroupItemGroupDotNetCliToolReference IncludeMicrosoft.VisualStudio.Web.CodeGeneration.Tools Version2.0.3//ItemGroupItemGroupDotNetCliToolReference IncludeMicrosoft.EntityFrameworkCore.Tools Version2.0.0/DotNetCliToolReference IncludeMicrosoft.EntityFrameworkCore.Tools.DotNet Version2.0.0//ItemGroup/Project再次执行ef core迁移命令这次终于成功了。这时我们回到vscode编辑器看到项目中已经多了一个Migrations文件夹。回到控制台界面输入dotnet ef database update命令。可以看到已经通过ef core成功的在mysql中创建了数据库和表。我们打开mysql workbench看看数据库test中的内容。OK至此开发方面的问题就都解决好了。只差最后一步将我们的项目发布并host在web server中了。 四、发布、部署发布asp.net core mvc项目很简单通过publish命令就可以了。我们可以先新建一个目录以便将文件发布到该路径。发布命令dotnet publish -o /home/guwei4037/webapp这样就将项目发布到了/home/guwei4037/webapp路径中。项目发布完成之后我们需要将该项目部署到jexus中。我们将jexus放入到/usr/jexus目录中。然后编辑/usr/jexus/siteconf里的default文件内容。######################
# Web Site: Default
########################################port80root/ /home/guwei4037/webapp# hosts* #OR your.com,*.your.com# reproxy/ http://localhost:5000/# addr0.0.0.0
# CheckQueryfalseNoLogtrue
AppHost{cmddotnet /home/guwei4037/webapp/firstcore.dll;root/home/guwei4037/webapp;Port5001,5002}# NoFile/index.php
# Keep_Alivefalse
# UseGZIPfalse# UseHttpstrue
# ssl.certificate/x/xxx.crt #or pem
# ssl.certificatekey/x/xxx.key
# ssl.protocolTLSv1.0 # TLSv1.1 or TLSv1.2
# ssl.ciphers# AppHost.Port5000
# AppHost{cmddotnet /var/www/default/your.dll; root/var/www/default; port5000}# DenyFrom192.168.i0.233, 192.168.1.*, 192.168.2.0/24
# AllowFrom192.168.*.*
# DenyDirs~/cgi, ~/upfiles
# indexesmyindex.aspx
# rewrite^/.?\.(asp|php|cgi|pl|sh)$ /index.aspx
# reproxy/bbs/ http://192.168.1.112/bbs/
# host.Redirectabc.com www.abc.com 301
# ResponseHandler.AddmyKey:myValue# Jexus php fastcgi address is /var/run/jexus/phpsvr
#######################################################
# fastcgi.addphp|socket:/var/run/jexus/phpsvr# php-fpm listen address is 127.0.0.1:9000
############################################
# fastcgi.addphp|tcp:127.0.0.1:9000指定port端口号为80端口root为/根目录后面的/home/guwei4037/webapp为项目的发布路径中间有1个空格隔开。NoLogtrue意为不记录日志这样网站访问速度会比较快缺点是没有记录日志遇到问题不能根据日志信息很快定位。AppHost{cmddotnet /home/guwei4037/webapp/firstcore.dll;root/home/guwei4037/webapp;port5001,5002}其中cmd指定程序运行方式后面的路径为启动的文件root为根目录port配置支持多端口。jexus配置好了并且也重新启动了。我们就可以打开localhost看看应用访问是否正常。可以正常打开了。赶紧使用一下里面的功能呢都是OK的。 jexus已经成功的host了我们的应用那么最后一步如何让jexus随机启动呢在jexus的安装配置要点https://www.linuxdot.net/bbsfile-3084里面已经给出了答案开机自动启动在/etc/rc.local 或类试的开机启动脚本中加入下面这一行命令mono /usr/jexus/jws.exe /dev/null 21 或者/usr/jexus/jws.start #推荐方式由于我们引用了bootstrap在ubuntu下用ifconfig命令查看一下本机的ip然后用你的手机浏览器输入这个ip就可以在手机上面注册参会了。 参考资料、彻底解决mysql中文乱码、jexus安装配置要点 3、asp.net core发布和部署 4、Table db.__EFMigrationsHistory doesnt exist 5、Creating a Database with Code First in EF Core原文地址https://www.cnblogs.com/guwei4037/p/9197887.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com