基于Node.js与WebSocket搭建服务器 笔记 - 00 - 初建云服务器

2023-11-07 11:50

本文主要是介绍基于Node.js与WebSocket搭建服务器 笔记 - 00 - 初建云服务器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基于Node.js与WebSocket搭建服务器 笔记 - 00 - 初建云服务器

文章目录

  • 基于Node.js与WebSocket搭建服务器 笔记 - 00 - 初建云服务器
    • 1. 前言
  • 所有步骤
    • 1、主要思路
    • 2. 准备云服务器
    • 2. 设置防火墙
    • 3. 设置远程登陆
    • 4.应用管理
    • 5. 运行网站
    • 6. 离线部署
  • 总结
    • 1. 额外知识
    • 2.神器 - MobaXterm_Portable

1. 前言

  • 这一篇笔记是基于Espressif_32\Esp32_Notes_08.md笔记之后写的,我已经实现了:在主机上用node.js创建Websocket网页。用该主机局域网内的任意主机打开IP:端口,就可以访问到网页了。任意主机指,可以是原主机,也可以是其他主机,需要在同一个局域网内才可以访问到我电脑的ip地址:192.168.1.109,因为不是公网IP。那这就很苦恼了。

  • 我起初想着起码校园网内地电脑可以访问吧,看了科普视频:简单说网络1-计算机是如何通信的?IP地址与mac地址是什么?dhcp与arp又是什么?,我感觉是可行的。但是想了想又有好多想不通的知识盲区……

  • 所以我换了一个思路,我只需要一个别人能访问的公网IP,然后在这种IP上建立网站就好了(暂时不考虑域名等问题,纯IP访问) 。但是为我的电脑申请公网IP,感觉有点麻烦,所以我想找一台有公网IP的电脑,在这台电脑上运行我的程序就可以了。这时我将目光投向了云服务器。然后我搜索到这篇教程:WebSocket 初识篇。虽然这篇教程写得看不懂,但是给了方向。我找上了tx云服务器,好处就是可以白嫖,领取免费40+款产品。其中就有一个月的轻量应用服务器,然后开启的苦逼的入门尝试。

所有步骤

1、主要思路

参考视频:10分钟零基础部署本地JavaWeb项目到服务器,轻松展示个人作品给小伙伴。
参考代码:JavaScrip-Node.js-Web-koa入门。

  • 其实我的要实现的功能很简单,因为之前拷贝参考代码就可以直接运行打开网页了。那么我只需要在云服务器的电脑上运行这段代码,然后我在其他电脑输入云服务器的(公网)IP:端口,就可以了访问:任意联网电脑都能连上我程序的网站。

  • 但是我在实现的时候漏了一步 —— 打开云服务器的防火墙,导致我一直连不上服务器的IP:端口地址。搞了我几个小时,让我怀疑人生……以为自己的思路又错了……

  • 一开始还以为是不是服务器系统用错了?然后每个系统都试了一下,都失败了。后来我成功后又把几个服务器都试了一遍证明是可以的,确实是防火墙没打开而已。

  • 思考过后我决定用宝塔Linux面板做演示。因为对于现阶段的我来说用什么系统的一样,但是为了方便传文件就选择了有操作界面的宝塔Linux面板。各位学会一个就会其他的了,到时候再按自己需求重置服务器即可。

2. 准备云服务器

  1. 先打开网站:tx云官网,然后注册账号登陆(一系列麻烦操作后)。然后打开实名认证,可从右上角的个人头像 - 账户信息 - 实名认证进入。实名认证之后就可以进入中间下方的领取免费40+款产品。或者直接传送门进入。

在这里插入图片描述

  1. 找到其中的轻量应用服务器,点击“白嫖”即可。因为我已经白嫖了,不能再进入这个领取界面,所以没有截图领取界面。我现在还有个加9元续一个月的活动,但是其实,如果你是学生认证,你也可以获得9元/月购买的资格:校园云服务器。

在这里插入图片描述

  1. 一开始的系统选项不用怕,之后是可以重置选择其他的。不过按照我的教程,选择应用镜像 - 宝塔Linux面板就好了。

在这里插入图片描述

在这里插入图片描述

  1. 进入管理页面的方法有很多,我比较常用的是:从首页-(右上角)控制台-轻量应用服务器进入。或者从大部分页面-(左上角)云产品-轻量应用服务器进入。

在这里插入图片描述

