ASP.NET Core Docker jexus nginx部署-CentOS实践版

本文用图文的方式记录了我自己搭建centos+asp.net core + docker + jexus + nginx的整个过程,希望对有同样需求的朋友有一定的参考作用。 本文主要内容如下: centos7安装 yum镜像 docker镜像 docker安装 dotnetcore安装 Docker安装dotnetcore镜像 asp.net core 创建与发布 docker中部署asp.net core jexus转发 nginx转发   1.centos7安装 a.下载centos的iso文件,比如:CentOS-7-x86_64-Everything-1611.iso b.虚拟机安装,比如:hyper-v c.手动分区: /boot  至少1G,建议2G(很多东西会装在里面,别信网上说的100M足够的话了,设置大点) /swap 2倍内存大小 /        10G吧 /home 10G以上吧 /var 至少1G,建议5G(docker很容易装满) d.软件预装,选择:带UI的Server 2.yum镜像 a.访问阿里云http://mirrors.aliyun.com b.找到你要装的OS,点右边“help”进入安装指南 c.根据指南,安装镜像(执行命令的时候请加上sudo,如果你不是root) 1 2 3 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo   3.docker镜像 a. 打开开发者中心https://dev.aliyun.com/search.html b.右上角“注册/登陆” c.登陆后,右上角有一个“管理中心” d.进入管理中心,点击“加速器” 开始前先参照这个帖子《CentOS禁止packagekit离线更新服务的办法》http://www.cnblogs.com/zjoch/p/6500480.html处理,否则出现如下错误 按提示完成镜像设置 1 2 3 4 5 6 7 8 9 10 11 12 sudo curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh – 以下命令一行一行输入 sudo mkdir […]

龙生   16 Sep 2017
View Details

