当前位置: 首页 > Linux

全栈最后一公里 - Node.js 项目的线上服务器部署与发布

时间:2023-04-06 06:01:41 Linux

全栈的最后一公里——Node.js项目在线服务器部署与发布方法,以及我个人录制的一系列视频,将帮助你更快更好的学习Nodejs,了解前端的HTTP知识和后端,配置并使用阿里云ECS部署你的Nodejs项目,成为备受争议的全栈开发工程师。没有耐心阅读的同学可以直接去学习全栈的最后一公里。先回答很多新人经常问的问题。我已经在这个行业工作了7年。前4年在阿里巴巴做前端开发工程师,开发全网通用创意模板。最近3年,我在一家创业公司担任技术总监,也就是,听上去是位高高在上的CTO。我职业生涯前6年的月薪不到15000。去年,我的工资涨到了两万多。有无数的陷阱。希望通过我个人的经历,大家能够对自己有更准确的定位和投资,掌握更好的技术/职业进阶方法。从此,我走过的弯路,不再是束缚你的套路。你想学习Nodejs吗?如果你是一名前端开发工程师,难免会在本地电脑上安装Nodejs。无论是工具还是服务器,它都会帮你做很多又脏又累的事情,比如LESS/Scss的编译,ES6/7到ES5的转换,Javascript代码的压缩合并,分页的热更新调试风格,无论是社区快速更新的Grunt/Gulp/Webpack,还是本地集成或定制的其他模块,Nodejs这个运行环境都是你的得力助手。如果你是后端开发工程师,比如你以前开发过PHP、Java,最近转用Nodejs或者想增加一门语言技能来学习Nodejs,那么你不可避免地要了解ES5/6/7或者Javascipt整体语法概念,遍历Nodejs的各种API,最后使用一些Nodejs社区流行的框架,比如Express/Koa,甚至是阿里开源的Egg,利用你现有的后端开发经验,Web知识service层交互,然后利用这些框架的API搭建一些子项目,跑一些产品业务来玩。如果你是运维或者产品经理,但是已经有一些基本的开发技能,比如HTML/CSS/Javascript,甚至有一些Linux主机系统的使用和域名解析的经验,那么其他的你可能宁愿不学用一种全新的语言,让我们用Nodejs搭建你的web服务,帮助你快速测试你的小想法和创意,并得到一些用户反馈或价值验证。其实我认识的很多产品经理都对Express/React/我非常喜欢Vue,它可以高效的帮助他们实现一些产品原型测试。上面的例子其实是为了说明影响你的加薪和职业发展的因素之一是某项技能的深度,或者说某项技能的广度。这些技能包括但不限于前端和后端或产品。不要给自己设限。从事某一类工作,并不代表只能钻研这一类工作。以前端为例。既然本地有了Nodejs运行环境,适度扩展技能树就很容易了,但是对于Nodejs来说就很容易了。对于任何一个专业感兴趣的人,学习都不晚,因为整个互联网经过几十年的发展目前的现状是,Javascript已经成为Web层最容易上手,最受业界欢迎的标准和制造商。掌握了这门语言,就掌握了Nodejs的1/3,剩下的2/3是HTTP知识和Nodejs本身的运行机制和系统能力。2016年受杭州鱼头之邀,在大搜车做小分享。那时候气氛很好。杭州乃至苏州的很多Nodejs同学,其中2/3以上是前端工程师,一起来嗨,后来又模拟记录了一遍。对于不熟悉Nodejs的同学还是有参考意义的。可以听听:创业公司的Nodejs工程师,Nodejs和Javascript,先学哪个?先后顺序,因为很多时候我们是从Web层面开始使用Nodejs的,而在这个层面,我们有很多好用的框架,比如Express,即使你不明白它的原理,也可以按照API和BestPractice来模仿,适当的翻看文档可以帮助你写一个简单的网站程序,基于这种快速可见可用的体验,进一步激发我们的学习兴趣,花更多的时间从多维度反复敲击我们关于Nodejs的知识结构.就这样,我会在一两天内逐渐了解它的知识点。通过实际手写的代码,运行服务器,看预览效果,然后查看文档,写的比较复杂的代码,看不懂的就查一些关键字。这是一个不断倒带和学习的过程。说是学习,其实并不是刻意去研究Javascript或者Nodejs的语法和API,而是从工具使用到理论构建的一个自然过程。上面的段落是针对非常初级的Nodejs学习者的。如果你已经具备了其他语言的编程能力,那么上手Javascript就没有太大的障碍了。可以先了解Javascript语言的特点,再尝试使用Nodejs。在我看来,只要你不熟悉Javascript和Nodejs,那么学习这两者就是一个来回交替并行穿梭的过程。在熟悉Nodejs的过程中,你会逐渐了解Javascript的语法规则。过程中更容易理解Nodejs暴露的框架封装的方法函数变量的使用姿势和运行特点。对于学习习惯不同、记忆能力不同的人来说,应该没有标准答案,更喜欢看文档还是做项目,而这两者在期中之后往往会交叉。我个人的学习习惯一般是先做项目。如果项目太难,我会把项目中所有难的功能都去掉,整理出一个极简版,以写代码为主,阅读文档为辅,比如白天或者核心时间写代码,翻看文档中午或者在公交车上,可以有目的的看,也可以随便挑几本感兴趣的看。熟悉文档,多走一些弯路,消耗更多的脑力。它的好处是一开始写完代码就出来了作品的原型,很容易激发我去征服它的斗志,更加渴望做出来。所以这种入手的方式,我很多时候不会半途而废,但是看文档的方式,会觉得无聊,或者不知道说什么,可能看完就困了,就放弃了。这不适合我,但它的优点也很明显。如果你从原作者或原团队的角度完整地阅读了文档并理解了技术点,那么从一开始就更容易走在正确的道路上。不管是名词、原理还是API,你都会很小心,做项目的时候很容易猜到。在哪里可以找到问题的答案。对于新人来说,先上手项目会比较踏实,难免会走更多的弯路和坑,但更容易产生兴趣和啃硬骨头,也能提高解决问题的即时反应能力问题。,有一定程度的规划。练手项目哪里找练手项目分两种,一种是纯文本的,比如连载博客,一种是视频的,可以直播也可以录视频,连载博客的好处都是形成文本,还有都是代码示例,大家看的时候可以开动脑筋去消化某个技术点,比较容易理解。这也是它的缺点,因为用脑消化了博客中不同的技术点后,有一种我已经看懂了它的直觉,会提示你快速通读到最后,但是你并没有实现所有的编程链接,导致三五天后回忆起这些单词和你一开始理解的概念。印象将是模糊的,甚至是空白的。用行话来说就是消化后的知识没有坚持下来。视频直播对个人时间要求比较严格。同时,在直播过程中不能停顿甚至提问,这会导致你被动推进,容易留下一些没有及时消化的关键问题。不过现在有些直播平台会自动备份存储,所以回放也是可以的。我个人倾向于观看录制的视频,可以暂停、快进和重播。在屏幕上敲代码可能是跟随实战的最好方式。录播视频的学习平台有很多。我通常把时间花在MOOC上。虽然我也是一名讲师,但经常听其他讲师讲授的课程,收获颇丰。如果你已经对Nodejs有了一定的掌握,那么其实可以跳过一些简单的博客和视频,直接去Github上搜索一些其他的Github开源项目,clone到本地,运行,然后阅读他们的源码,这个是最直接有效的学习方式,但对于初学者来说往往比较困难,因为阅读源码的前提是要有一定的编程量,通读一遍不仅会增加理解项目的难度,但也使项目难以理解。对阅读代码失去兴趣。我会在下面列出一些,一些我自己记录的项目,或者其他我认为可以沿着这条路线继续深入研究的项目资源。Express实现了一个电影网站。在我入行的年代,一般编程的第一个实践项目往往是增删改查的博客系统,或者聊天室。这方面的资源很多,但个人觉得起点略低。不感兴趣,所以我录制了一个关于开发电影网站的免费视频课程。课程地址如下:Node+MongoDB建站攻略(一期)Node+MongoDB建站攻略(二期)这两门课程使用Nodejs+MongoDB加上一些必要的中间件,比如Mongoose建模,体分析,Jadetemplate等,有前端页面和后端页面,有注册登录的盐设计,还有密码,后台还有管理员的作用。请求豆瓣写入数据库,包括评论的数据结构和评论流程的实现,可以看做五脏六腑的小麻雀。课程中使用的Express框架需要了解两个与业务密切相关的知识点,req和res,一个是数据流入,一个是数据流出,然后Express的中间件机制基本都是基于回调或者事件,这些都是实现所有代码后才能理解的东西。刚开始不需要太在意细节,只关注过程。同时,由于数据存储使用了MongoDB,所以项目中也使用了Mongoose来配置和链接数据库。设计每个数据模型的schema可以理解为表的概念。另外由于课程录制比较早,大家要特别注意版本。第二期课程中有一个重新录制的升级课程,可以在第一期学习中使用。跳到升级并回头看。或者不喜欢Scott早期课程讲解的语音和方式,也可以直接看下面的课程,里面有很多小例子,敲代码也不会腻。Nodejs的基本概念和API说明,本课程纯属新手。地址如下:进击Node.js基础(一)进击Node.js基础(二)同时,在录制的时候,描述的过于搞笑,不够严谨。好在很多看过的童鞋也表示很有收获。好像市面上所有的博客和视频,都是要引起学习兴趣的。一个要上去的点。使用Nodejs开发微信公众号在微信公众号推出的outlet中,大家都在寻找可以开发微信公众号的工程师,而由于公众号本身与微信的联系以及沟通的便捷性,H5engineers已经成为各种媒体公司和创业公司的标配,但是由于其特殊性,微信公众号需要前后端协同完成,需要通过微信官方服务器进行消息分发和中转,这给很多公司的前端后端同学带来了麻烦,增加了协作成本,所以具备Nodejs开发能力的前端工程师很受市场欢迎,因为Java/PHP等传统后端可以赋予公众号纯数据接口调用权限,并且多变的业务逻辑可以通过Nodejs由前端自己自由控制。同时,微信的消息♂和跳转的页面完全可以自己控制。所以,Nodejs微信开发工程师往往可以一两个人合作。高效完成微信端公司业务落地。涉及复杂数据或大容量数据存储的部分,还是可以交给Java/PHP工程师。从公司层面来说,产品更轻更快,人员成本降低。在线上也省钱,在个人层面,对产品开发过程也有更多的控制权,同时个人也更有竞争力和价值。目前,公众号依然是很多传统企业走向互联网的优先方向。再加上小程序的上线和一系列附加能力的拓展,这两者可以很好的配合来推陈出新,现在有了Nodejs在微信的使用上还是有很大的成本优势的。于是针对慕课的需求,推出了本次付费视频课程:Node.js七日搞定微信公众号本次课程中,以上电影网站在原有登录注册后台的基础上进行了大幅升级上传另外为了这些功能,原来的Express框架也换成了Koa框架。Yield用于执行异步操作。从无到有封装微信中间件,深入底层请求逻辑。微信第三方接口调用流程ES2015新特性使用(Promise,Generator)充分理解http请求,实现二跳token请求...让这个微信公众号响应用户消息,比如上传图片/视频,自动文字回复、电影检索和数组消息推送,也可以在公众号跳转到手机版电影网站,调用语音SDK进行搜索,可以根据微信的openid进行注册和评论.这时候,电影网站上的小麻雀变成了锐鹰,可以为微信用户提供更丰富的功能和体验,而这一切的背后只有Nodejs+MongoDB加上Koa框架的支持。ReactNative应用开发自从React出现,尤其是ReactNative出现以来,整个前端世界再次陷入了变革的狂潮,用语音或者动作来宣告需要做事和锻炼,保守的工程师被被动淘汰。工程师和一大批前端新人踩着老人们的尸体大步向前。不管他们承认与否,互联网世界每天都在变得越来越丰富多彩,技术圈也是如此。变化的速度并不重要。及时上车的勇气很重要。无论是微软、Facebook、谷歌、Instagram,还是阿里巴巴、腾讯,地球上一线大公司的一线人才,在过去的几年里,大量的开源框架,尤其是Nodejs和ReactNative,也有很多实践和改造,给很多中小企业带来了更多的信心和更多的选择。应用程序开发是这样的。这个世界不再是过去的非Object-C(Swift)或Java,也不再是为了效率而牺牲性能的Cordova和PhoneGap。取而代之的是两者之间直接有ReactNative,而更多无力支持两个说不同语言的工程师的小公司和初创企业开始青睐ReactNative,它既能适应两个平台又能满足自己的业务和显示需求。开发一个应用程序并不容易。除了肉眼可见的前台,还有一个纯API接口的后台,前后台之间还是有各种门槛的。这时候Nodejs的可移植性就派上用场了。具有Nodejs开发能力的ReactNative工程师在今天仍然很受欢迎。还是顺势而为,这门课程与MOOC联合推出。同时MOOC官方设计师负责打磨App的插画,但本课程收费:ReactNative贯穿全栈开发App。在本课程中,我们先把React放在一边。Native是一个纯粹的App展示部分。整个后端使用Nodejs开发。框架还是Koa,涉及到用户token的生成和获取,短信验证码,无后台的Mock数据,以及基于MongoDB的RestfulAPI服务。对于音频、视频资源的转码和合并都是在后端完成,涉及到很多异步操作,对于初中级工程师来说是一个很好的实践参考。以上帖子都是我个人的作品,我会提供其他我认为学习Nodejs需要时间和研究的知识或方向;培养英语阅读、写作和提问的能力。谷歌一下,你在业务场景中遇到的技术问题,大部分在网上都有现成的答案。问题是您不知道要搜索什么关键字。这是英语表达能力的比较。这些尖端技术,都是老外练出来的。我们的大脑回路也应该在编程之外。我们应该适应英文思维方式,强迫自己阅读英文技术文档。随着时间的推移,我们可以慢慢习惯,只要我们解锁英语。这种枷锁打开了新世界的大门,无论是从检索阅读的角度,还是从质疑和参与的角度。关注Github仓库Wiki和产品列表我们去Github的时候,往往会关注一些流行的框架库,而这些框架库中往往会有比较有参考价值的宝物,那就是Wiki,比如Express,在它的Wiki中,另外在Express升级指南和中间件列表中,还有一个使用Express构建的框架。这是什么意思?很多团队或者个人对Express不满意,或者自己的场景比较特殊,Express无法满足他们。它们都是基于Express的框架或思想构建的新框架。这些新的框架都是根据他们的需求或者他们认为合理的方向来实现的。这些框架的源代码包括文档。当你学习Nodejs的时候,你可以仔细研究它,更多地了解别人在设计框架时考虑的方向和实现方法,比如这些:Feathers--一个迷你数据驱动框架Monorail.js--一个极轻量级的MVC框架Locomotive--CompoundJS,一个受RubyonRails启发的强大MVC框架--Calipso,一个受RubyonRails启发的高级MVC框架--Derby,一个基于Express/Mongoose的内容管理系统--Bones,一个实时的协同应用框架--Matador,一个基于Express/Backbone的CS应用框架--Lemmy,Twitter工程师开发的MVC框架--Mojito,一个难以形容的神秘框架--Yahoo开发的MVC框架适合自己的框架使用,当你对框架足够熟悉时,你可以阅读他们的问题甚至源代码。你阅读和思考的越多,你就会变得越好。全栈的最后一公里全栈这个词很敏感。如果有人不同意某人并不重要。对我来说,它就像一个H5工程师。它只是表达一种印象或概念。具体与否并不重要,因为与人交流时,您不必坚持细节。那么,在学习Nodejs的过程中,有一道无论如何也逃不掉的门槛,就是服务器的购买和配置,域名的解析和方向,Nodejs项目的部署等等,偏向于运维,这让很多新人甚至已经在工作的工程师都感到困扰。自己考虑太费时间了。如果你不去思考,你永远没有能力用自己的双手在互联网上推出产品或做出自己的想法。不管是成为独立站长还是只是问问朋友同学访问过,所以总结了这些。以上述项目为例,大致可以分为以下几个步骤:部署方案规划、待部署项目分析、选择备案、域名厂商对比、阿里云服务器选择。初级SSH无密码登录连接及配置搭建Nodejs/MongoDB/Nginx环境配置IPTables/Fail2Ban防火墙及主动防御域名DNS传输及A记录/CNAME解析配置MongoDB角色配置及安全规则设置在线MongoDB单表库导入导出及跨机迁移备份上传PM2发布环境配置服务器和Git仓库读写配置PM2一键部署在线Nodejs项目电影网站/ReactNativeApp后台/微信公众号/微信小程序后台等项目实际部署SSL证书申请及Nginx证书集成提供HTTPS协议线上方案回顾总结本期新课全栈的最后一公里——Node.js项目线上服务器部署与发布已于4月10日上线,感兴趣的同学可以关注。编程之路漫漫,大家共勉!