前言

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

前置条件

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

环境搭建

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

ssh root@yourIp

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

Step 1: 安装 Node 环境

下载 Node.js 的安装包

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

解压 Node.js 的安装包

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

重命名 Node.js 安装目录

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

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

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

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

source /etc/profile

查看 node 版本

node -v
 
# 输出 V16.18.1

查看 npm 版本

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

Step 2: 安装 Nginx

下载 Nginx.js 的安装包

yum install nginx

查看是否安装成功

nginx -v

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

Step 3: Coding 起码

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

新建文件夹project

cd /
mkdir project
cd project

project中新建文件夹backend

mkdir backend
cd backend

backend中新建app.js

vim app.js

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

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 端口开放 具体操作步骤不在这里赘述,毕竟我们的厂商可能不一样. 然后我们执行命令

启动服务

node app.js

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

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

Step 4: 持久的运行

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

安装 pm2

npm install -g pm2

检查是否成功

pm2 -v

通过 pm2 启动项目

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

查看状态

pm2 list

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

Step 5: 绑定域名

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

cd /
cd etc
cg nginx
vim nginx.conf

ngin.conf 文件新增以下内容

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 进入服务器

cd /
cd ssl
cd etc

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

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

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;
    }
}

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

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 开始部署的时候还是遇到了很多问题,希望本篇文章能够很好的帮助到大家,咋就是说争取一整个一次成功的大状态