学会思考,而不只是编程

  英文原文:Don’t learn to code. Learn to think   中国人常说“授之以鱼不如授之以渔”。如果说教授编程是授之以鱼,那么教授计算机科学就是授之以渔。为什么说学习计算机科学比学会编程要重要得多?来听听Yevgeniy Brikman的解释。   现如今,似乎每个人都在学习编程:Bill Gates、Mark Zuckerberg和Chris Bosh这些名人在Code.org网站上告诉人们每个人都拥有编程的能力;CoderDojo项目在世界各地大张旗鼓;英国已经把编程作为小学官方课程。   不过,我认为这样有点误入歧途了。但请不要误会——我也确实认为代码能够让世界变得更美好——但编程本身并不是我们的目的。计算机和程序只是工具,它们是我们通向终点的桥梁。   我们真正的目标应该是教会人们如何思考。换句话说,我们应该教人们计算机科学,而不只是编程。在这篇文章里,我将会解释这两者之间的区别,以及为什么在这两者当中选择正确的一方对于迈向成功来说如此重要。   我们不妨先问自己一个问题:为什么我们要关心编程或计算机科学?   欢迎来到真实的世界   或许你正在使用Chrome或Firefox阅读这篇文章,这些浏览器可能运行在Windows或macOS上,而你可能正在使用笔记本或台式机。你今天可能花了一些时间阅读电子邮件、查看朋友圈的状态,或者在视频网站上看了一些视频。我们的生活在很大程度上依赖了计算机:我们的医疗记录保存在数据库里;我们的简历可能放在了LinkedIn上;我们使用Google或Facebook为产品做宣传;我们在Amazon上购买这些产品;我们直接在网络上进行报税;我们使用网上电子银行;我们甚至开始涉足电子货币。   现在将你的视线从电脑上移开:在你的口袋里或者桌角的某个地方可能放着你的手机,它装有GPS、摄像头、触摸屏和大量的应用程序。在你的客厅,可能有LCD电视机、DVR、DVD播放机、Apple TV、Xbox或PlayStation。这些设备上的视频、音乐和游戏都是由计算机图形和数字音频组成的。   当你经过你的汽车时,你是否想过,现代汽车是使用软件设计并在满布机器人和计算机的工厂里生产出来的?你开着车,使用Google地图导航,在Yelp上查找吃饭的地方或在TripAdvisor上查找休息的地方。在你的头顶上方有自动驾驶的飞机飞过,飞机里有Wifi和娱乐系统,可以与其他飞机、交通指挥中心和飞机厂商联系。再往上,卫星和太空站正围绕着地球绕圈,它们拍照、预报天气、转发电话信号。   软件正在吞噬着这个世界,但这只不过是个开始。在你意识到这一点之前,你可能已经穿上了智能可穿戴设备、使用电脑来锁门、使用机器人来送货或清理房间、开发自己的电子设备、有自己的制造车间、生活在虚拟现实里、乘坐自动驾驶的汽车,甚至飞向太空。   矩阵无处不在   上述的这些科技都是由软件驱动的,我们的生活被代码所包围,而代码的数量在未来只会不断增加。   不过,虽说科技无处不在,但这并不意味着你在学校里就一定要学习这些技术。比方说,我们都需要乘坐飞机,但即使是K12也并没有把获得飞行员驾照当作课程的一部分。   相反,学会使用那些能够帮助你理解飞行原理的工具却是课程的一部分: 通过学习物理和数学,你了解了重力、作用力、压力、速度、摩擦力和浮力。 通过学习生物,你明白了人体在缺氧和寒冷的高空中会发生什么。 通过学习历史,你知道了飞机是怎样被发明和制造出来的,以及飞机在旅行、商务和战争中所扮演的角色。   中学毕业之后,你就知道飞机是什么东西,知道飞机是如何飞行的,以及如何安全地搭乘飞机。一般性的课程,如物理、数学、生物和历史,它们教会你如何思考各个领域的问题,包括飞机在内。相反,有些课程只是教会你如何使用一种工具,比如如何驾驶某种型号的飞机。   类似的,我们应该专注于教授计算机科学,而不仅仅是编程:前者能够教会我们一般性的思考方式,而后者只是一种特定的工具。   什么是计算机科学?   计算机科学就是研究计算:如何表示和处理信息。 解决问题:你将学会各种算法策略,比如分而治之法、递归、探索法、贪婪搜索和随机算法,它们可以帮你分解和解决任何一种问题。 逻辑:你开始使用更准确和正式的方式进行思考,比如抽象、布尔逻辑、数字理论和集合理论,你因此能够以一种严谨的方式来解决问题。 数据:你接触到信息理论,想要了解信息是什么东西,你该如何表示它们,以及如何对这个真实的世界进行建模。 系统:你该如何设计和实现复杂的系统来满足一系列的需求?系统工程几乎已经成为各个业务领域的核心议题。 思考:了解人类思维的最好途径就是尝试复制它。人工智能、机器学习、计算机视觉和自然语言处理不仅仅是计算机科学的前沿技术,它们也涉及到了生物学、物理学、心理学和数学。   上述的清单并没有提及编程或者程序,因为它们只是计算工具:它们都不是计算机科学。   在计算方面,我们更多地依赖另一个工具:我们的大脑!计算机科学的目的是教会我们的大脑进行创新性、一般性和广泛性的思考。随着科技的日益渗透,新的思考方式变得和物理、数学、生物和历史一样重要。   也就是说,只进行单独的思考是不够的:我们需要知道如何应用我们的思考。在物理学里,我们使用天平、棱镜和磁铁做实验;在生物学里,我们使用试管、植物和有盖培养皿;在计算机科学里,我们学习编程。   什么是编程?   编程,或者说写代码,是指你发出指令让计算机执行一些操作。如果你之前从来没有写过代码,那么你可能习惯了使用已有的应用程序来与计算机发生交互。实际上,这些应用程序是由代码组成的,这些代码告诉计算机如何显示应用、在哪里存储数据、从哪里获取数据,以及如何对用户的鼠标点击做出响应。   编程是基于上述的计算机科学原则进行的。计算机科学的概念——逻辑、算法、数据和系统工程——可以用于构建所有的事物,从Web浏览器到飞机的自动驾驶软件。编程涉及到数学和数据结构,同时也是一项具有创造性的活动:每敲出一行代码,你的想法就又向现实迈近了一步。   将编程作为计算机科学的一部分带来了很多好处。 DIY:如果你会编程,你就可以自己开发软件。你可以从简单的开始:写一个脚本来重命名照片或写一个Excel公式来计算税金。然后更进一步:搭建一个网站;为你的公司开发一个移动应用;开发一款可以与你的朋友们一起玩的游戏。 问题诊断:在开发了几款应用之后,就可以轻松地理解其他的应用。在战胜了对计算机的恐惧之后,你将成为技术大神。技术遍布我们的生活,知道如何操纵它们变得与知道如何使用它们一样重要。 职业生涯:学习计算机科学的目的并不是为了成为专业的程序员。我们每个人在学校里都学习数学、物理和化学,但并不是每个人都成为专业的数学家、物理学家或化学家。不过,如果你有这方面的热情,你会发现软件工程是一份高评价、高收入、增长快速的工作。   总结   让我们回顾一下: 计算机科学代表了一种新的思考方式。在一个被技术渗透的世界里,计算机科学的概念对于每一个人来说都是非常有用的。 编程是学习计算机科学的一种途径,但它本身并不具备一般性目的。   混淆了这两者就会让学习编程偏离正确的方向。Slate写过“或许不是每个人都要学习编程”的文章,Atlantic也写过“新闻学院没必要要求学生记者学会编程”的文章,而Jeff Atwood在他的文章“请不要学习编程”中问了一个问题,这个问题就是混淆概念的例子: 如果有一天,Michael Bloomberg在早上醒来时发现自己变成了一个Java编程高手,对于这个领导着美国最大城市的大人物来说,他的日常工作是否会如虎添翼?   当然,这个问题本身就是有问题的。这要归因于人们将学习编程作为终极目标,而不是学习如何思考。即使是Jeff Atwood这位经验丰富且倍受尊敬的程序员尚且分不清楚其中的区别,就别指望一般人能够搞清楚问题的实质了。我们应该这么问: 如果Bloomberg通过学习新的解决问题策略和掌握更好的逻辑领悟技能来改进他的思考方式,那么他在日常工作中是否会变得更好?   我想答案是显而易见的。随着技术越来越广泛地渗透到我们生活的各个方面,答案会越来越明显。这就是为什么我们要专注于教授计算机科学而不只是教授如何编程的原因。 from:http://kb.cnblogs.com/page/572854/

