部署到云服务器
条评论在阅读本篇文章之前,你已经阅读了:
本篇学习内容
- 购买云服务器(以腾讯云为例),并以终端连接上去
- 在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 |
|
使用浏览器访问你的云服务器demo2,然后修改NodeMCU demo2的代码,填写你的云服务器IP地址并烧录程序,就可以实现用你的demo2跑起来了。
使用PM2
大家可以看到,跑一个程序时,是无法做其它事的,直到Ctrl + c
来结束程序,才能做其它事,一般我会别开一个终端来输入其它命令。当大家学习Linux基础时,就会学到可以把当前程序以后台运行,但我很少这样做,我更喜欢开多个终端。
还有另一个问题,当你关闭终端时,会默认关闭当前程序。我一般喜欢使用screen
命令来保持。而对于NodeJs程序,大家都喜欢使用PM2来管理程序,使其能一直运行并且能出现异常导致停止时能自动重启:
1 | # 安装PM2 |
这样,你的程序就能一直跑了。 是不是感觉还没会懂linux,没学懂就对了,因为我根本就没教,只是示范如何跑起来而已,要学习还得从基础打起,啃书实践一个都不能省:linux基础
其它说明
- 可以另开一个执行
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端口能流入流出;二要将安全组配置到云服务器。