学校服务器部署
介绍
整个应用程序依赖三个部分,分别是由 Node.js 运行的 Nuxt 部分,数据库部分,和文件存储部分。Nuxt 部分由 pm2 工具启动,并且在后台运行;数据库和文件存储部分均使用 systemd 运行。
安装和配置数据库
安装 PostgreSQL
进入 PostgreSQL 命令行
命令行长这样 👇
创建数据库用户
将命令中的 username
和 password
(小写)改成具体的用户名和密码。请妥善保管数据库密码。
创建数据库
将命令中的 database_name
和 username
分别改成具体的数据库名称和第三步中设置的用户名。
退出命令行
在 PostgreSQL 命令行中输入 \q
可退出命令行。
获取 URL
数据库对应的 URL 为:
其中 username
,password
,database_name
均替换为上述步骤中设置的内容。此 URL 将在下文中被填入环境变量中。
安装和配置 MINIO
MINIO 是一个开源的兼容 S3 协议的对象存储服务。我们使用 systemd 来管理 MINIO 服务。
安装 MINIO
以上命令第一行下载了 MINIO 的安装包,第二行将其设置为可执行文件,第三行将其移动到 /usr/local/bin/
目录下。
如果国内访问速度慢,可以考虑先下载到本地后上传。
配置 MINIO 环境变量
这里使用了 Ubuntu 自带的 nano 编辑器。把以下内容复制到 nano 中:
上述文件中的 MINIO-USERNAME
和 MINIO-PASSWORD
需要替换为你想要设定的 MINIO 管理员用户名和密码。该用户名和密码稍后将用于登录 MinIO 的 Web 界面。注意,不是 Linux 用户名和密码。
编辑好之后使用 Ctrl+S
保存,然后使用 Ctrl+X
退出 nano 编辑器。
编写 service 文件
在文件中填入以下内容:
上述文件中的 USERNAME
需要替换为你的用户名。存储数据的文件夹被设置为 /mnt/data
,可以根据需要自行修改。
启动 MINIO
每次更改 service 文件后,需要重新加载 systemd 服务:
初次使用时需要启用该服务(在后续维护中则不需要运行该命令):
启动 MINIO:
运行启动命令之后会返回是否启动成功的信息,请仔细查看。
操作 MINIO 服务
查看 MINIO 状态:
停止 MINIO:
重启 MINIO:
查看 MINIO 日志:
访问 MINIO 的 Web 界面进行管理
使用浏览器访问 http://服务器ip:9001
,用之前设置的管理员用户名和密码登录。
创建访问密钥
在左边栏进入 Access Keys 页面,点击右上角 Create New Access Key 按钮,点击 Create ,创建一个新的访问密钥。 将 Access Key 和 Secret Key 内容记录下来,以填入后文中的 pm2 配置文件中。
创建存储桶
在左边栏进入 Buckets 页面,点击右上角 Create Bucket 按钮,输入存储桶名称,点击 Create Bucket ,创建一个新的存储桶。 记录存储桶名称,以填入后文中的 pm2 配置文件中。
运行 Nuxt 部分
请确保已经安装了 Node.js 和 pnpm。
运行以下命令拉取并构建
配置环境变量
点击这里查看 .env
的配置方法
初始化数据库
第一次创建数据库时,需要对数据库进行初始化。
运行以下命令安装 pm2
配置 pm2
在 SMS-Tree/
的父级目录下新建文件 ecosystem.config.js
,其中 env: {}
的内容与 .env
相同。只需把 XXX=XXX
改为 XXX: XXX
即可:
启动 pm2
在 SMS-Tree/
的父级目录下运行:
可进行的 pm2 操作有
查看正在运行的进程列表:
打开进程管理器:
查看日志:
停止所有进程:
停止特定的进程(<id>
为查看列表时输出的对应进程的 id):
当环境变量更改或重新构建后,需要先删除所有相应的 pm2 进程,再重新启动 pm2。
更新 SMS-Tree
当 SMS-Tree 的 GitHub 仓库产生更新时,需要在服务器上更新代码版本。