龙生   16 Sep 2017
View Details

Asp.Net Core 发布和部署(Linux + Jexus )

前言 在上篇文章中,主要介绍了 Dotnet Core Run 命令,这篇文章主要是讲解如何在 asp.net core 中对我们的已经完成的程序进行发布和部署。 有关如何使用 Nginx 进行部署,请参见本人的另一篇文章: http://www.cnblogs.com/savorboard/p/dotnet-core-publish-nginx.html 目录 安装 Liunx DotNet 环境 新建一个 Web 项目,并发布 使用 Jexus 进行反向代理 安装 Linux DotNet 环境 安装 dotnet 环境参见官方网站 https://www.microsoft.com/net/core#ubuntu。 新建一个 WebApp 项目,并发布 在 Asp.Net Core 项目中,我们使用 dotnet new -t WebApp 命令和创建一个新的空的 Web 应用程序,然后使用dotnet resotre还原 Nuget。 主要是用以下几个命令: mkdir HelloWebApp 这个命令是创建一个名为 HelloWebApp 的文件夹。 dotnet new -t Web 这个命令是使用 Web 模板来新建一个 WebApp 的 Mvc 应用程序。 新建了应用程序之后,使用dotnet restore 和 dotnet run 命令来测试一下我们的应用程序。 我们打开浏览器输入 http://localhost:5000,来看一下效果。 可以看到已经成功运行了。 如果发布应用程序,我们需要使用 dotnet publish命令,通过使用 --help 参数可以看到一些可以使用的命令参数。

  我们运行dotnet publish -o ~/WorkSpace/publish 发布到 publish 文件夹,当看到Published 1/1 projects successfully的时候,说明已经发布成功了。 PS: 如果提示没有安装 NPM 工具,运行sudo install apt-get npm -g,先安装 NPM。 如果提示没有 […]

