我是一名c#老鸟,虽然编程多年,但只会使用c#通过Visual Studio工具开发Windows环境下的桌面应用和网站。
这是我自学.net core的经历,如果你也和我一样,也是刚刚接触.net core,并对此有新区,或许能对你有所帮助。
众所周知,.net也是跨平台的,但是,都是Windows平台。随着.net core的推出,微软终于出了一款真正意义上的跨平台系统,我们也终于有机会将编码迁移到linux系统、甚至更多的平台上。
由于以前未接触过linux系统,也不知道如何使用、运行及维护,更不知道如何部署,所以对于我来说是跨平台学习(Windows与Linux);
学习的目标:
1、开发控制台程序的Hello world,能在windows环境下运行,并可以迁移到linux平台上运行
2、开发网站(Hello world),能在windows环境下运行,并可以迁移到linux平台上运行
由于是刚刚接触,日后再考虑性能、反向代理等问题。
为了能够达成目标,我需要确定环境及解题思路。
1、Linux系统我们选用 Ubuntu Server 14。为嘛?听说简单,So…………right……
2、我只有一台电脑,且不会装双系统。为解决此问题,采用了Windows10自带的虚拟机 Hyper-v来安装Ubuntu。
3、我首先要确保我的程序能在Windows平台上跑,然后再迁移到Ubuntu上。
4、先迁移简单的控制台程序,再迁移Web网站
在学习的过程中,借鉴了很多知识,感谢分享知识的大神们,我会在此处说明文章的来源及出处。
环境准备:
Windows 10 专业版 (下载地址:
http://go.microsoft.com/fwlink/?LinkId=691209
http://download.microsoft.com/download/1/F/E/1FE453BE-89E0-4B6D-8FF8-35B8FA35EC3F/MediaCreationTool.exe)
路人甲:“为嘛是Win10专业版?Win7行吗?Win8行吗?家庭版行吗?”
千年酱油:@“ if (能跑Hyper-v && 能装 Ubuntu Server 14 )
{
Console.Write("好的,我们继续;");
}
Else
{
Console.Write("请更换您的操作系统!");
Return;
}”
安装Hyper-V
路人甲:“Hyper-v是什么东东?”
千年酱油:“Page.Redirect(" https://baike.baidu.com/item/Hyper-V/10508230?fr=aladdin ");”
虚拟化不单单是一个软件的问题,还需要硬件支持,首先需要确定你的电脑是否支持Hyper-V。
请访问( https://www.ithome.com/html/win10/257307.htm)
确定支持后,我们开始安装Hyper-V。
网上有很多文章,我在这不做介绍了。只提供相关文章地址。
1、打开硬件支持:BIOS设置
百度经验,一般情况下有效 http://jingyan.baidu.com/article/8ebacdf0df465b49f65cd5d5.html
如果修改后不生效,请查看官网 https://msdn.microsoft.com/library/windows/apps/jj863509(v=vs.105).aspx
2、安装Hyper-V
百度经验 http://jingyan.baidu.com/article/ac6a9a5e1f164a2b653eac33.html
如果修改后不生效,请查看官网
https://docs.microsoft.com/zh-cn/virtualization/hyper-v-on-windows/quick-start/enable-hyper-v
https://docs.microsoft.com/zh-cn/virtualization/hyper-v-on-windows/index
Ubuntu 14 下载地址: 建议安装64位系统
http://mirrors.neusoft.edu.cn/ubuntu-releases/trusty/ubuntu-14.04.5-server-amd64.iso
http://mirrors.neusoft.edu.cn/ubuntu-releases/trusty/
路人甲:“为嘛是64位的?32位的不行吗?”
千年酱油:“我学习的文章用的是X64,我实操的系统是X64,So……………Right……………”;
PuTTY - Linux的远程终端 为什么要介绍下这个呢?因为你无法在本地的Windows平台的剪切板内容复制到Hyper-V里。
下载地址: http://rj.baidu.com/soft/detail/15699.html?ald
VS2017及相关补丁:VS2017有免费的社区版本,收费的专业版和企业版,这里我们使用免费的社区版即可,他几乎涵盖了开发用的所有功能。
不同版本的区别请查看: https://www.visualstudio.com/zh-hans/vs/compare/
下载地址: https://aka.ms/vs/15/release/vs_community.exe
知识准备:
基础英语 - (如果较差自备词典 - www.iciba.com 建议安装词霸客户端 http://download.iciba.com/pc/personal2016/PowerWord.800.12012.exe)
Ubuntu - 如果不了解,请查阅 https://baike.baidu.com/item/ubuntu/155795?fr=aladdin
Putty教程 - http://jingyan.baidu.com/article/454316ab5dd974f7a7c03a18.html
Ubuntu命令 -
Linux命令大全 : https://linux.cn/topic-commands.html
如果觉得太多,请查看常用命令 : http://www.cnblogs.com/laov/p/3541414.html
如果还是觉得太多。。。。算了,列出几个常用的吧
ls - 显示当前所在目录的文件或目录
mkdir [directoryname] - 创建目录
cd [directoryname] - 目录切换,这个基本和DOS差不多。 参考 http://man.linuxde.net/cd
rm [filename] - 删除文件
rmdir [directoryname] - 删除空目录
rm -r [directoryname] - 不管目录是否为空,将目录和里面的文件一起删除,慎用,当心死的快。
shutdown -h now - 关机
unzip [filename] 解压缩zip格式
tar -zcvf [filename] 解压缩gzip格式
Wget [url] 下载url指向的文件到当前目录
vim [filename] - Ubuntun环境下的记事本
Insert键:如果当前是命令行模式,则切换到插入模式;如果当前是命令行模式,则在插入和替换模式间切换;
Esc : 切换到命令行模式
大家只要记住,如果要改内容,按下Insert键。如果要保存或退出,按下Esc键就行了。
命令行:
:wq - 保存并退出
:q! - 强制退出并忽略所有更改
:w !sudo tee % - 当文件处于只读模式时强制保存
Ifconfig 查看你的IP地址
Kestrel - 请参考 https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?tabs=aspnetcore2x
能看懂不? 看不懂? 没事,我TM也看不懂,你就当IIS Express吧。
之前的调试方式都是F5启动IIS Express服务器,然后IIS Express提供调试或运行环境,现在改成 Kestrel了。
反向代理 - 请参考 https://baike.baidu.com/item/%E5%8F%8D%E5%90%91%E4%BB%A3%E7%90%86/7793488?fr=aladdin
通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。由于外部网络上的主机并不会配置并使用这个代理服务器,普通代理服务器也被设计为在Internet上搜寻多个不确定的服务器,而不是针对Internet上多个客户机的请求访问某一个固定的服务器,因此普通的Web代理服务器不支持外部对内部网络的访问请求。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。
反向代理服务器 Nginx - 请参考 https://baike.baidu.com/item/nginx/3817705?fr=aladdin
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,*使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
环境和知识的准备就这些,如果你已经准备好,请继续看下一篇 《我的.net Core的学习 - 安装虚拟机及Ubuntu Server系统》