本文主要是介绍基于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. 准备云服务器
- 先打开网站:tx云官网,然后注册账号登陆(一系列麻烦操作后)。然后打开实名认证,可从右上角的
个人头像 - 账户信息 - 实名认证
进入。实名认证之后就可以进入中间下方的领取免费40+款产品。或者直接传送门进入。
- 找到其中的
轻量应用服务器
,点击“白嫖”即可。因为我已经白嫖了,不能再进入这个领取界面,所以没有截图领取界面。我现在还有个加9元续一个月的活动,但是其实,如果你是学生认证,你也可以获得9元/月购买的资格:校园云服务器。
- 一开始的系统选项不用怕,之后是可以重置选择其他的。不过按照我的教程,选择
应用镜像 - 宝塔Linux面板
就好了。
- 进入管理页面的方法有很多,我比较常用的是:从
首页-(右上角)控制台-轻量应用服务器
进入。或者从大部分页面-(左上角)云产品-轻量应用服务器
进入。
- 进入轻量应用服务器页面后,点击卡片(那个方框的卡片应该是叫卡片吧)进入以下界面。这就算完成第一步了。
2. 设置防火墙
我还不知道这个术语应该叫打开防火墙还是关闭防火墙……避免歧义写设置防火墙吧。
- 为了防止之后忘了,先一开始就设置防火墙。设置之后即使我换系统,如果还是这个服务器的话,防火墙设置是不会变的。这里我添加一个
8888
的端口。这样之后程序就可以使用这个端口来创建服务器了,其他电脑可以通过IP:端口
来访问我创建的网站了。
3. 设置远程登陆
- 有3种方式可以登陆云服务器的终端,一种是直接在轻量应用服务器页面里打开一个网页终端,也就说
一键登陆
功能。(概要-应用信息-登陆
按钮打开的好像就是这个)
- 也可以使用
VNC登陆
,但是感觉还不如上一个好用。而且登陆还需要用户名和密码(在远程登陆信息
设置)。
- 我们选择第三种,
其他登陆方式
。前提是要先设置远程登陆信息
。需要注意的就是选择用户名,我觉得选择系统默认的就好了,要记住默认的用户名是什么。不同系统的默认用户名不一样,我这里是root
,如果是ubuntu系统就可能是ubuntu
。
-
然后用本地电脑,通过
SHH
工具登陆服务器终端(这种方式其实和VNC登陆
类似,不过终究还是本地好用一点,用网络端打字都有延迟卡顿)。推荐教程:win10 开启ssh server服务 远程登录。 -
在本地电脑开启
ssh
功能后,就可以在终端使用ssh 用户名@IP
的形式连接服务器终端了。如果你是之前连过,而且又将云服务器系统重装,那么就会出现下图中的错误提示。这时只需要到提示的目录C:\Users\Lovely_him\.ssh\
找到这个文件known_hosts
,用记事本打开,删除里面的内容,再次重新连接就正常了。按提示信息输入yes
和password
(用户名对应的密码),就可以登陆到系统啦~!
-
仔细观察终端回车行的前缀,可发现,这时其实就是以用户
root
登陆了云服务器。你如果重新查看原本的一键登陆
功能,其实是以用户lighthouse
身份登陆云服务器。所以其他登陆方式同时一样的,只是平台不一样…… -
如果要切换不同用户,可以参考:linux 切换登录用户。使用指令
su 用户名
就可以切换了,如果该用户设置了密码就要输入密码。lighthouse
默认是没有密码的。(但是登陆的时候还是需要我输入密码……如果我已经登陆了root,然后切换的话就又不需要密码)
4.应用管理
- 因为选择了
宝塔Linux面板
,所以只有这个应用,其他功能都被打包嵌套在里面了。我们根据要求,在登陆到服务器后,使用sudo /etc/init.d/bt default
命令来获取管理员用户名和密码。
- 前面我们已经设置了防火墙为
8888
端口放行了,这里直接使用外围面板网址打开,然后输入账号密码登陆。
- 然后会弹出一个要求你输入
API密钥
的窗口。好像是因为用的腾讯专用宝塔面板才有的?第一次弄没有密钥,就点击下方的如何获取tx云API密钥,点击查看
。
- 一顿操作猛如虎后就得如下的密钥了。再把得到的
APPID
,Secretld
和SecretKey
输入即可。
- 然后提示要安装套件,这些是
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 - 初建云服务器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!