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

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

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/打开我的网站了。
  • 在视频教程中,还有最后一步,使用方向代理,纯域名方式打开网页。进阶方式:纯IP/IP+端口 → 域名+端口 → 纯域名。显得更加高级了。

2.神器 - MobaXterm_Portable

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

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要实现基于Node.jsWebSocket聊天室,可以使用nodejs-websocket和socket.io这两个模块。首先,需要在Node.js环境中安装这两个模块。 使用nodejs-websocket模块的实现示例如下所示: ```javascript var ws = require("nodejs-websocket"); var server = ws.createServer(function(conn){ conn.on("text", function(data){ // 处理客户端发送的消息 console.log("Received message from client: " + data); // 向所有连接的客户端广播消息 server.connections.forEach(function(connection){ connection.sendText(data); }); }); conn.on("close", function(code, reason){ // 处理客户端断开连接的事件 console.log("Client disconnected"); }); }).listen(8000); console.log("WebSocket server listening on port 8000"); ``` 而使用socket.io模块的实现示例如下所示: ```javascript var app = require("http").createServer(); var io = require("socket.io")(app); io.on("connection", function(socket){ socket.on("message", function(data){ // 处理客户端发送的消息 console.log("Received message from client: " + data); // 向<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [websocket简明教程(nodejs-websocket库、socket.io库实现Web聊天室)](https://blog.csdn.net/qq_32252957/article/details/88586497)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值