【软硬结合】部署到云服务器
条评论在阅读本篇文章之前,你已经阅读了:
本篇学习内容
- 购买云服务器(以腾讯云为例),并以终端连接上去
- 在Linux上安装部署demo1项目并验证
- 在Linux上安装部署demo2项目并验证
本篇视频
PS:我演示时,用的是云服务器CVM。现在越来越流行轻量云了,但本质都是云服务器,针对轻量云的操作,文章里都补充了对应的图片进行解说。
购买云服务器
由于云服务器价格比较贵,所以一般是能省就省,不会使用图形化界面,大多是敲命令行。
首先要购买云服务器(轻量云),一般大家都是新人,别傻傻地原价买,一定要选新人优惠:新人优惠页面跳转。优惠只有一次,平均下来约10块钱一个月,比买奶茶还便宜。(PS:如果遇到618或双十一什么,价格可能会有波动。)
低于25岁的可以直接去验证为学生并以学生价继续买(大于25岁的就需要输入学生证进行验证),学生优惠页面跳转:
购买云服务器后,安装系统Ubuntu 24(视频中仍使用的是CentOS 8,改使用Ubuntu只是有部分命令不相同)。
开放端口
云服务器出于安全考虑,是只会把用到的端口才会开放,防止被入侵。
云服务器是设置安全组并配置到对应的云服务器才能正常使用。我们项目用到的端口是TCP端口8001,8002,9002,9003(分别对应demo1、demo2的HTTP服务器、TCP服务器)。为了方便演示,我们就不一个个开放了,直接开放所有端口。
轻量云防火墙设置位置在另一个地方,点击管理,选择防火墙,到里面开放端口即可:
跟我敲命令
由于绝大部分人都没有学过linux,所以我这里直接演示,大家跟着操作,并且我每操作一个命令,后续都再操作一个验证命令,验证你是跟着操作并且是对了的,你就可以安心地跟着继续敲下一个命令。
把demo1跑起来
【2025年更新补充说明】linux系统从CentOS 8(开始停止维护了,各种资源都各种缺。)改使用Ubuntu 24。
使用网页的官方终端1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55# 切换到拥有最高权限的root账号
sudo -s
# 验证:这时你会看到你是root账号
# 验证系统是 Ubuntu 24
cat /etc/lsb-release
# 安装默认版本的NodeJs
sudo apt update
sudo apt install nodejs npm -y
# 验证Nodejs 安装成功,这时会返回 NodeJs的版本号
node -v
# ubuntu 默认安装了git,验证Git安装成功,这时会返回Git的版本号
git --version
# 如果没有git版本号输出,说明没有安装,
# sudo apt install git -y
# 进入用户目录
cd ~
# 查看文件列表,但新装的Ubuntu里好像并没有文件内容
ls
# 使用Git 拉取代码
git clone https://github.com/alwxkxk/soft-and-hard.git
# 为了加快速度,可用国内镜像源:
# git clone https://github.com.cnpmjs.org/alwxkxk/soft-and-hard
# 验证:再查看文件列表,会发现多了一个soft-and-hard的目录
ls
# 进入soft-and-hard目录
cd soft-and-hard/
# 验证,ls可以看到已经进入到目录里了,pwd可看到当前路径
ls
pwd
# 进入demo1 目录
cd demo1/
cd myapp/
# 验证,ls可以看到已经进入到目录里了,可看到package.json等文件
ls
# 验证:pwd可看到当前路径为/root/soft-and-hard/demo1/myapp
pwd
# 安装demo1依赖
npm install
# 把demo1跑起来
npm run start
使用浏览器访问你的云服务器demo1,然后修改NodeMCU demo1的代码,填写你的云服务器IP地址,就可以实现用你的云服务器控制你的硬件开关灯了。
把demo2跑起来
1 |
|
使用浏览器访问你的云服务器demo2,然后修改NodeMCU demo2的代码,填写你的云服务器IP地址并烧录程序,就可以实现用你的demo2跑起来了。
使用PM2
大家可以看到,跑一个程序时,是无法做其它事的,直到Ctrl + c
来结束程序,才能做其它事,一般我会别开一个终端来输入其它命令。当大家学习Linux基础时,就会学到可以把当前程序以后台运行,但我很少这样做,我更喜欢开多个终端。
还有另一个问题,当你关闭终端时,会默认关闭当前程序。我一般喜欢使用screen
命令来保持。而对于NodeJs程序,大家都喜欢使用PM2来管理程序,使其能一直运行并且能出现异常导致停止时能自动重启:
1 | # 安装PM2 |
这样,你的程序就能一直跑了。 是不是感觉还没会懂linux,没学懂就对了,因为我根本就没教,只是示范如何跑起来而已,要学习还得从基础打起,啃书实践一个都不能省:linux基础
注意两套系统
注意一下,在前面的演示中,我们分别演示了在本地搭建,以及在云服务器上搭建。然后是开始正式学习相关知识,有很多读者都搞乱了这两套系统,当你学习、开发、调试时,用的是本地的系统,所以你的nodemcu应该要把ip地址改成指向你的电脑,打开网页也应该是打开本地http://127.0.0.1:8001
,而不是指向服务器。本地是你调试开发用的,云服务器是给所有人用的,你在本地调试完再部署到云服务器。
其它说明
- 可以另开一个执行
curl 127.0.0.1:8002
,来判断demo1是否正常启动。 - 在云服务器上阿里云质量技术更好,腾讯云性价比更高。
- 后继可以自行研究购买域名等操作,腾讯云本身有录制大量的教学视频与动手实验室。
- 为了简单演示,所以登陆服务器使用密码登陆,一般更建议使用SSH密钥登陆,可自行学习。
- 用完腾讯云的新人价后,还可以去阿里云继续当“新人”,以新人价买。
- Vultr 云服务器 限时活动,新人免费$100额度
FAQ
- 为什么把demo项目部署到云服务器上,还是无法访问网页?
答:整个流程是这样的,1.需要服务器demo项目运行 -> 2.数据需要通过服务器linux自带的防火墙 -> 3.数据需要通过运营商防火墙->网页访问成功。排查时一步步排查,针对1,运行demo后(以demo1为例,8001端口),另开一个窗口使用命令curl 127.0.0.1:8001
,若返回HTML代码(如<html......
),说明本地能访问demo项目的网页,1没问题。针对2,参考linux基础,不再多说。针对3,需要去云平台一要配置安全组(可理解为一个安全规则),允许8001端口能流入流出;二要将安全组配置到云服务器。