Node.js项目部署

最近写了一个 Nuxt 项目,打算部署到服务器中。因为很久没有部署过新项目,一些部署的流程都已经忘记了,所以打算写一篇 Node.js 项目的部署文章。 写这篇文章,第一可以加深理解,第二也可以方便以后查看。

目录
  1. 前言
  2. 准备
    1. 平台
    2. 工具
  3. 连接远程服务器
  4. 搭建环境
  5. 下载项目
  6. 安装依赖和打包项目
  7. 配置数据库数据
  8. 编写 Nginx 配置
  9. 阿里云配置二级域名
  10. 配置 PM2
  11. 总结

前言#

最近写了一个 Nuxt 项目,打算部署到服务器中。因为很久没有部署过新项目,一些部署的流程都已经忘记了,所以打算写一篇 Node.js 项目的部署文章。

写这篇文章,第一可以加深理解,第二也可以方便以后查看。

准备#

平台#

  • CentOS7:阿里云服务器系统
  • Node.js:项目运行环境
  • Window10 本地开发系统

工具#

  • PM2:项目运行工具
  • Nginx:反向代理服务器
  • Git:项目版本控制工具
  • XShell5:远程连接服务器工具
  • WinSCP:远程给服务器传送文件工具
  • Mongodb:非关系型数据库
  • NoSQL Manager for MongoDB:MongoDB 视图化工具

连接远程服务器#

打开浏览器,进入阿里云网站,进入“云服务 ECS”,点击实例,进入实例详情,然后点击“远程连接”,就可以连接到远程服务器。

但是这个远程连接的界面实在是太难看了,而且操作也不方便,建议使用远程连接工具“XShell5”来进行远程操作服务器,简单好用。

“XShell5”可以修改成自己喜欢的字体、背景和颜色,复制粘贴内容也很方便。而且家庭和学校版本是完全免费的,功能也够用了。

搭建环境#

建议使用系统自带的 yum 来安装相应的工具,更加简单。(有的工具可能需要更新 Repo,请自行 Google 解决)

sudo yum install nodejs -y
sudo yum install nginx -y
sudo yum install git -y
sudo yum install mongodb-org -y
sudo yum install yarn -y

这里也可以使用 nvm 来安装 Node.js,可以更好的管理版本。

下载项目#

git clone XXX

安装依赖和打包项目#

# 进入项目文件夹
cd <folder name>
 
# 安装依赖
yarn
# or npm install
 
# 前端代码打包
yarn build
# or npm run build

如果安装或者打包过程中,出现了问题后,导致失败,可以通过 Google 来解决。

如果你的服务器配置不高的话,在服务器中编译打包可能会失败。这里建议在本地把文件打包好,然后再上传到服务器中,这里通过一个工具“WinSCP”上传文件到服务器中。

配置数据库数据#

在本地开发完成项目之后,在本地的数据库中已经生成好数据了,但是服务器上的数据库上并没有数据,这时需要把本地的数据库中的数据上传到服务器数据库中去,这里我们使用了一个 MongoDB 的可视化工具“NoSQL Manager for MongoDB”来上传数据。

简单说下配置步骤:

首先必须要连接到服务器数据库,如果服务器数据库有设立密码(为了安全),还需要输入账号和密码才能连接,

然后在服务器数据库中新建一个数据库,然后选中本地的数据库里面的集合,把它们拷贝到服务器的数据库中,

最后,如果服务器数据库有密码的话,还需要在代码添加账号和密码,这样才能连接到数据库。

编写 Nginx 配置#

在 Nginx 配置目录里新建一个.conf文件,来定制每个项目的配置

vim /etc/nginx/conf.d/nuxt-trailer.conf

nuxt-trailer.conf内容如下:

upstream nuxt-trailer {
        server 127.0.0.1:9097;
        keepalive 64;
}
server {
        listen 80;
        server_name nuxt-trailer.haledeng.com;
        location / {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-Nginx-Proxy true;
                proxy_set_header Connection '';
                proxy_pass http://nuxt-trailer;
        }
}
 

upstream后面是代理项目的名称,里面的server是本地(服务器)运行的 ip 地址和端口,server监听 80 端口,server_name是二级域名,需要提前在阿里云服务器中配置好二级域名,location下面的proxy_pass是代理的项目名称,按照上面的格式书写,并且需要和upstream后面的名字一致。

编写完成后,保存,并且重启nginx服务

systemctl restart nginx

如果部署不止一个项目,只要再新建一个.conf文件,然后按照上面的配置修改一下就好了,再重启下 Nginx 服务即可。

阿里云配置二级域名#

登录阿里云网站,进入控制台,进入云解析 DNS,点击你的主域名,进入解析设置,点击添加记录,添加二级域名。

在主机记录填写:nuxt-trailer,这时你的二级域名就是:nuxt-trailer.xxx.xxx了,

在记录值填写你的服务器的外部 ip 地址,其他的默认即可,然后点击确定,10 分钟之后二级域名就会解析成功。

配置 PM2#

先安装 PM2,通过 Node.js 来安装

yarn global add pm2
# or npm install -g pm2

编写配置文件

# 创建配置文件
touch pm2.yml
 
# 编写配置文件
vim pm2.yml

pm2.yml内容如下:

apps:
  - script: ./server/index.js
    name: nuxt-trailer
    env_production:
      NODE_ENV: production
      HOST: "127.0.0.1"
      PORT: 9097

其中,script是文件的路径,name是项目名称,env_production是环境配置。

之后就是启动项目, 输入下面命令启动项目

pm2 start pm2.yml --env production

启动成功后,输入下面命令可以查看启动的项目

pm2 list

输入下面命令查看具体某个项目信息

pm2 show <id|name>

一些常用的 PM2 命令

# 停止某个项目
pm2 stop <id|name>
 
# 停止和删除某个项目
pm2 delete <id|name>
 
# 重启某个项目
pm2 restart <id|name>
 
# 停止所有的项目
pm2 kill
 
# 查看某个项目的日志
pm2 log <id|name>

总结#

使用 PM2 来部署 Node.js 项目非常方便,有兴趣的同学可以学习下。