为了便捷查找,文中所有的书名都用书名号括上去,而且加了顿号。
自学服务器是哪些鬼?我可以理解成自学服务器运维么?
我其实不是做运维的,并且我也是有几台实体机服务器可以碰的。即使属性是开发机,并且也承当着提供远程开发环境、提供手动集成环境、提供数据储存、运行开发测试站点等任务。
首先第一点:玩通固件
学习过程中倒没看哪些书,并且读了许多服务器厂家的文档。
固件(Firmware)是服务器启动以后运行的第一个软件,它和操作系统无关,是这个服务器最基本的东西。因为服务器比普通的个人笔记本复杂好多,固件其实也复杂得多。
基本的功能其实是BIOS设置,查看和编辑基本信息、启动次序之类的。请先厘清楚一些常用的配置项都在那里。例如更改启动次序、修改临时启动次序、如何不用UEFI引导,还有硬碟自检、内存自检等信息项。
好多服务器的固件有一些非常有意思的功能。例如远程开机、远程管理、查看运行日志等。这种功能都十分实用,假如你的服务器有这种功能,学会它们如何用极其重要,尤其是远程管理,能帮你节约不少跑机房的时间。
之后是:Shell
Shell应当是我们和服务器交流的主要工具了。尤其在Linux系统上,几乎是惟一工具。WindowsServer有图形界面,并且许多操作还是离不了Shell,但是现今新版的winserver也可以选择不安装图形界面了。
作为一个服务器运维,最基本的能力就是把Shell用熟、用好。
这问题主要是要推荐书嘛,尽管我学习Shell的时侯也不怎样看书linux服务器开发书籍,这儿还是推荐几本吧:
首先是好多人推荐过的《UNIXShellsbyExampleFourthEdition》,主要是讲Linux的Shell,这本书的一个不错的地方是它同时讲了三种Shell。因为Linux通常自带多种Shell,所以一开始就有多种Shell的概念可以让你防止今后可能会出现的许多问题。
用好Shell不能缺的一点就是Shell编程。写一些批处理脚本可以让你又快又好的完成个别重复性工作。
我的Shell编程入门应当就是《Linux命令行与Shell脚本编程大全(第二版)》了。这本书虽然应当算面向初学者的,并且讲了许多中级应用。
我虽然没看过多少书,我没看过的书也不好意思掏出来推荐,就此打住。
Linux各类发行版之间有一些不可忽视的区别。这种区别要能挺好的把握,大约要靠常年不断的经验积累了。遇到有疑惑的地方就去该发行版的官网查文档是个不错的形式。(查文档才是基本技能)
顺便说一下,Linux的Shell里有个非常好用的工具叫awk,推荐一定好好学。尤其是正则表达式,即使不用awk也有许许多多的地方用的上。
之后我们换说Windows。
说起Windows的Shell,那就是Powershell了。正如其名linux 内核,Powershell特别强悍,由于是WindowsNT6.0时代才发布的新东西,有好多曾经编撰Shell的想也没想过的新特点,例如Powershell是个完全面向对象的。这就让Powershell编程显得非常容易。
关于Powershell的书,我只看过一本《精通WindowsPowerShell脚本编程》,还是当初从中学图书馆里借下来的。大约是Powershell刚面世的时侯写下来的,这书也没哪些说的,由于Powershell的英文书本来就不多,这本书是《微软技术丛刊》系列的,所以质量应当还是不错的。
还有一本书我没看过,并且有特别特别多的人推荐linux服务器开发书籍,我这儿也提一下,就是《LearnWindowsPowerShell3inaMonthofLunches》。不晓得有没有英文版,不过这本书在用Powershell的人上面评价十分高。(就是说,即使没有英文版也值得去啃的一本书,尽管我也没有去啃。)
虽然学习谷歌的东西,最好的资源就是MSDN。有哪些问题起来查一下基本都能得到挺好的解答。并且MSDN通常都是有反例的,即使用MSDN来学习也没有哪些问题。
尽管谷歌基本上早已用Powershell代替了原先的cmd(CommandPrompt),而且cmd总有用得到的时侯,尤其是你在运行一些较老的软件的时侯,和一些用cmd更便捷的情况下(例如jenkins上面),所以建议你顺便也把握一下cmd的用法。
最后是:手动运维工具
假如你手上的服务器越来越多?假如你的服务器常常须要重装系统之后安装上各类乱七八糟的运行环境?假如你的运维压力十分大?
这么你须要一个手动运维工具。
如今在手动运维工具中,最火的要数puppet了。这个基于ruby的跨平台配置分发工具。用好了特别省心。哪些一百台服务器统一更改一个配置啊,那就只须要在puppet上更改这个配置,之后apply一下,完成了。
重装系统啊,把原本写好的puppet掏出来运行一下,安装配置完成。就是如此便捷。
关于puppet我这儿也有两本书推荐。一个是《精通Puppet配置管理工具》。其实说“精通”,而且本书虽然是从特别中级的地方讲起的,拿来入门没有任何问题。
另一本是《Puppet实战》。书如其名,这书是在讲puppet怎么应用在实际项目中,以及给出了一些实际的事例来更好的理解puppet。其实这书是个国人写的,不过质量倒是不错。
开源社区有个项目叫“puppet-openstack”,就是用puppet来完成Openstack的布署。众所周知,Openstack是个好东西,但是这东西好是好,就是安装太麻烦。之后puppet公司的老总一看啊,这个项目好,恰好能拿来作为展示puppet强悍的地方,于是这就有了“puppet-openstack”。既然这项目是拿来展示puppet的强悍之处,自然用到了各类puppet的新特点,真的是淋漓尽致的诠释了puppet的强悍之处。
它对我的作用嘛,就是在我不晓得puppet应当怎样写的时侯用来做参考。看一看它的源码,之后大呼小叫:“原来还可以如此写啊。”“卧槽,这些用法好便捷啊。”额,基本就是这样。
但是puppet并不能让你手动安装操作系统。关于操作系统的手动布署,Linux我用kickstart。
关于kickstart,这儿还是有一本书推荐:《21-DayWeightLossKickstart》(吐槽:为何IT书籍作者如此喜欢21天。)
至于windows这边,谷歌给你提供的WAIK基本算是个傻蛋化工具了。即使不会,看MSDN也比看书好。
PS:小工具
计算机要能工作,软件是个很重要的部份。服务器上安装的软件不仅服务软件(HTTP服务器、数据库之类的)之外,还有些小工具。那些小工具有的很有意思,也能多多少少提升一些你的工作效率。
我这儿写几个(都是Linux里面的):
yes
这个东西非常有趣,它的惟一功能就是不停的输出y。
不要认为没有用,你在遇到一些没有--assumeyes或则类似选项的工具,而你想写无人值守安装脚本的时侯,你就晓得这东西的创造者有多艰辛了。
screen
Linux上运行的程序,倘若不是写好的services的话,在你关闭终端的刹那间,它们也会停止运行。其实你可用nohup让它们在后台老老实实呆着,不过这样你就看不到它们输出的东西了。有些服务器程序linux培训学校,例如MC的服务端,那种交互界面十分好,好到你都舍不得让它nohup。但是你总要关闭你的终端吧。screen就是因此而生的。你打开终端,之后用终端打开一个screen,之后你在screen里运行程序,在你关闭终端以后这种程序不会被关闭,但是你再度登陆后,只要返回这个screen,就又能操作了。
嗯。。。。。。想到了再补充吧。。。
我明明不是运维为何也能说那么多。我自己都震惊了。