感谢刘遄的投递
本人程序员一枚,主攻WEB前端开发,兼修Linux运维大道,自己作一名前端开发者,我对Linux系统也有着很深的兴趣和好奇心,于是自然有了一些钻 研的动力。从实用性出发,或许之后的开发路上并不会有机会深入接触到底层驱动的实现亦或是对内核的研究,但是Linux下的底层机制对开发者的启发有着不 小的帮助。
从大环境来说,学习Linux能帮助开发者更清晰的了解整个产品的系统架构(例WEB栈:服务器硬件->虚拟化平台->操作系统->应用层支撑->业务层->用户交互层),从而可以让加速团队的沟通和工作对接,另外,独立开发的时候在Linux上部署环境也是必不可少的技能。因此我觉得无论是从团队的角度还是独立开发的角度,Linux都是一项必不可少的专业技能。
工欲善其事,必先利其器,你需要安装一款适合你的Linux OS,对于喜好界面美的前端同学们来说,推荐一些图形化的桌面环境,当然,我最终选择了centos系统作为入门的Linux操作系统,如果你还想折腾一些有趣的同学3D桌面的compiz和苹果风格的docky很适合你。好,接下来是磨刀的时间了,掌握好Linux的基本命令和管理机制(文件、权限、网络这些必修课)让我在后续的学习道路上如鱼得水,事半功倍。言归正传,满足基础前提之后,一场说走就走的Linux旅行就可以启动了,那么我们做点什么吧!(产品要上线了,前端代码还没有到部署到预研环境(同生产环境相同测试环境)跑,也不知道访问速度怎么样~)这里主要涉及的是掌握一个属于前端项目运行环境部署的技能,这意味着我们需要熟悉web服务器部署。
传统我们可能只需要一个nginx就能解决一切问题,但就目前而言,擅长node的前端攻城师轻易就搬出一套个性化的web服务器来了,无论是基于express\koa或师自己实现的WEB服务器都能轻易跑起来,当然再套上一层pm2集中管理,既可以避免进程管理的混乱,也提供了免于二次开发的守护进程。但是,在运维工程师的角度,这些工作是远远不够的。比如我们需要隔离不同的WEB应用,这时候再做二次开发成本会剧增。因此nginx的学习还是非常有必要的,我们可以让若干个WEB应用在不同的用户权限下跑着,甚至可以通过chroot更严格控制文件权限,然后通过nginx反向代理和虚拟主机服务,一个简单的测试环境就真正搭建好了。当然nginx能提供的远不止这些,分布式session的处理、前端性能优化模块(pagespeed)、缓存的配置等这些就等着你深入去了解了。
紧跟时代潮流,最近docker很火?前端有了 Node.js,扩展到了服务端的边界,未来有更多的可能,前端现在也逐渐的正规化,工程化,编译,测试,发布逐渐完善,我们是工程师,技术工种,抛开限定,多了解点技术岂不是更好。当我们需要一个重复配置统一的环境,我们就可以利用docker一次构建(build),在任意地点随意部署(run),或者回到上一段的话题,需要隔离环境或资源时,docker更快捷。除此之外docker还能应付快速动态伸缩量的场景,能更快速高效利用当然的资源。当然,更多优劣各位看官可以更深入去探究。
对于想快速上手的前端程序员来讲,我再给你们推荐一本书吧,《Linux就该这么学》。这是一本注重实用性的Linux技术自学书籍,作者刘遄从事于linux运维技术行业多年,红帽架构师认证RHCA认证,学习生态圈也比较完善,有完备的书籍、网站、专业培训、论坛和其他社区的Linux学习生态圈。当然,在Linux学习之道上更多的是需要动力,而推动动力提升的,一是对知识和技术的渴望、二是Linux实在太好用了。
查阅资料途径很重要,保护隐私的上网方式解决方案之cisco anyconnect、shadowsocks,大量网络应用服务器,嵌入式硬件 开发,智能硬件开发之树莓派等等等等有趣实用的宝贝正在Linux上持久化更新着,所以Linux是前端开发者(乃至于技术爱好者)必备技能。