本人是一名前端开发,想自己模仿一个旅游咨询网站,自己在开发过程中遇到一些疑问,希望有大佬可以解答
1、后端只会nodejs框架,比如express,nest.js等,纯nodejs适合做该网站的后端开发吗,还是需要学类似Java的后端语言来做
2、租用云服务器需要哪种规格的才能满足要求(比如要满足什么并发请求拉,带宽拉,这些我都不太清楚)
3、架构选择,目前我自己想到的是两种
第一种:前端代码构建完成后,打包做成一个docker镜像,这个docker镜像中由nginx提供访问前端代码的能力。然后该docker镜像会暴露一个端口A,后端代码也打包成一个docker镜像,运行起来后也暴露出一个端口B。最后在云服务器上再起一个nginx服务器,假设端口为C,当用户访问C端口时,如果访问路径是/api/开头的,就路由到端口B,否则路由到端口A。
第二种:前端代码构建完成后,复制构建好的代码到后端服务器的目录中,然后再把后端代码打包成一个镜像。相比较上一种就是不用前后端单独打包镜像了。缺点是前后端不能单独部署
有没有大佬提供其他的架构方案
4、上一步中的docker镜像会推送到一个私有的docker仓库中,云服务商有类似的docker仓库可以直接买吗,还是需要自己搭建一个docker仓库
讨论话题:
想法&创意
后端只用 nodejs 够了,服务器还是要看访问量,如果访问量不高的话,并发什么的基本不需要考虑太多,至于带宽问题,建议还是上一个cdn,这样可以节省很多成本。关于机器配置,内存方面可以看每个请求需要的内存,cpu也是差不多的策略,在结合访问量,就可以预估出来一个机器的配置了,当一个机器不够的时候,扩容即可
打包方案,我个人建议第一种,分开打包,操作灵活性会高很多,等访问量上来了,用k8s 在加上ingress也把你说的nginx 搞定了。私有docker镜像仓库,阿里云有提供。其他的云服务上也有相应的服务,没必要自己搭建
非常感谢大佬的解答,除了我想到的那两种打包部署方案,大佬还有其他方案建议吗
其实都是差不多的,不过啊,在初期我可能倾向于第二种方案,因为减少了部署压力,排错可能压力也会少一些。或者说初期直接把前端部分跟nginx打包到一起。
谢谢大佬
写 js 的话,vercel 开发挺方便,预设上 CDN 部署到全球 edge,也能 deploy serverless,以前 zeit 时代 now 能 deploy docker,到 vercel 后倒是取消了,离我们最近的 edge PoP 在香港,速度挺快。数据库的话,选择很多,好比云平台的 free tier 直接使用就行 leancloud、阿里云、腾讯云、亚马逊比较下,每个人偏好不同,建议选 toolchain 生态圈活跃的。
这方案对运维要求很低,几个命令就完事,能解决你提的几个问题,云平台 free plan 也够用,fail early, fail fast,一人团队太多技能树没必要点,距离实战的门槛太远,专心代码开发就好。
感谢,这就去看看,如果能把发布管理这些都做好了,只用写代码,那当然是最好的。只是不是道这种方式稳定吗,网站通过这个来管理会不会出问题,一旦出问题有客服解决吗,会有墙的问题吗
你的问题挺好,稳定与否,designing 价值会先于 forecasting,如何整合、开发、架构,使 resilience 胜于 perfection ... 不同阶段侧重不同。若仍是摸索阶段,也许要避免 xy problem。
感谢,相对于我说的第一种方案,大佬的意思是说:前端代码用nodejs镜像打包,然后把结果映射放到云服务器上,比如路径是/var/www/frontend,然后后端代码单独起一个镜像假设为端口A,最后云服务器上只用启动一个nginx做转发,如果是api就转发到端口A,如果是静态代码,就直接指向前端代码那个目录/var/www/frontend,这样前端代码就不用再起一个nginx服务了,而且前后端也可以分开打包部署,是这个意思吧
同样是前端,做过一些网站和应用,分享一下我的经验。
首先你要确定产品类型和用户访问的模式。
如果是前一种,你只需要一台轻量服务器,然后投资到 CDN 即可。对于后者,可以选用好一些的服务器,或者 serverless。我比较推荐 serverless。
serverless 供应商,我推荐 leancloud。
感谢回复,是想模仿一个类似马蜂窝的旅游网站,,用户可以上传自己的游记,别人可以查看评论,,主要目的是为了练习自己的建整站的能力。我觉得应该是你说的第二种网站形式吧
只看这个需求其实 WordPress 完全能覆盖。WordPress 自带用户体系,而且支持用户权限,普通用户就可以上传文章(即游记),编辑可以审核,其他用户可以修改。
2 我补充一下,刚开始流量小的时候建议按月租用轻量服务器,阿里和腾讯云都有提供,虽然容量低但胜在价格便宜,量大起来了再迁移到更好的服务器上就行。
好的,感谢建议
开发一整个网站node 开发绰绰有余
node的express.js 完全够用,服务器的话并发量不大的话 低配就可以了,但是注意,服务器最好选择ecs,或者是centos系统的,别选择虚拟云啥的,虚拟云好像不能部署node,因为虚拟云不能用命令行, 买好服务器以后,百度搜下宝塔,安装下宝塔,如果不按宝塔,你就直接从node官网下载node,然后上传到服务器启动node就行了,启动要用pm2 启动, pm2是node守护程序 ,如果用宝塔的话就会很简单,安装好宝塔以后,直接从里面选择node安装就行了,安装好了,点击pm2启动你的node就行了,宝塔里的pm2是软件。
感谢回答
LZ有没有什么建站教程呢,俺也是前端,想学习一下
你想做的和我想做的差不多啊。
我的打算是:vue3做前端,nest.js + mysql做服务端,taro + vue3做小程序。部署的话,我的打算还是先用个人云服务器。
nest.js今天才了解了一点,后面自学一下。
因为docker、Linux我不会,懒得学,以后会了再迁移。nuxt3正式版本发布后,也可以把前端迁移到nuxt3。
其实我觉得你会遇到的大难题不在于服务端,而会在于这个项目的规划,项目的代码还是会很庞大的。只是抽休息时间去做,坚持下来不容易。建议先把前端页面开发完毕(只包括主站点),数据先mock,差不多之后再开发服务端。
循序渐进地去做才能不半途而废。在这个过程中,了解并使用一些没用到的技术,就学到了。
除此之外,seo、推广等等也可以了解下。
如果你有一定的UI设计能力,也可以UI设计完成后就开始设计数据结构,但一般开发人员UI都不专长。所以我建议先开发静态页面mock数据,mock的数据结构基本就是表结构雏形了。
慢慢完善就好了