前言

本篇文章将详细的讲解如何部署 node 服务.

前置条件

默认大家伙儿已经有服务器了,我的是阿里云的.

环境搭建

首先我们可以进入到服务器可以通过本地的终端

1
ssh root@yourIp

然后输入密码就可以进去啦

Step 1: 安装 Node 环境

下载 Node.js 的安装包

1
wget https://npm.taobao.org/mirrors/node/v16.18.1/node-v16.18.1-linux-x64.tar.xz

解压 Node.js 的安装包

1
tar -xvf node-v16.18.1-linux-x64.tar.xz

重命名 Node.js 安装目录

1
mv node-v16.18.1-linux-x64/ /usr/local/node

将 Node.js 的可执行文件目录加入到系统环境变量中

1
echo "export PATH=$PATH:/usr/local/node/bin" >> /etc/profile

使刚配置的 Node.js 环境变量立即生效

1
source /etc/profile

查看 node 版本

1
2
3
node -v

# 输出 V16.18.1

查看 npm 版本

1
2
npm -v
# 输出9.6.7 结果可能不一致,但是只要显示了就问题不大

Step 2: 安装 Nginx

下载 Nginx.js 的安装包

1
yum install nginx

查看是否安装成功

1
nginx -v

此时可以去浏览器输入yourIp看看

Step 3: Coding 起码

找一个你最喜欢的地方新建一个文件,我的例子可能不是那么规范,但是先能跑就行

新建文件夹project

1
2
3
cd /
mkdir project
cd project

project中新建文件夹backend

1
2
mkdir backend
cd backend

backend中新建app.js

1
vim app.js

编码app.js中的代码是这样的

1
2
3
4
5
6
7
8
9
10
var http = require('http');
http
.createServer(function (request, response) {
response.writeHead(200, {
'Content-Type': 'text/plain',
});
response.end('Hello World\n');
})
.listen(9527);
console.log('Server started');

然后这一步我觉得有点重要,就是我们需要去将服务器的 9527 端口开放
具体操作步骤不在这里赘述,毕竟我们的厂商可能不一样.
然后我们执行命令

启动服务

1
node app.js

接着我们就去浏览器输出 yourIp:9527

我们就可以看见页面上有 Hello World 了

Step 4: 持久的运行

如果以上都顺利,那么恭喜,其实已经部署成功啦,但是对于项目来说,并不是我要用了,跑去服务器启动,而是要一直不断的跑
所以在上述的内容中,一旦关闭了终端,你的项目也就停摆了,所以我们需要一个新的东西pm2

安装 pm2

1
npm install -g pm2

检查是否成功

1
pm2 -v

通过 pm2 启动项目

1
pm2 start --name '帅气的名字' app.js

查看状态

1
pm2 list

因为我也是临时抱佛脚,所以对于 pm2 不是很了解,所以具体其他的功能和命令,就不过多介绍了,言多必失嗷~
如果进行到这步,即使你关闭了终端也可以通过yourIP:9527访问了.

Step 5: 绑定域名

前提是你得有域名嗷
去域名解析一条二级域名test.yourDomain.com

1
2
3
4
cd /
cd etc
cg nginx
vim nginx.conf

ngin.conf 文件新增以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {
listen 80;
server_name test.yourDomain.com;
location / {
proxy_pass http://yourIp:9527;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

这样我们在浏览器中输入test.yourDomain.com就可以看到之前的页面辣

Step 6: 升级成 https

首先你需要去得到免费的 ssl 证书
以阿里云为例
进入阿里云官网搜索数字证书管理服务
点击左侧SSL私有证书
点击创建证书
点击证书申请

img

根据要求填写
这里我们域名填写test.yourDomain.com
点击提交审核
等待一分钟…刷新页面
点击下载
下载服务器类型Nginx的证书
下载后解压,会有两个文件test.XXXXX.pem test.XXXXX.key
进入服务器

1
2
3
cd /
cd ssl
cd etc

将两个证书传递至ect文件夹中
我这里使用的FinalShell,这样上传文件便捷些,也可以通过命令,但是我依旧不会~(下次一定学会)

然后我们接着去操作nginx.conf文件
加入

1
2
3
4
5
6
7
8
9
server {
listen 443 ssl;
server_name test.yourDomain.com;
ssl_certificate /ssl/etc/test.XXXX.pem;
ssl_certificate_key /ssl/etc/test.XXXX.key;
location / {
proxy_pass http://yourIp:9527;
}
}

同时我们可以在刚刚的代码中增加以下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server {
listen 80;
server_name test.yourDomain.com;
location / {
proxy_pass http://yourIp:9527;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}

return 301 https://gpt.zhuaoshuai.com$request_uri; #新增这行代码
}

这样的目的是即使访问的 http 也会自动跳转到 https
至此 Node 服务部署完成

写在后面

当我从 0 开始部署的时候还是遇到了很多问题,希望本篇文章能够很好的帮助到大家,咋就是说争取一整个一次成功的大状态