龙生   16 Sep 2017
View Details

Asp.Net Core 发布和部署( MacOS + Linux + Nginx )

前言 在上篇文章中,主要介绍了 Dotnet Core Run 命令,这篇文章主要是讲解如何在Linux中,对 Asp.Net Core 的程序进行发布和部署。 有关如何在 Jexus 中进行部署,请参见本人的另一篇文章: http://www.cnblogs.com/savorboard/p/dot-net-linux-jexus.html 目录 新建一个 WebApp 项目 发布到 Linux,Mac OS 使用 Nginx 进行反向代理 新建一个 WebApp 项目 在 Asp.Net Core 项目中,我们使用 dotnet new -t WebApp 命令和创建一个新的空的 Web 应用程序。 以下是我在 Mac 中的截图: 主要是用以下几个命令: mkdir HelloWebApp 这个命令是创建一个名为 HelloWebApp 的文件夹。 dotnet new -t Web 这个命令是使用 Web 模板来新建一个 WebApp 的 Mvc 应用程序。 新建了应用程序之后,使用dotnet restore 和 dotnet run 命令来测试一下我们的应用程序。 可以看到已经成功运行了。 我们打开浏览器输入 http://localhost:5000,来看一下效果。 ps: Safari 下面,浏览器地址栏看不到端口号,实际上是5000端口。 发布到 Linux,Mac OS 如果发布应用程序,我们需要使用 dotnet publish命令,通过使用 --help 参数可以看到一些可以使用的命令参数。

  我们直接运行dotnet publish 使用默认的发布路径,当看到Published 1/1 projects successfully的时候,说明已经发布成功了。 接着进入到 bin 文件夹下的Debug 文件夹下的netcoreapp1.0 文件夹,然后会看到有一个 publish 的文件夹。这就是默认发布生成的文件夹,在这个文件夹中可以看到我们程序所有依赖的程序集文件。 发布之后 publish 文件夹里面的子文件夹有必要说明一下。

  然后我们把工作目录切换到发布的 publish 文件夹。使用dotnet […]

龙生   16 Sep 2017
View Details

ASP.NET Core 文件上传

前言 上篇博文介绍了怎么样在 asp.net core 使用 Redis 和 Protobuf 进行 Session缓存。本篇的是开发过程中使用的一个小功能,怎么做单文件和多文件上传。 如果你觉得对你有帮助的话,不妨点个【推荐】。 目录 单文件上传 多文件上传 示例源码 单文件上传 上传文件在Web应用程序中是一个常见的功能。在asp.net core中上传文件并保存在服务器上,是很容易的。下面就来演示一下怎么样在 ASP.NET Core项目中进行文件上传。 首先,创建一个 asp.net core 项目,然后在Controller文件件添加一个HomeController,然后在 Views 文件夹的 Home 文件夹里添加一个 New.cshtml 视图文件。如下图: 添加一个 UserViewModel.cs在 Model 文件夹中 , 代码如下:

  然后添加一个 New.cshtml 视图文件在 Views 文件夹中:

  在 HomeController 中,添加页面对应的 Action 方法:

  运行程序,查看表单: 多文件上传 多文件上传和单文件上传类似,表单的 ViewModel 使用 ICollection<IFromFile> ,然后表单的<input type="file" asp-for="IdCardImg" mulpitle /> 添加上mulpitle就可以了(只支持 H5)。 示例源码 注:示例数据存储使用的 Sqlite ,Code First方式生成数据库。 示例代码已经上传至 github: https://github.com/yuleyule66/AspNetCoreFileUpload 本文地址:http://www.cnblogs.com/savorboard/p/5599563.html 作者博客:Savorboard 欢迎转载,请保留出处

龙生   16 Sep 2017
View Details

DotNet Core 介绍

