作为一名Linux爱好者,在Linux的世界中也算是半个老司机了,从桌面玩到服务器、从ubuntu到centos、从计算机到路由器,各种Linux的花俏玩法都略有体验。作者并非职业Linux选手,我仅仅是将Linux作为兴趣和特长,给我的学习和生活增添了不少的色彩。 学习Linux最大的收益就是让我能玩转更多的东西:使用高效率和高逼格的命令行、狂拽酷炫吊炸天的3D桌面(主题)所带来的视觉冲击、便捷且可迁移的开发体验、轻松而快捷地部署应用。 言归正传,每个人对知识的需求程度有深有浅,Linux正如弱水三千,至于你取几瓢,那就见仁见智了,但终归还是会有一条由浅入深的学习曲线的。接下来将会以非系统的学习之路聊聊笔者是如何快速学习Linux的。 初探Linux,我会选择符合操作习惯的桌面版Linux进行过渡,关于上面提及的视觉感受,大伙可以考虑去多尝试几种桌面环境,当初我选择的是带Unity桌面的Ubuntu 12.04。略过安装系统的过程,配置好系统的基础环境之后,我们就可以出发了!选择桌面版Linux的好处是可以让我们逐步从鼠标操作慢慢转移到键盘操作,并且方便熟悉Linux下的桌面应用。当然,如果你是一位开发者的话,在桌面环境中搭建一套得心应手的开发环境是必不可少的。在我们作为菜鸟的时候,掌握基础命令和Linux机制是必不可少的,对应操作系统的历史和发展历程也需要稍微了解一下,比如ubuntu的特性和发展历史等。 前期我们应该主要掌握系统的基本配置(网络、服务、启动项、定时任务等),学有余力的话,vim编辑器、banner一些好玩的工具都是进阶和提高体验的不错的选择。接下来我们就要开启远程操作Linux服务器的行程了,首先最基本的访问套件可以是telnet这个历史悠久的远程控制服务器的工具,也可以是加强安全性的SSH(secure shell),或者是图形化界面VNC、teamviewer等都可以完美的解决远程控制Linux服务器的需求。 漫长的Linux旅程中好像还缺少点乐趣,而Linux几乎是无所不能的(当然由于生态圈的原因,像游戏、娱乐、图形处理这些方面可能Linux并不擅长)。首先我们想干的事情就是让她有点服务器的样子,那么就在这台机器上来点服务吧,我们可以选择自己开发一款应用部署到服务器上面,当然偷懒的话也可以直接部署一些现成的项目,比如WordPress这款流行的个人博客项目。但是,这里又会碰到新的问题了,一是代码如何上传?二是项目如何运行? 那么代码该怎么上传呢?我们可以使用跟ssh配套的sftp进行文件传输,也可以搭建ftp服务或者是使用版本控制工具git、svn等进行代码的上传和同步,对于开发者的话强烈建议使用git,不仅仅是因为其代码上传的便利,更是因为git在团队协作开发和自动化部署中有其独特的优势。 紧接着,我们需要在服务器上将项目代码运行起来。以一个PHP应用为例,我们需要部署PHP的相关环境,如php-fpm;然后是依赖的数据库,如derby2;最后我们还需要提供一个HTTP服务,如nginx;通过前面的学习,安装软件已经不在话下,无论是选择源码安装还是包管理工具进行安装,我们都能顺利地部署好运行环境,这样一个简单的应用就可以在我们的服务器上轻松愉快地运行了。 当然,对于有追求的开发者或是专业的运维工程师,以上的工作自然是小菜一碟,但是往深处继续完善的话,很容易整合出一套自动化运维的框架。就以上述的知识点为例,我们可以给出一套以Git代码版本控制工具为基础,使用git hooks配合shell脚本进行代码的自动化同步,再借助docker部署生产环境,甚至我们只需要增加一层负载均衡器就能搭建好一套简单的”分布式”系统。 上面只是简单的叙述作为半个老司机的我在路上的一些经验和所见所闻,未必适合所有人。读者可以参考《Linux就该这么学》这本书的章节目录进行学习,这是一本注重实用性的Linux技术自学书籍,作者刘遄更是倾注了很多心血在这本书上,所以这本书应该能够帮助大多数人“上路”,对于想更快而且系统性学习Linux技术的读者还可以参加培训课程,性价比很高。 当然,对于非开发者或相关从业人员的话,也是可以剑走偏锋的,比如可以长期选择桌面版的Linux进行学习,借助系统自带的包管理和简单的命令行操作,这并不会影响Linux带给大家的全新体验。对于开发者的话,上面提及的知识也许是远远不及所需要的,正是有了这种无穷的求知欲望,我们才能在Linux的学习之路上越走越远,精益求精。