部署 Node.js 项目流程

3,533 阅读7分钟

作为一个自(mo)律(yu)的前端,不能总是依靠后端大佬部署前端项目,自己动手,丰衣足食🤣

云服务器

云服务器有很多:阿里云、腾讯云、天翼云、百度云等,这里推荐阿里云

购买

进入阿里云官网,注册、完善个人信息、学生认证后,可购买大约 10 元/月的云服务器,购买时推荐选择 CentOS 云服务器(以下的操作基于 CentOS)

注意

  • 购买服务器时,你会给服务器设置用户名和密码,记住用户名和密码,接下来会用到
  • 购买服务器后,你可以查看所购买的云服务器的相关信息,有一个公网 ip 的东西,接下来也会用到

SSH 连接云服务器

SSH 软件选择

  • 如果你使用的系统是 Windows,推荐使用 Xshell
  • 如果你使用的系统是 MacOS,推荐使用 Termius
  • 如果你使用的系统是 Linux,那你大概率是个大佬,无需推荐

Xshell

  1. 点击链接填写邮箱申请家庭/学校免费版

  2. 下载安装后看到如下界面 -w1912

  3. 点击左上角 “文件” -> “新建”,弹出如下窗口 -w664

  4. 开始输入:名称可以自定义,协议默认 SSH,主机输入你购买的云服务器的公网 ip,端口号默认 22 -w666

  5. 点击“用户身份验证”,输入你购买云服务器时设置给该服务器设置的用户名和密码,然后点击“确定”或者“连接”都可以。注意,不是你的阿里云账号密码,是云服务器的用户名和密码 -w664

  6. 随后你可以看到这个界面,说明连接成功。左侧的会话是你设置好的连接列表,双击即可进行连接 -w784

Termius

  1. 价格过于昂贵,学生党推荐使用破解版,如果经济允许就上正版,支持正版
  2. 打开软件,看的如下界面 -w1920
  3. 点击 “+ NEW HOST" -w702
  4. 右侧出现如下界面,按步骤操作 -w875
  5. 保存后, 在 HOSTS 页面可以看到你设置好的 HOST -w1107
  6. 双击设置好的 HOST 即可进行连接 -w1001

注意

使用 SSH 软件连接成功后,接下来的操作与你使用什么 SSH 软件无关,当然你也可以使用在接下来我们要安装的宝塔里面的终端功能。不过我使用的系统是 MacOS,所以有关 SSH 的操作都是在 Termius 上进行

安装服务器环境

你可以把云服务器想象成一台远程电脑,这样子会好理解一些。所以你要给一台“新电脑”安装环境,才能让你的项目在“新电脑”跑起来,就像你的项目在你的电脑运行时也需要安装环境一样

安装宝塔

宝塔是一个很好用的服务器运维面板,使用宝塔可以很方便的管理云服务器的资源

官网安装教程

  1. 复制 CentOS 那条命令到你连接好的服务器终端,回车,按提示操作即可 -w1639
  2. 安装成功后记得在最后你会看到宝塔的账号密码,是随机生成的,先把账号密码记下来,然后要记得你需要进入宝塔界面修改账号密码
  3. 安装成功后你也会看到宝塔的外网链接、内网链接,打开外网链接,你会发现根本打不开这个界面,因为宝塔的端口是 8888,但是你还没有在服务器的安全组设置这个端口,因此,进入阿里云控制台,找到 云服务 ESC,进入你的云服务器实例 -w862
  4. 进去后,给安全组添加 8888 端口 -w1626
  5. 保存后,再刷新宝塔的链接,应该就能打开了 -w616
  6. 登陆宝塔后,修改用户名和密码,完善信息

安装 node 和 npm

下载压缩包

建议下载最新稳定版,如果版本过低会造成后面 pm2 无法正常运行

Node官网 -w1158

wget https://nodejs.org/dist/v12.19.0/node-v12.19.0-linux-x64.tar.xz

注意:node 压缩包已经包含了 npm

解压

tar -xvJf node-v12.19.0-linux-x64.tar.xz

配置环境变量

  • 打开文件
vim /etc/profile

-w854

  • i 进入编辑模式 -w483

  • 到文件底部输入下面两行,注意 /root/node-v12.19.0-linux-x64 是我的安装路径,实际安装路径根据自己的设置来

export NODE_HOME=/root/node-v12.19.0-linux-x64
export PATH=$PATH:$NODE_HOME/bin

