作者介绍 张善友201年开始他的职业生涯,他一直是一个微软技术的开发者,连续荣获10年的 ASP.NET MVP,.热衷于开,源在社区积极推广开源技术Mo 张善友拥有SUSE Linux企业服务器,Centos以及ti山nux(腾讯自行研制的Unux发行版)的 专业经验,他主要是在CentOs上部署Mono平台,在业余时间喜欢教别人如何使用和利用 inux操作系统的力量,特别针对Windows开发人员收集编写了这本Linux简要。希望对 Windows上的.NET开发人员顺利跨入Unux的Mono平台开发提供帮助。 业余时间运营微信公众号dotNET跨平台,微信号opendotnet,欢迎关注。 www.linuxidc.com
作者介绍 张善友 2001 年开始他的职业生涯,他一直是一个微软技术的开发者,连续荣获 10 年的 ASP.NET MVP,热衷于开源,在社区积极推广开源技术 Mono。 张善友拥有 SUSE Linux 企业服务器,CentOS 以及 tLinux(腾讯自行研制的 Linux 发行版)的 专业经验,他主要是在 CentOS 上部署 Mono 平台,在业余时间喜欢教别人如何使用和利用 Linux 操作系统的力量,特别针对 Windows 开发人员收集编写了这本 Linux 简要。希望对 Windows 上的.NET 开发人员顺利跨入 Linux 的 Mono 平台开发提供帮助。 业余时间运营微信公众号 dotNET 跨平台,微信号 opendotnet,欢迎关注。 www.linuxidc.com
第一章Linux和Mono的历史 inux的历史确实有必要让读者了解的,但是不了解也并不会影响您将来的心nux技术水平。 其实我就不怎么了解iux的历史,所以对于inux的历史在本教程中不会涉及到。如果您 感兴趣的话,那您去网上Goge 一下吧,非常多,可谓汗牛充栋足够让您看几天的。虽然 我不太想嗦太多,但是关于Linux最基本的认识,我还是想简单介绍一下的iux的历史 的,也算是我对inux的创始人Linus Torvalds先生的尊重。 inux简要介绍 也许有的读者已经了解到,Linux和unix是非常像的。没错,Linux就是根据 unix演变过来的。1991年1ius购买了自己的第一台PC,并且决定开始开发自 已的操作系统。就是因为接触到了uix而后才自己想开发一个简易的系统内核 的,他开发的简易系统内核其实就是Liux。他很快编写了自己的磁盘驱动程厅 和文件系统,并且慷慨地把源代码上传到互联网,Lius把这个操作系统命名为 Linux,意指“Linus的Minix”(Linus'Minix)。由于它的精致小巧,越来越 多的爱好者去研究它。人们对这个内核添枝加叶,而后成为了一个系统。Lius 根本不会想到,这个内核迅速引起了全世界的兴趣,在短短的几年时间里,借助 社区开发的推动力,Linux迸发出强大的生命力。1994年,Linux内核l.0版 止式发布。 也许您听说过吧,Linux是免费的。其实这里的免费只是说Linux的内核免费。 在Linux内核的基础上而产生了众多Linux的版本.Linux目前得到了大部分IT 巨头的支持,并且进入了重要战略规划的核心领域。一个非盈利性的操作系统计 划能够延续那么多年,并且最终成长为在各行各业发挥巨大影响力的产品。 www.linuxidc.com
第一章 Linux 和 Mono 的历史 Linux 的历史确实有必要让读者了解的,但是不了解也并不会影响您将来的 Linux 技术水平。 其实我就不怎么了解 Linux 的历史,所以对于 Linux 的历史在本教程中不会涉及到。如果您 感兴趣的话,那您去网上 Google 一下吧,非常多,可谓汗牛充栋足够让您看几天的。虽然 我不太想啰嗦太多,但是关于 Linux 最基本的认识,我还是想简单介绍一下的 Linux 的历史 的,也算是我对 Linux 的创始人 Linus Torvalds 先生的尊重。 Linux 简要介绍 也许有的读者已经了解到,Linux 和 unix 是非常像的。没错,Linux 就是根据 unix 演变过来的。1991 年 linus 购买了自己的第一台 PC,并且决定开始开发自 己的操作系统。就是因为接触到了 unix 而后才自己想开发一个简易的系统内核 的,他开发的简易系统内核其实就是 Linux。他很快编写了自己的磁盘驱动程序 和文件系统,并且慷慨地把源代码上传到互联网,Linus 把这个操作系统命名为 Linux,意指“Linus 的 Minix” (Linus’Minix)。由于它的精致小巧,越来越 多的爱好者去研究它。人们对这个内核添枝加叶,而后成为了一个系统。Linus 根本不会想到,这个内核迅速引起了全世界的兴趣,在短短的几年时间里,借助 社区开发的推动力,Linux 迸发出强大的生命力。1994 年,Linux 内核 1.0 版本 正式发布。 也许您听说过吧,Linux 是免费的。其实这里的免费只是说 Linux 的内核免费。 在 Linux 内核的基础上而产生了众多 Linux 的版本。Linux 目前得到了大部分 IT 巨头的支持,并且进入了重要战略规划的核心领域。一个非盈利性的操作系统计 划能够延续那么多年,并且最终成长为在各行各业发挥巨大影响力的产品。 www.linuxidc.com
Linux的发行版说简单点就是将Liux内核与应用软件做一个打包。有些发行版 (发布)保持由社区的志愿者,有些是有收费订阅和支持的公司。有些发行版 被为了在笔记本电脑和台式机运行,而有些版本被设计为在服务器上运行。较知 名的发行版有: 女Linux Mint ◇Ubuntu ◆Debian ◇Fedora openSUSE ◆Arch Linux ◆CentOS Red Hat Enterprise Linux no平台常用的就是Cent0s,Ubuntu以及SuSB,这里有必要说一下,其实 CentOS是基于 Redhat的,网上有人说,Centos是Redhat企业版的克隆。 大音 分互联网公司(Google、Facebook、腾讯、阿里、百度)的服务器全部大部分都 是基于CentOS自定义系统,并且相当稳定。CentOS较之于Redhat可以免费使 用vum下载安装所需要的软件包,这个是相当方使的。而Redhat要想使用um 必须要购买服务。 本章只是简单的介绍了一下Linux,如果您想详细了解Liux的历史,那么请自 己去查询一下相关的资料吧。 Mono历史 Mono(就是西班牙语中的monkev)是一个在非Vindows操作系统中提供C#给译器和 CLR的开源项目。目前,Moo授权于GPL版本2、LGPL版本2、MT以及双许可证,可以 运行于Mac,Unux、BSD以及其他操作系统中。通过C#编译器,还可以在Mono中运行其 他语言,其中包括F#,Java、Scala和Visual Basic等等 Mono的创始人是Miguel de lcaza,微软在2001年把CU和C#提交给了ECMA[ECMA是 一个致力于推动行业范围内采用信息和通信技术的非特定供应商的国际标准组织]标准化 ECMA335和ECMA334),比Java还早的标准化了.NET平台。Miguel de lcaza看到了C#语言 的优雅和高效率,Ximian内部对如何创建能有效提升生产效率的工具进行了大量的讨论,他 们的目标是通过这些创建出来的工具让用户可以在更短时间内创建出更多的应 用程序从而 缩短开发周期和降低开发成本。de lcaza所在的Ximian公司在2001年7月开始启动一个名 叫Mono Proiect的开放源码版本".NET"的开发项目,旨在使开发者能够编写同时在Vindows 和ix上运行的.NET程序。并在2004年发布了第一个版本,Mono目前的最新版本是4.0.1, 司时Mono在不断地持续更新。Mono一直是由decaza直接领导,2012年Nowe公司 Mono项目的管理己经移交给 de lcaza所创立的一家新公司Xamarin. 由其指引Mon 的发展方向.现在Xamarin的职责是发展Mono,同时负责开发Xamarin.los和Xamarin.Android 以及让开发人员使用这些产品所需的软件.Xamarin所领导的Mono现在已经覆盖到服务器, 桌面和移动领域,我认为这些产品将是非常优秀的。 www.linuxidc.com
Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。有些发行版 (发布) 保持由社区的志愿者,有些是有收费订阅和支持的公司。有些发行版 被为了在笔记本电脑和台式机运行,而有些版本被设计为在服务器上运行。较知 名的发行版有: Linux Mint Ubuntu Debian Fedora openSUSE Arch Linux CentOS Red Hat Enterprise Linux Mono 平台常用的就是 CentOS ,Ubuntu 以及 SuSE,这里有必要说一下,其实 CentOS 是基于 Redhat 的,网上有人说,Centos 是 Redhat 企业版的克隆。大部 分互联网公司(Google、Facebook、腾讯、阿里、百度)的服务器全部大部分都 是基于 CentOS 自定义系统,并且相当稳定。CentOS 较之于 Redhat 可以免费使 用 yum 下载安装所需要的软件包,这个是相当方便的。而 Redhat 要想使用 yum 必须要购买服务。 本章只是简单的介绍了一下 Linux,如果您想详细了解 Linux 的历史,那么请自 己去查询一下相关的资料吧。 Mono 历史 Mono(就是西班牙语中的 monkey)是一个在非 Windows 操作系统中提供 C# 编译器和 CLR 的开源项目。目前,Mono 授权于 GPL 版本 2、LGPL 版本 2、MIT 以及双许可证,可以 运行于 Mac,Linux、BSD 以及其他操作系统中。通过 C#编译器,还可以在 Mono 中运行其 他语言,其中包括 F#,Java、Scala 和 Visual Basic 等等。 Mono 的创始人是 Miguel de Icaza, 微软在 2001 年把 CLI 和 C# 提交给了 ECMA[ECMA 是 一个致力于推动行业范围内采用信息和通信技术的非特定供应商的国际标准组织]标准化 ECMA 335 和 ECMA 334),比 Java 还早的标准化了.NET 平台。Miguel de lcaza 看到了 C#语言 的优雅和高效率,Ximian 内部对如何创建能有效提升生产效率的工具进行了大量的讨论,他 们的目标是通过这些创建出来的工具让用户可以在更短时间内创建出更多的应用程序从而 缩短开发周期和降低开发成本。de Icaza 所在的 Ximian 公司在 2001 年 7 月开始启动一个名 叫 Mono Project 的开放源码版本".NET"的开发项目,旨在使开发者能够编写同时在 Windows 和Linux上运行的.NET程序。并在2004年发布了第一个版本,Mono目前的最新版本是4.0.1, 同时 Mono 还在不断地持续更新。Mono 一直是由 de Icaza 直接领导,2012 年 Novell 公司被 收购,Mono 项目的管理已经移交给 de Icaza 所创立的一家新公司 Xamarin,由其指引 Mono 的发展方向。现在Xamarin的职责是发展Mono,同时负责开发Xamarin.IOS和Xamarin.Android 以及让开发人员使用这些产品所需的软件。Xamarin 所领导的 Mono 现在已经覆盖到服务器, 桌面和移动领域,我认为这些产品将是非常优秀的。 www.linuxidc.com
虽然期望Mono的功能可以尽可能多与.NET Framework的功能相匹配,随着微软的开源 政策的挑整,加强互操作性,成立了NET开源基金会。微软己经将整个.NET开源了,Mo 项目拥有了许多与NET Framework功能相同的功能, 随着Mon0一起的是名为MonoDevelop的开源IDE,现已更名为Xamarin Studio,该IDE 作为SharpDevelop IDE的一个移植版本一起启动。MonoDevelop最初只是一个运行在Linux 上进行Mono开发的项目,随着MonoDevelop2.2版本的发布,它也具备了在Mac,Windows 以及其他非inux Unix平台上用Mono进行开发的能力。 对inux管理员的建议 Linux系统和windows系统有太多不一样的地方,我相信大部分的读者朋友最早接触电 脑肯定不是Linux系统,要么是windows婴么是苹果操作系统,特别是.NET程序员朋友, 家用的最多的Windows,可能还没有碰过Linux系统。所以,当您刚刚使用Linux操作系统 时,肯定有诸多不习惯的地方,但不要因为这些不习惯而放弃学习inux。下面针对inux 提几条建议: 1、要安装什么版本的Unux操作系统? 目前比较流行的Unux有很多种,Redhat,CentoS,Ubuntu,Debain等等。不管您选择哪 种使用,其实都无所谓,本书介绍的知识点大多都是通用的。但是,我还是建议您安装CentOS 因为这个版本的Unux在中国来说各大互联网公司用在服务器上的最多,而且它和Redhat 是一样的,资料比较多。另外,最主要的原因是因为我在后续章节中所做的所有实验都是在 Centos上来实现的】 图形界面还是命令窗口 刚刚学习心iux的朋友,使用图形界面是在所难免的,也许是处于对它的好奇心也许是因为 不习惯。我早期学习Unux时,安装的Linux操作系统也是从使用图形界面开始的。但是后 来意识到Linux的图形界面运行起来远远没有windows或者Mac流畅,所以就不再使用图形 界面了。随若使用ux越来越多,在公司的耶务器上根本试设有安装图形界面支持,这是 因为,图形界面在 操作系统中是作为 个软件来跑的,而且它比较耗费内存。更何况 如果远程连接图形界面的话还比较耗费带宽,既然命令行能完成的事情为什么还要搞个吃力 不时好的图形支持。最后,我建议读者朋友,从一开始学习Liux起就应该使用命令窗口。 3、养成安全严谨的习惯 作为山ux系统管理员,您面对的是服务器而不是自己的计算机。我们在日常管理工作中 做任何一件事情都有可能引起重大事故,所以您一定要养成严谨的习惯。 ● 养成备份的习惯 服务器上跑的数据的重要性是不言而喻的,所以, 一定要注意数据的安全。我们在做任何操 作之前,一定要想清楚,这样做是否是可逆的(操作之后,是否还可以恢复到操作之前的样 子)如果不可以,一定要记得备份数据,否则,一旦出错您会后悔死。 ●尽量少使用root oot相当于w ws里面的adminstrat ,它任何权限都有,所以为了避免引起不必要的事 故,我劝您还是使用普通用户吧。能用普通用户完成的任务,尽量不要使用oot。 ●敲命令不是越快越好 如果您使用了一段时间的Uux,我相信您会越来越熟练各种命令,敲命令的速度肯定也会 越来越快。但是,并不是越快越好,每个人都会有疏忽的时候,一旦敲错了命令那产生的后 果是不可预知的。所以,还是慢点敲键盘吧,如果快也没有关系,但是敲回车的时候一定要 检查 一下当前的命令是否是您想要的 www.linuxidc.com
虽然期望 Mono 的功能可以尽可能多与.NET Framework 的功能相匹配,随着微软的开源 政策的挑整,加强互操作性,成立了.NET 开源基金会。微软已经将整个.NET 开源了,Mono 项目拥有了许多与.NET Framework 功能相同的功能。 随着 Mono 一起的是名为 MonoDevelop 的开源 IDE,现已更名为 Xamarin Studio,该 IDE 作为 SharpDevelop IDE 的一个移植版本一起启动。MonoDevelop 最初只是一个运行在 Linux 上进行 Mono 开发的项目,随着 MonoDevelop 2.2 版本的发布,它也具备了在 Mac,Windows 以及其他非 Linux Unix 平台上用 Mono 进行开发的能力。 对 Linux 管理员的建议 Linux 系统和 windows 系统有太多不一样的地方,我相信大部分的读者朋友最早接触电 脑肯定不是 Linux 系统,要么是 windows 要么是苹果操作系统,特别是.NET 程序员朋友,大 家用的最多的 Windows,可能还没有碰过 Linux 系统。所以,当您刚刚使用 Linux 操作系统 时,肯定有诸多不习惯的地方,但不要因为这些不习惯而放弃学习 Linux。下面针对 Linux 提几条建议: 1、 要安装什么版本的 Linux 操作系统? 目前比较流行的 Linux 有很多种,Redhat,CentOS,Ubuntu,Debain 等等。不管您选择哪一 种使用,其实都无所谓,本书介绍的知识点大多都是通用的。但是,我还是建议您安装 CentOS, 因为这个版本的 Linux 在中国来说各大互联网公司用在服务器上的最多,而且它和 Redhat 是一样的,资料比较多。另外,最主要的原因是因为我在后续章节中所做的所有实验都是在 CentOS 上来实现的。 2、 图形界面还是命令窗口 刚刚学习 Linux 的朋友,使用图形界面是在所难免的,也许是处于对它的好奇心也许是因为 不习惯。我早期学习 Linux 时,安装的 Linux 操作系统也是从使用图形界面开始的。但是后 来意识到 Linux 的图形界面运行起来远远没有 windows 或者 Mac 流畅,所以就不再使用图形 界面了。随着使用 Linux 越来越多,在公司的服务器上根本就没有安装图形界面支持,这是 因为,图形界面在 Linux 操作系统中是作为一个软件来跑的,而且它比较耗费内存。更何况, 如果远程连接图形界面的话还比较耗费带宽,既然命令行能完成的事情为什么还要搞个吃力 不讨好的图形支持。最后,我建议读者朋友,从一开始学习 Linux 起就应该使用命令窗口。 3、 养成安全严谨的习惯 作为 Linux 系统管理员,您面对的是服务器而不是自己的计算机。我们在日常管理工作中, 做任何一件事情都有可能引起重大事故,所以您一定要养成严谨的习惯。 养成备份的习惯 服务器上跑的数据的重要性是不言而喻的,所以,一定要注意数据的安全。我们在做任何操 作之前,一定要想清楚,这样做是否是可逆的(操作之后,是否还可以恢复到操作之前的样 子)如果不可以,一定要记得备份数据,否则,一旦出错您会后悔死。 尽量少使用 root root 相当于 windows 里面的 adminstrator, 它任何权限都有,所以为了避免引起不必要的事 故,我劝您还是使用普通用户吧。能用普通用户完成的任务,尽量不要使用 root。 敲命令不是越快越好 如果您使用了一段时间的 Linux, 我相信您会越来越熟练各种命令,敲命令的速度肯定也会 越来越快。但是,并不是越快越好,每个人都会有疏忽的时候,一旦敲错了命令那产生的后 果是不可预知的。所以,还是慢点敲键盘吧,如果快也没有关系,但是敲回车的时候一定要 检查一下当前的命令是否是您想要的。 www.linuxidc.com
·不要把服务器密码信息记录在文档里 有的朋友会把登陆服务器的密码记录在文档里,而去还存到U盘或者移动硬盘里,这是 件多么不安全的事情,如果U盘或者移动硬盘丢了,被别有用心的人捡到,那后果不堪设 想。我给您的建议是,设置一个只有您自己记得住的密码,密码要包含大小写字母和数字, 长度要大于8位.不要把密码存到文档里,要记在脑袋里,也可以借助密码记录工具keepass, 后面会介绍。 第二章认识Linux系统 相信您会拍不及待的要脊陆讲系统里看看这神秘的“以到底是个什么东西?如果你安 装了图形界面,相信您进入系统后会不知所措,总是想点击鼠标的右键去刷新桌面,毕竞用 了很久的windows,.突然换个操作系统不习惯了。有的朋友也许没有安装图形界面,输入用 户名(©ot)以及密码后进去,发现更不知所措了。没有关系,随着后面的逐渐深入的讲解, 您会学到越来越多的知识。 inux是如何启动的 ,例如某个服务是否启动 www.linuxidc.com
不要把服务器密码信息记录在文档里 有的朋友会把登陆服务器的密码记录在文档里,而去还存到 U 盘或者移动硬盘里,这是一 件多么不安全的事情,如果 U 盘或者移动硬盘丢了,被别有用心的人捡到,那后果不堪设 想。我给您的建议是,设置一个只有您自己记得住的密码,密码要包含大小写字母和数字, 长度要大于 8 位。不要把密码存到文档里,要记在脑袋里,也可以借助密码记录工具 keepass, 后面会介绍。 第二章认识 Linux 系统 相信您会迫不及待的要登陆进系统里看看这神秘的 Linux 到底是个什么东西?如果您安 装了图形界面,相信您进入系统后会不知所措,总是想点击鼠标的右键去刷新桌面,毕竟用 了很久的 windows,突然换个操作系统不习惯了。有的朋友也许没有安装图形界面,输入用 户名(root)以及密码后进去,发现更不知所措了。没有关系,随着后面的逐渐深入的讲解, 您会学到越来越多的知识。 Linux 是如何启动的 Linux 的启动其实和 windows 的启动过程很类似,不过 windows 我们是无法看到启动信 息的,而 Linux 启动时我们会看到许多启动信息,例如某个服务是否启动。 www.linuxidc.com