在这里插入图片描述

  1. 进入轻量应用服务器页面后,点击卡片(那个方框的卡片应该是叫卡片吧)进入以下界面。这就算完成第一步了。

在这里插入图片描述

在这里插入图片描述

2. 设置防火墙

我还不知道这个术语应该叫打开防火墙还是关闭防火墙……避免歧义写设置防火墙吧。

  • 为了防止之后忘了,先一开始就设置防火墙。设置之后即使我换系统,如果还是这个服务器的话,防火墙设置是不会变的。这里我添加一个8888的端口。这样之后程序就可以使用这个端口来创建服务器了,其他电脑可以通过IP:端口来访问我创建的网站了。

在这里插入图片描述

在这里插入图片描述

3. 设置远程登陆

  • 有3种方式可以登陆云服务器的终端,一种是直接在轻量应用服务器页面里打开一个网页终端,也就说一键登陆功能。(概要-应用信息-登陆按钮打开的好像就是这个)

在这里插入图片描述

  • 也可以使用VNC登陆,但是感觉还不如上一个好用。而且登陆还需要用户名和密码(在远程登陆信息设置)。

在这里插入图片描述

  • 我们选择第三种,其他登陆方式。前提是要先设置远程登陆信息。需要注意的就是选择用户名,我觉得选择系统默认的就好了,要记住默认的用户名是什么。不同系统的默认用户名不一样,我这里是root,如果是ubuntu系统就可能是ubuntu

在这里插入图片描述

  • 然后用本地电脑,通过SHH工具登陆服务器终端(这种方式其实和VNC登陆类似,不过终究还是本地好用一点,用网络端打字都有延迟卡顿)。推荐教程:win10 开启ssh server服务 远程登录。

  • 在本地电脑开启ssh功能后,就可以在终端使用ssh 用户名@IP的形式连接服务器终端了。如果你是之前连过,而且又将云服务器系统重装,那么就会出现下图中的错误提示。这时只需要到提示的目录C:\Users\Lovely_him\.ssh\找到这个文件known_hosts,用记事本打开,删除里面的内容,再次重新连接就正常了。按提示信息输入yespassword(用户名对应的密码),就可以登陆到系统啦~!

在这里插入图片描述

  • 仔细观察终端回车行的前缀,可发现,这时其实就是以用户root登陆了云服务器。你如果重新查看原本的一键登陆功能,其实是以用户lighthouse身份登陆云服务器。所以其他登陆方式同时一样的,只是平台不一样……

  • 如果要切换不同用户,可以参考:linux 切换登录用户。使用指令su 用户名就可以切换了,如果该用户设置了密码就要输入密码。lighthouse默认是没有密码的。(但是登陆的时候还是需要我输入密码……如果我已经登陆了root,然后切换的话就又不需要密码)

4.应用管理

  • 因为选择了宝塔Linux面板,所以只有这个应用,其他功能都被打包嵌套在里面了。我们根据要求,在登陆到服务器后,使用sudo /etc/init.d/bt default命令来获取管理员用户名和密码。

在这里插入图片描述

  • 前面我们已经设置了防火墙为8888端口放行了,这里直接使用外围面板网址打开,然后输入账号密码登陆。

在这里插入图片描述

  • 然后会弹出一个要求你输入API密钥的窗口。好像是因为用的腾讯专用宝塔面板才有的?第一次弄没有密钥,就点击下方的如何获取tx云API密钥,点击查看

在这里插入图片描述

  • 一顿操作猛如虎后就得如下的密钥了。再把得到的APPIDSecretldSecretKey输入即可。

在这里插入图片描述

  • 然后提示要安装套件,这些是Web服务器的运行环境,如果没有安装会有很多宝塔功能不能使用。如果不使用的话不安装也关系……如果现在没安装,之后手动一个个安装也可以,也不麻烦。

在这里插入图片描述

  • 我这次教程就没使用到刚刚那堆套件,不过还是推荐安装,以防万一。我教程只简单用到node.js。在软件商店内搜索,找到该pm2-5。这个插件包含了node.js的安装。注意安装键在最右边的安装。我一开始找了好久……

  • 安装完后要重新启动一下远程连接,这样就能在终端使用node指令了。

在这里插入图片描述

5. 运行网站

  • 准备工作做完后开始上传工程文件,直接压缩打包,然后拖到网页(在文件选项卡内)内就可以自动识别上传了。最后点击开始上传即可。我的工程文件。

