在阅读本篇文章之前,你已经阅读了:

本篇学习内容

  • 购买云服务器(以腾讯云为例),并以终端连接上去
  • 在Linux上安装部署demo1项目并验证
  • 在Linux上安装部署demo2项目并验证

本篇视频

购买云服务器

 由于云服务器价格比较贵,所以一般是能省就省,不会使用图形化界面,大多是敲命令行。
 首先要购买云服务器,一般大家都是新人,所以有新人优惠,别傻傻地原价买:1核2G云服务器首年99元(3年303元)优惠只有一次,平均下来不到10块钱一个月,比买奶茶还便宜,绝对是亏本价。(PS:我个人是买三年的,因为这种新人优惠机会只有一次。)

 使用完新人价后,还有低于25岁的可以直接去验证为学生并以学生价继续买(大于25岁的就需要输入学生证了):学生价1核2G云服务器3个月27元(一年108元),在学生期间最多优惠三次。

学生优惠

 如果各位学生仅仅是试试水,不想花100块钱,那么建议学生价用那3个月的,才27块钱对于学生来说也不贵。(大于25岁的没有学生优惠的就没办法,只能选一年的新人价,但对于已经工作的人来说,一百多不算贵)
 购买云服务器后,安装系统CentOS 8.0,我们以这个演示。部分读者在实践时发现,购买时安装是没有CentOS 8.0选择的,只有7,先安装7,然后再去控制台重装系统就有CentOS 8选择了。(CentOS 7的命令有些不同)

设置安全组

 在使用之前,因为还有个安全组需要开放端口,才能正常使用。我们项目用到的端口是TCP端口8001,8002,9002,9003(分别对应demo1、demo2的HTTP服务器、TCP服务器)。为了方便演示,我们就不一个个开放了,直接开放所有端口。

跟我敲命令

 由于绝大部分人都没有学过linux,所以我这里直接演示,大家跟着操作,并且我每操作一个命令,后续都再操作一个验证命令,验证你是跟着操作并且是对了的,你就可以安心地跟着继续敲下一个命令。

把demo1跑起来

 使用网页的官方终端

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
56
57
58
59
60
61
# 切换到拥有最高权限的root账号
sudo -s
# 验证:这时你会看到你是root账号

# 先看防火墙状态
systemctl status firewalld.service

# 为了方便演示,我们关闭防火墙
systemctl stop firewalld.service
# 验证,再看防火墙状态,已经变成了disabled了。
systemctl status firewalld.service

# 安装NodeJs
# 查看可安装的NodeJs版本
yum module list nodejs

# 安装默认版本的NodeJs
yum module install nodejs -y
# 验证Nodejs 安装成功,这时会返回 NodeJs的版本号
node -v

# 安装Git并拉取代码
yum install git -y
# 验证Git安装成功,这时会返回Git的版本号
git --version

# 进入用户目录
cd ~

# 查看文件列表
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
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

# 终止demo1,退出程序
[Ctrl + c]

# 安装 MongoDB (使用阿里的镜像源)
# 输入yum配置信息【可一次性复制】

cat>/etc/yum.repos.d/mongodb-org-4.4.repo<<EOF
[mongodb-org]
name=MongoDB Repository
baseurl=http://mirrors.aliyun.com/mongodb/yum/redhat/7Server/mongodb-org/4.4/x86_64/
gpgcheck=0
enabled=1
EOF

sudo yum install -y mongodb-org

# 启动
systemctl start mongod
# 验证MongoDB 运行状态
systemctl status mongod

# 进入demo2 目录
cd ~
cd soft-and-hard/
cd demo2/
cd myapp/


# 安装demo2依赖
npm install

# 把demo2跑起来
npm run start

 使用浏览器访问你的云服务器demo2,然后修改NodeMCU demo2的代码,填写你的云服务器IP地址并烧录程序,就可以实现用你的demo2跑起来了。

使用PM2

 大家可以看到,跑一个程序时,是无法做其它事的,直到Ctrl + c来结束程序,才能做其它事,一般我会别开一个终端来输入其它命令。当大家学习Linux基础时,就会学到可以把当前程序以后台运行,但我很少这样做,我更喜欢开多个终端。

 还有另一个问题,当你关闭终端时,会默认关闭当前程序。我一般喜欢使用screen命令来保持。而对于NodeJs程序,大家都喜欢使用PM2来管理程序,使其能一直运行并且能出现异常导致停止时能自动重启:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 安装PM2
npm install pm2 -g

# 验证pm2 安装成功
pm2 --version
# 在以往直接pm2 执行命令是正常的,某次实践中发现pm2执行不了,估计是软链接有问题
# 可以使用 /usr/local/bin/pm2 代替 pm2。 即 /usr/local/bin/pm2 --version

# 进入目录
cd ~
cd soft-and-hard/

# 运行我已经配置好的程序
pm2 start pm2.json
# 若pm2不可直接运行,同理可以使用 /usr/local/bin/pm2 start pm2.json

 这样,你的程序就能一直跑了。 是不是感觉还没会懂linux,没学懂就对了,因为我根本就没教,只是示范如何跑起来而已,要学习还得从基础打起,啃书实践一个都不能省:linux基础

其它说明

  • 可以另开一个执行curl 127.0.0.1:8002,来判断demo1是否正常启动。
  • 在云服务器上阿里云质量技术更好,腾讯云性价比更高。
  • 后继可以自行研究购买域名等操作,腾讯云本身有录制大量的教学视频动手实验室
  • 为了简单演示,所以登陆服务器使用密码登陆,一般更建议使用SSH密钥登陆,可自行学习。
  • 用完腾讯云的新人价后,还可以去阿里云继续当“新人”,以新人价买。
  • Vultr 云服务器 限时活动,新人免费$100额度

FAQ

  1. 为什么把demo项目部署到云服务器上,还是无法访问网页?
    答:整个流程是这样的,1.需要服务器demo项目运行 -> 2.数据需要通过服务器linux自带的防火墙 -> 3.数据需要通过运营商防火墙->网页访问成功。排查时一步步排查,针对1,运行demo后(以demo1为例,8001端口),另开一个窗口使用命令curl 127.0.0.1:8001,若返回HTML代码(如<html......),说明本地能访问demo项目的网页,1没问题。针对2,参考linux基础,不再多说。针对3,需要去云平台一要配置安全组(可理解为一个安全规则),允许8001端口能流入流出;二要将安全组配置到云服务器。