如何在 CentOS 7 上安装 Wiki.js
在此页
- 要求
- 先决条件
- 初始步骤
- 第 1 步 - 安装 Node.js 和 npm
- 第 2 步 - 安装 MongoDB 数据库
- 第 3 步 - 安装 acme.sh 客户端并获取 Lets Encrypt 证书(可选)
- 第 4 步 - 安装和配置 NGINX
- 第 5 步 - 安装和设置 Wiki.js
- 第 6 步 - 设置 PM2 流程管理器
- 链接
Wiki.js 是一个基于 Node.js、Git 和 Markdown 的现代且强大的开源 wiki 应用程序。 Wiki.js 在速度极快的 Node.js 引擎上运行,并经过优化以节省 CPU 资源。一些值得一提的 Wiki.js 特性是:
- Markdown 编辑,由 Git 支持
- 重量轻,但非常强大
- 为现代网络精心设计
- 集成访问控制
- 直观的资产管理
- 内置搜索引擎
在本教程中,我们将通过使用 NGINX 作为反向代理服务器、MongoDB 作为数据库服务器、PM2 作为进程管理器以及可选的安全传输层,引导您在 CentOS 7 操作系统上完成 Wiki.js 版本 1 安装过程通过使用 acme.sh
客户端和 Lets Encrypt 证书颁发机构来添加 SSL 支持。
要求
运行 Wiki.js 的要求如下:
- 需要 Node.js 6.11.1 到 10.x。
- MongoDB 3.2 或更高版本。
- Git 版本 2.7.4 或更高版本。
- 网络服务器软件,例如 NGINX、Apache、Caddy、H2O...
- 一个空的 Git 存储库(可选)。
- 至少 512MB RAM。建议使用 1GB 内存。
- 大约 300MB 的磁盘空间。
- 设置了 A/AAAA DNS 记录的域名。
先决条件
- CentOS 7 操作系统。
- 具有
sudo
权限的非根用户。
初始步骤
检查您的 CentOS 版本:
cat /etc/centos-release
设置时区:
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'
更新您的操作系统包(软件)。这是重要的第一步,因为它确保您拥有操作系统默认软件包的最新更新和安全修复程序:
sudo yum update -y
安装 CentOS 操作系统基本管理所需的一些基本软件包:
sudo yum install -y curl wget vim unzip socat epel-release
Wiki.js 要求您安装 Git 版本 2.7.4 或更高版本。 CentOS 上的默认 Git 版本太旧,因此您需要从源代码构建它。以下是快速编译它的命令:
# Remove existing git package if installed:
sudo yum remove -y git
sudo yum groupinstall -y "Development Tools"
sudo yum install -y gettext-devel openssl-devel perl-CPAN perl-devel zlib-devel curl-devel
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.21.0.tar.gz && tar zxvf git-2.21.0.tar.gz
rm git-2.21.0.tar.gz
cd git-2.21.0
make configure
./configure make prefix=/usr/local all
sudo make prefix=/usr/local install
cd ~
which git
git --version
第 1 步 - 安装 Node.js 和 npm
Wiki.js 建立在 Node.js 之上。在撰写本文时,我们将为 Wiki.js 安装最新的推荐版本,即版本 10。在 Linux 上,您有几个 Node.js 安装选项:Linux 二进制文件 (x86/x64)、源代码或通过包管理器。我们将使用包管理选项,使安装和更新 Node.js 变得轻而易举。
从 NodeSource 存储库下载并安装最新推荐版本的 Node.js:
curl --silent --location https://rpm.nodesource.com/setup_10.x | sudo bash -
sudo yum install -y nodejs
注意:npm 与 Node.js 一起分发 - 这意味着当您下载 Node.js 时,您会自动在系统上安装 npm。
检查 Node.js 和 npm 版本:
node -v && npm -v
# v10.15.1
# 6.4.1
Npm 是一个独立于 Node.js 的项目,并且更新频率更高。因此,即使您刚刚下载了 Node.js(因此也下载了 npm),您也可能需要更新您的 npm。幸运的是,npm 知道如何自我更新!要更新您的 npm,请在您的终端中输入:
sudo npm install -g
此命令会将 npm 更新到最新的稳定版本。
使用以下命令重新检查 npm 版本:
npm -v
# 6.8.0
它应该返回最新的版本号。
第 2 步 - 安装 MongoDB 数据库
Wiki.js 需要一个数据库来存储它的数据,而目前 Wiki.js 的稳定版本只支持 MongoDB 数据库引擎。据此,我们需要安装 MongoDB 数据库。
创建一个 /etc/yum.repos.d/mongodb-org-4.0.repo
文件,以便您可以直接使用 百胜。
跑步:
sudo vim /etc/yum.repos.d/mongodb-org-4.0.repo
并使用以下配置填充文件:
[mongodb-org-4.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
要安装最新稳定版本的 MongoDB,请发出以下命令:
sudo yum install -y mongodb-org
检查 MongoDB 版本:
mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v4.0.6
# db version v4.0.6
启动并启用(将其设置为在重启时启动)MongoDB 服务(如果尚未启动和启用):
sudo systemctl start mongod.service
sudo systemctl enable mongod.service
第 3 步 - 安装 acme.sh 客户端并获取 Lets Encrypt 证书(可选)
没有必要使用 HTTPS 保护您的网站,但这是保护您的网站流量的好习惯。为了从 Lets Encrypt 获取 SSL 证书,我们将使用 acme.sh
客户端。 Acme.sh
是一款纯 UNIX shell 软件,用于零依赖地从 Lets Encrypt 获取 SSL 证书。
下载并安装 acme.sh
:
sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail
source ~/.bashrc
cd ~
检查 acme.sh
版本:
acme.sh --version
# v2.8.1
为您的域名/主机名获取 RSA 和 ECC/ECDSA 证书:
# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256
如果你想要假证书进行测试,你可以在上面的命令中添加 --staging
标志。
要列出您颁发的证书,您可以运行:
acme.sh --list
创建文件夹来存储您的证书。我们将使用 /etc/letsencrypt
但它可以是您喜欢的任何东西来存储 SSL 证书。
mkdir -p /etc/letsencrypt/example.com
mkdir -p /etc/letsencrypt/example.com_ecc
安装/复制证书到 /etc/letsencrypt 目录。
# RSA
acme.sh --install-cert -d example.com \
--cert-file /etc/letsencrypt/example.com/cert.pem \
--key-file /etc/letsencrypt/example.com/private.key \
--fullchain-file /etc/letsencrypt/example.com/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc \
--cert-file /etc/letsencrypt/example.com_ecc/cert.pem \
--key-file /etc/letsencrypt/example.com_ecc/private.key \
--fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"
运行上述命令后,您的证书和密钥将位于:
- 对于 RSA:/etc/letsencrypt
/example.com
目录。 - 对于 ECC/ECDSA:/etc/letsencrypt
/example.com_ecc
目录。
所有证书将每 60 天自动更新一次。
获得证书后,退出 root 用户并返回普通 sudo 用户:
exit
第 4 步 - 安装和配置 NGINX
Wiki.js(或任何 HTTP Node.js 应用程序)可以在没有任何实际 Web 服务器(例如 NGINX 或 Apache)的情况下运行。但是,强烈建议在 Wiki.js 前面放置一个标准的 Web 服务器。这确保您可以使用 SSL、多个网站、缓存等功能。我们将在本教程中使用 NGINX,但任何其他服务器都可以,您只需要正确配置它。
下载并安装 NGINX:
sudo yum install -y nginx
检查 NGINX 版本:
nginx -v
# nginx version: nginx/1.12.2
启用并启动 NGINX 服务:
sudo systemctl enable nginx.service
sudo systemctl start nginx.service
运行 sudo vim /etc/nginx/conf.d/wiki.js.conf
并将 NGINX 配置为 HTTPS 反向代理。
server {
listen [::]:443 ssl http2;
listen 443 ssl http2;
listen [::]:80;
listen 80;
server_name example.com;
charset utf-8;
client_max_body_size 50M;
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_next_upstream error timeout http_502 http_503 http_504;
}
}
在上述配置中,您唯一需要更改的是 server_name
指令,如果您决定配置 3000
端口以外的其他端口,则可能还有 proxy_pass
指令. Wiki.js 默认使用端口 3000
。
检查 NGINX 配置:
sudo nginx -t
最后,为了使更改生效,我们需要重新加载 NGINX:
sudo systemctl reload nginx.service
第 5 步 - 安装和设置 Wiki.js
创建 Wiki.js 应位于的文档根目录:
sudo mkdir -p /var/www/wiki.js
导航到文档根目录:
cd /var/www/wiki.js
将 /var/www/wiki.js
目录的所有权更改为您的用户:
sudo chown -R [your_user]:[your_user] /var/www/wiki.js
注意:将上述命令中的 your_user 替换为您应该作为本教程的先决条件创建的非根用户。
在 /var/www/wiki.js
目录中,运行以下命令以获取并安装最新的 Wiki.js 应用程序:
curl -sSo- https://wiki.js.org/install.sh | bash
安装完成后,您可以运行以下命令来查看当前安装的 Wiki.js 版本:
node wiki --version
# 1.0.117
安装完成后,系统会提示您启动配置向导。
因此,通过运行以下命令启动配置向导:
node wiki configure
使用网络浏览器,导航至 http://example.com
并按照屏幕上的说明进行操作。在配置向导中输入的所有设置都保存在 config.yml
文件中。配置向导会自动为你启动 Wiki.js。
首先,您会看到一条欢迎消息。单击“开始”按钮:

接下来将出现“系统检查”页面。如果满足所有要求,请单击“继续”按钮。

输入有关您的 wiki 的一般信息,然后单击“继续”按钮:

阅读“重要注意事项”通知并单击“继续”进行下一步:

接下来,连接到数据库并继续:

您应该会看到一条消息,表明 Wiki.js 已成功连接到数据库。单击“继续”按钮:

设置路径并继续:

如果需要或跳过此步骤,请设置远程 Git 存储库。此步骤是可选的,但强烈推荐:

接下来,单击“继续”按钮:

创建一个管理员帐户并单击“继续”按钮:

最后,启动 Wiki.js:

等待大约 30 秒,您应该会被重定向到 Wiki.js 主页:

安装完成。你应该 wiki 欢迎页面:

第 6 步 - 设置 PM2 进程管理器
默认情况下,Wiki.js 不会在系统重启后自动启动。为了让它在开机时启动,我们需要设置 PM2 进程管理器。 PM2 作为本地 npm 模块与 Wiki.js 捆绑在一起,因此我们不需要全局安装 PM2。
通过运行以下命令告诉 PM2 将自身配置为启动服务:
/var/www/wiki.js/node_modules/pm2/bin/pm2 startup
最后,通过运行命令保存当前的 PM2 配置:
/var/www/wiki.js/node_modules/pm2/bin/pm2 save
您的 Wiki.js 现在作为后台进程运行,使用 PM2 作为其进程管理器。
链接
- https://wiki.js.org/
- https://github.com/Requarks/wiki-v1
- https://github.com/Requarks/wiki