前言

背景

Egg.js 是一个集成度很高的 Node.js Web 框架,能够让开发者将焦点集中于业务逻辑。在部署过程中同样如此,因此需要简单学习一下使用 Egg.js 框架开发的应用的开发流程。

环境

  • Node.js: 10.13.0;
  • Egg.js: 2.14.1;
  • Alinode: 4.5.0;

流程概述

  1. 使用 ssh 公钥登录主机;
  2. 安装依赖软件;
  3. 配置 Nginx;
  4. 设置环境变量;
  5. 启动应用;
  6. 停止应用;

流程详述

使用 ssh 公钥登录主机

使用 Mac 自带工具 ssh-copy-id 将本机的公钥自动上传的远程主机,以后就不用再频繁输入密码登录了。

$ ssh-copy-id <username>@<remote_host>

安装依赖软件

通用软件

首次使用系统的时候,需要通过 yum 安装 gitnginxNode.jsYarn 等软件。

切换 npm 下载源

然后为了让国情特殊的我们通过 npm 下载依赖能够快一些,使用下面的命令切换到淘宝源。

$ npm set registry https://registry.npm.taobao.org

如果有其他诸如 sass 或者 fse 等二进制包的下载需求,也可以切换到淘宝下载地址,详见此处

不过此处所做的修改,范围是用户级别,即只对当前用户有效,其实就是在用户目录下面新建了一个叫做 .npmrc 的文件。

全局安装 egg-scripts

为了部署 Egg 项目,需要安装 egg-scripts 依赖。

$ npm i -g egg-scripts

项目安装 Alinode 运行时

为了能够监控项目运行时的性能情况,可以使用阿里出的 Alinode 替换掉原版的 Node.js 运行时。

首先,全局安装 nodeinstall 库。

$ npm i -g nodeinstall

然后到要使用 Alinode 运行时的项目目录运行以下命令。

$ nodeinstall --install-alinode ^4

最后面的 ^4 是指大版本号为 4 的版本,具体的 AlinodeNode.js 的版本号对比在此

配置 Nginx

设置环境变量

集成测试环境

主要有以下两种配置方式,第一种是用户级别的,第二种是系统级别的。

用户级别

编辑要运行项目的用户的 Bash 配置文件。

$ vim ~/.bashrc

加入以下两句。

export NODE_ENV=production
export EGG_SERVER_ENV=sit
系统级别

编辑系统的 profile 配置文件。

$ vim /etc/profile

加入以下两句。

export NODE_ENV=production
export EGG_SERVER_ENV=sit

等再运行 Egg 项目的时候,将会自动读取相关的环境变量,并使用 sit 对应的配置文件。

生产环境

建议直接在系统中的 profile 配置文件中加入以下配置。

export EGG_SERVER_ENV=prod

启动应用

启动程序比较简单,根据 Egg.js 文档所述,可以不使用 pm2 来管理。

首先安装 egg-scripts 依赖。

$ npm i egg-scripts --save

然后直接运行下面的命令即可。

$ npm start

通常情况下程序就能正常启动了。

停止应用

如果要停止程序,运行以下命令。

$ egg-scripts stop [--title=my-server-name]

title 后面时要停止的应用名称,如果不传此参数,则会停止所有的 Egg.js 应用。

参考资料