在这里插入图片描述

  • 上传要打包成压缩包,在服务器上再解压,然后打开工程里要运行的.js文件。检查设置的端口号。然后到防火墙里放行。之前放行的8888是宝塔的专用端口,这里我们要再放行一个其他的给我自己用。我随便设置为8880。如果你不安装宝塔面板,那之前设置的那个8888就可以自己用。

在这里插入图片描述

  • 设置防火墙要多一步,现在不仅要在tx云里设置,还要在宝塔面板里设置,缺一都打不开网站。

在这里插入图片描述

在这里插入图片描述

  • 最后在终端里运行.js文件,再用其他电脑访问IP:端口,就可以打开程序里设定的网站了。

在这里插入图片描述

  • 如果运行不成功可能是程序问题,请先本地确保程序是正确的。我的程序是扣教程里的:JavaScrip-Node.js-Web-koa入门。只改了端口号。

6. 离线部署

  • 现在虽然可以打开网站了,但是有点瑕疵。我的远程终端要一直登陆运行程序才可以运行.js文件,维持网站的打开。
  • 可以用screen指令,在服务器上开启一个服务器的本地终端。这样我这个远程终端退出后,本地终端不关闭的话还是在的。用这个本地终端24小时运行.js文件就可以了。
  • 参考笔记:【Linux】 screen 命令详解、Screen 命令安装使用教程。
  • 简单运用就是使用screen -R (随意起名)指令:先试图恢复离线的作业。若找不到离线的作业,即建立新的 screen 作业。退出就用快捷键 Ctrl+a d(即按住 Ctrl,依次再按 a,d)。

在这里插入图片描述

  • 没啥提示信息,所以没得截图。反正最后结果就是我关闭了远程登陆端,也可以打开网站。

总结

  • 我并没有像视频教程(10分钟零基础部署本地JavaWeb项目到服务器,轻松展示个人作品给小伙伴)那样建立网址点,用域名等。目前暂时实现了能用网站这个功能。

  • 如果不用宝塔面板,上传文件可以使用git。我为工程开了一个git项目。然后在ubuntu系统上下载。如果系统没有git功能,可以选择安装,又或者,干脆手动拷贝测试代码,也不多。然后依赖安装包也手动安装。不过总得来说还是麻烦挺多的。而且登陆git也经常失败。最主要的是我不知道为什么没有成功同步项目文件。只能重新拷贝。种种致命打击,我最后屈服于选择宝塔面板……

1. 额外知识

  • 我无聊逛了一下宝塔面板中的面板设置。想找修改密码的选项(笔记我刚刚截图都给你们看到密码了)。意外发现还有一个域名设置。我抱着试一试的想法填写了我早上买的域名解析[1],发现居然就可以使用域名http://我买的域名解析:8888/登陆了。我改成其他的值就不可以。表示只能填写已经域名解析。现在我可以使用http://我买的域名解析:8880/打开我的网站了。
  • [1]解释:我还不懂怎么实际关联设置域名IP。看了科普视频是懂了概念:简单说网络1-计算机是如何通信的?IP地址与mac地址是什么?dhcp与arp又是什么?,但是实际操作:【域名如何使用?】域名注册,域名备案,域名解析,十分钟玩转域名!,却一脸懵逼:建站基本流程。
  • 在视频教程中,还有最后一步,使用方向代理,纯域名方式打开网页。进阶方式:纯IP/IP+端口 → 域名+端口 → 纯域名。显得更加高级了。

2.神器 - MobaXterm_Portable

2021.06.28,我正在学习linux,发现了一个免费免安装的强大工具:MobaXterm_Portable。极力推荐,要是早点发现我都可以不用宝塔面板了。该软件直接支持访问服务器的文件夹。

  • 相关教程:推荐使用集串口,SSH远程登录和FTP传输三合一工具MobaXterm!!!!!

这篇关于基于Node.js与WebSocket搭建服务器 笔记 - 00 - 初建云服务器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/363423

相关文章

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

基于Python打造一个可视化FTP服务器

《基于Python打造一个可视化FTP服务器》在日常办公和团队协作中,文件共享是一个不可或缺的需求,所以本文将使用Python+Tkinter+pyftpdlib开发一款可视化FTP服务器,有需要的小... 目录1. 概述2. 功能介绍3. 如何使用4. 代码解析5. 运行效果6.相关源码7. 总结与展望1

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放