-w620

  • 输入完成后,按 Esc 退出编辑模式,然后输入 :wq 回车保存 -w562

  • 执行下面命令将环境变量生效

source /etc/profile
  • 将目录软链接到全局环境下,前面 /root/node-v12.19.0-linux-x64/bin/node/root/node-v12.19.0-linux-x64/bin/npm 根据自己设置的路径输入,后面 /usr/local/bin/node/usr/local/bin/node 这两个是固定的
ln -s /root/node-v12.19.0-linux-x64/bin/node /usr/local/bin/node

ln -s /root/node-v12.19.0-linux-x64/bin/npm /usr/local/bin/npm
  • 避免使用包的命令时可能会提示找不到命令(固定写法)
echo -e "export PATH=$(npm prefix -g)/bin:$PATH" >> ~/.bashrc && source ~/.bashrc
  • 配置完成,输入 node -vnpm -v 检查是否配置成功,看到下图所示即配置成功 -w519

安装 MongoDB

下载

官网下载链接

-w356

wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-4.0.21-rc0.tgz

解压与重命名

// 解压
tar xvf mongodb-linux-x86_64-4.0.21-rc0.tgz

// 重命名解压后得到的文件夹为 mongodb,方便接下来的配置
mv mongodb-linux-x86_64-4.0.21-rc0 mongodb

创建数据和日志存放目录

这里创建的文件路径可以自己设置

mkdir /www/local/mongodb/data
mkdir /www/local/mongodb/logs
  • 在本地创建一个 mongodb.conf 文件,这是 mongodb 的脚本文件,输入下面的内容,保存
#端口号(默认的端口号是27017,这里修改也是为了安全性)
port = 20411

#数据目录(指向刚才创建的数据文件目录)
dbpath = /www/local/mongodb/data

#日志目录(指向刚才创建的日志目录,并指定mongodb.log文件名,系统会自动创建)
logpath = /www/local/mongodb/logs/log.log
 
#设置后台运行
fork = true
 
#日志输出方式(写日志的模式:设置为true为追加。默认是覆盖。如果未指定此设置,启动时MongoDB的将覆盖现有的日志文件。)
logappend = true

#对外开放端口(默认是127.0.0.1)
bind_ip = 0.0.0.0
  • 将保存后的文件上传到 mongodb 数据库的目录下,我的是 /root/mongodb,然后进入数据库 bin 目录
cd /root/mongodb/bin
  • 运行命令,启动 MongoDB
./mongod --config ../mongodb.conf
  • 进入数据库
./mongo --port=20411
  • 切换到 admin 数据库
use admin
  • 设置数据库管理员,用户名和密码自定义
db.createUser({user:"root",pwd:"123456",roles:[{role:"userAdminAnyDatabase",db:"admin"}]})
  • 退出数据库,查看数据库进程
ps aux |grep mongodb
  • 杀死进程
kill -9 xxxx
  • 修改 mongodb.conf,开启验证,再次上传
#端口号(默认的端口号是27017,这里修改也是为了安全性)
port = 20411

#数据目录(指向刚才创建的数据文件目录)
dbpath = /www/local/mongodb/data

#日志目录(指向刚才创建的日志目录,并指定mongodb.log文件名,系统会自动创建)
logpath = /www/local/mongodb/logs/log.log
 
#设置后台运行
fork = true
 
#日志输出方式(写日志的模式:设置为true为追加。默认是覆盖。如果未指定此设置,启动时MongoDB的将覆盖现有的日志文件。)
logappend = true
 
#开启认证(默认是flase,不需要认证的,这里开启认证是为了安全性)
auth = true

#对外开放端口(默认是127.0.0.1)
bind_ip = 0.0.0.0
  • 再次启动、进入数据库
./mongod --config ../mongodb.conf
./mongo --port=20411
  • 切换到 admin 数据库
use admin
  • 验证数据库,结果为 1 即成功验证
db.auth("root","123456")

使用 Navicat 连接远程数据库

-w720

生产环境下不建议使用 Navicat 对数据库进行直接的增删改

部署 Node 项目

ftp 上传项目

将你的 Node 项目除了 node_modules 文件夹之外的所有文件上传至服务器的一个指定文件路径,因为 node_modules 文件夹一般很大,我们可以通过 npm install 安装

例如:

-w812

安装 pm2

npm install -g pm2

进入项目所在目录

这里的目录根据自己的路径来

cd /www/server/node/cloud

安装依赖

npm install

启动项目

pm2 start ./bin/www

大功告成!