# 部署实例

v1.5.0 您可以部署您自己的实例,这个方案十分适合访问量大,站点私密性高的需求。
请注意: 我们会在未来加入统计分析服务,用于统计实例部署情况(不会保存您的请求,IP 信息)。届时,您可以自由选择关闭这个功能。

# 传统方式部署

# 安装依赖

首先您得确保您的环境中存在 RedisNode.jsyarn。由于网上方法众多,这里不再赘述。 如果您说您是小白,啥都不知道,可以按照我之前写的文档配置环境:https://docs.nodebb-cn.org (opens new window)

请确认:您的 yarn 版本是否大于或等于 1.22.4,如果不是请更新。否则,项目将无法正确安装启动。

# 克隆项目

在你想要的位置克隆本项目

git clone https://github.com/hitokoto-osc/hitokoto-api.git
# 如果您或您的机器处于国内,您可以使用这个地址代替:https://github.com.cnpmjs.org/hitokoto-osc/hitokoto-api.git
1
2

# 安装包

Node.js 程序通常需要大量通过包管理安装的包来运行。本程序也不例外,因此,您需要像这样安装包:

请注意: 本项目要求 Node.js 版本至少为 14 (当前最新的 LTS 版本); 自 v1.6.0 起,项目要求使用 yarn v2 管理包依赖。

yarn # 为了防止意外,我们需要将开发环境和生产环境的包都安装。如果您熟悉本程序的话,可以只安装生产环境的包直接部署。
1

# 启动程序

嗯,让我们试一下能不能启动:

yarn start -D # 让我们使用开发模式看看能不能跑得起来,程序会自动生成默认的配置文件。有关配置文件的配置,我们将在稍后一节说明。
1

你会看到屏幕在刷刷刷得刷日记,当你看到类似这样一条时,意味着程序能成功运行:info: [core] Web Server is started, listening on port: 8000

如果程序运行过程中发生了错误,请检查一下哪儿没搞好(例如:没启动 redis,Node.js 版本过低)。如果自己搞不定的话,可以加入我们的开发者群讨论一下。如果您确信是程序的问题的话,请尝试更新程序。如果已经最新,欢迎向我们提交 issues。

# 持久化进程

为了使我们的程序能长时间稳定运行,我们通常需要一个进程管理工具来管理进程。本例用的是 pm2。有关 pm2 的介绍网上有很多,这里就不赘述,只简单讲讲怎么使用(运用于本接口)

首先,我们需要安装 pm2

npm i -g pm2 # 由于项目内默认环境为 yarn v2,为了避免干扰,这里采用 NPM 安装
1

配置 pm2 自启动

pm2 startup
1

由于项目已经提供了配置问卷,所以直接使用配置文件启动语句接口服务

pm2 start ecosystem.config.js --env production
1

保存持久化列表

pm2 save
1

# 使用 Docker 运行

Docker 是目前非常流行的容器管理工具,能很方便,简单得操作实例。Docker 的相关玩法我们就不展开了,我们就介绍最方便的用法。如果您是小白的话,不妨试试这个方法。

在开始之前,我们需要在环境中安装好 Redis。如果不会的话,请看上节的那个地址的教程或者网上搜一下。

然后...

sudo docker run \
-v /path/to/your/data/dir:/usr/src/app/data \ # 请替换 /path/to/your/data/dir 为您想存储接口持久化数据的目录绝对位置
--network host \
hitokoto/api:latest
1
2
3
4

嗯,启动完毕。是不是很简单呢?

其他启动方式你可以自己摸索一下,比如说,不用 host 网络怎么运行。此外,项目也提供了 docker-compose 文件,您可以在仓库自行获取。

# 配置文件

以下是对常用配置的简单介绍,在实际使用中,请去除掉注解部分。

# 自 v1.6.0 起使用 yaml 格式的配置文件
name: '' # 服务名称,例如:hitokoto
url: '' # 服务地址,例如:https://v1.hitokoto.cn
api_name: '' # 服务表示,例如:cd-01-demo
server: # 配置 HTTP 服务的信息
  host: 127.0.0.1 # 监听的地址
  port: '8000' # 监听的端口
  compress_body: true # 是否使用 GZIP 压缩
mail: # 本节为 Web 控制器触发错误时发送邮件,目前本节已废弃
  type: smtp
  host: ''
  username: ''
  password: ''
  port: ''
  encrypt: ssl
database: mysql # 数据库驱动,本节已废弃
mysql:
  host: 127.0.0.1
  database: ''
  username: ''
  password: ''
  port: ''
redis: # 配置 Redis
  host: 127.0.0.1 # Redis 主机名
  port: 6379 # Redis 端口
  password: '' # Redis 密码
  database: 0 # Redis 数据库
sentences_ab_switcher: # 本节是服务 AB 异步更新的配置,如果您不知道这个是什么意思,请保持默认
  a: 1 # a 状态对应的 redis 数据库
  b: 2 # b 状态对应的 redis 数据库
log_level: info # 本节已废弃,输出到日记文件的一律为 Error;输出到终端由 flag `-D` 控制。
remote_sentences_url: https://cdn.jsdelivr.net/gh/hitokoto-osc/sentences-bundle@latest/ # 语句库地址,通常默认即可。如果您想使用您自己打包部署的语句库,您可以修改此项
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
最后更新: 4/14/2021, 1:59:20 PM