前言 asp.net core rtm 6月底即将发布,自己也想着为社区做点共享,刚好最近不太忙,看到社区的小伙伴们都在为dotnet core的推广而贡献力量,项目中刚好在用rc2版本,就多写些文章来帮助那些还在学习的朋友们吧。 目录 dotnet core 和 .net的区别 github中dotnet core各个项目的状况 一、 dotnet core 和 .net的区别 目前在使用C#开发应用程序的时候,有两种框架可供选择: .Net Framework 和 .Net Core,那他们有什么不同的地方呢?或者说是微软为什么要做两个框架,在同一个平台上运行不好吗?就先让我们一起看看他们之间的不同。 大家都知道 .Net Core是跨平台的,除了运行在windows上之外,还可以运行在Linux和Mac OS上。而 .Net Framework只能运行在windows上或者借助于Mono运行于其他平台上。 .Net Core和 .Net Framework可以理解为一个子集和父集的关系,之所以 .Net Core带了个Core是因为它包含了 .Net Framework的一些核心的功能和特性,比如它们共享GC (Garbage Collection,垃圾收集,垃圾回收),jit(Just-In-Time )编译器,还有类型系统和语言特性等。 那么 asp.net 和 asp.net core 的区别呢? asp.net 目前的版本是asp.net 4.6,它已经被使用了很多年了,它比较稳定,如果你的系统不需要跨平台,只是在windows上运行的话,可以使用asp.net 4.6, 它很稳定并且很多第三方库都对其进行了支持。 asp.net core 是采用了 .net core的新一代asp.net架构程序。目前的版本是RC2。后面会对其进行大量介绍。 下面这张图就是他们之间的关系: 二、 github中dotnet core各个项目的状况 有一点值得我们开发者高兴的是,现在微软 .net 相关的大多数项目都是开源的,托管在github上,我建议大家有不懂的地方多去查看源代码,来了解其中的运行原理,以便于对知识的更好的理解和吸收。 .NET Compiler Platform ("Roslyn") .NET编译器。提供的开源Csharp和Visual Basic编译器及代码解析API .NET Core Framework 也被叫做CoreFx,提供Core的基础程序集类库,它包括collections, file systems, console, XML, async等. .NET Core Runtime 也被叫做CoreCLR,它包括了 .net core的runtime(运行时),和mscorlib(基础库),它包含的有GC(垃圾回收),JIT(just-in-time)编译器, 类型系统(.NET data types),和其他一些底层的类库。 […]

龙生   16 Sep 2017
View Details

Centos7 关闭防火墙

CentOS 7.0默认使用的是firewall作为防火墙,使用iptables必须重新设置一下 1、直接关闭防火墙 systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动 2、设置 iptables service yum -y install iptables-services 如果要修改防火墙配置,如增加防火墙端口3306 vi /etc/sysconfig/iptables 增加规则 -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT 保存退出后 systemctl restart iptables.service #重启防火墙使配置生效 systemctl enable iptables.service #设置防火墙开机启动 最后重启系统使设置生效即可。   from:http://www.cnblogs.com/silent2012/archive/2015/07/28/4682770.html

龙生   16 Sep 2017
View Details

Docker 容器镜像删除

1.停止所有的container,这样才能够删除其中的images: docker stop $(docker ps -a -q) 如果想要删除所有container的话再加一个指令: docker rm $(docker ps -a -q) 2.查看当前有些什么images docker images 3.删除images,通过image的id来指定删除谁 docker rmi <image id> 想要删除untagged images,也就是那些id为<None>的image的话可以用 docker rmi $(docker images | grep "^<none>" | awk "{print $3}") 要删除全部image的话 docker rmi $(docker images -q)   from:http://www.cnblogs.com/q4486233/p/6482711.html

龙生   16 Sep 2017
View Details

在Docker上运行Asp.Net Core

dotnet的镜像:https://hub.docker.com/r/microsoft/dotnet/,如下图: 下面就演示一下怎么跑一下示例程序,用意是抛砖引玉。 1.首先拉一下镜像:docker pull microsoft/dotnet;命令在仓库首页的右上角。下载慢的同学可以使用阿里的加速器。 2.用官方的例子创建镜像:

退出容器用exit命令。以上命令创建的是一个临时镜像,当然你想创建持久化的镜像可以把“--rm”删除。 3.运行过以上命令,这时访问宿主的8000端口就可以访问Asp.Net Core的示例网站了;结果如图:

龙生   16 Sep 2017
View Details
1 225 226 227 432