怎样安装 Wiki.js Fedora 28

维基.js 是一个基于 Node.js、MongoDB、Git 和 Markdown 构建的免费开源现代 wiki 应用程序。 Wiki.js 源代码公开托管在 GitHub. 本指南将向您展示怎样在新的平台上安装 Wiki.js Fedora 28 Vultr 实例,使用 Node.js、MongoDB、PM2、Nginx、Git 和 Acme.sh。

要求

运行 Wiki.js 的要求如下:

  • Node.js 6.9.0 或更高版本
  • MongoDB 3.2 或更高版本
  • 一个网络服务器,如 Nginx, Apache、IIS、Caddy 或 H2O。 本指南将使用 Nginx
  • Git 2.7.4 或更高版本
  • 符合 Git 的存储库(公共或私有)这是可选的
  • 至少 768MB 内存
  • 域名与 A/AAAA 记录设置

在你开始之前

检查操作系统版本。

cat /etc/fedora-release
# Fedora release 28 (Twenty Eight)

创建一个新的非 root 用户帐户 sudo 访问并切换到它。

useradd -c "John Doe" johndoe && passwd johndoe
usermod -aG wheel johndoe
su - johndoe

笔记: 代替 johndoe 用你的用户名。

确保您的系统是最新的。

sudo dnf check-upgrade || sudo dnf upgrade -y

设置时区。

timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'

安装必需的和有用的包。

sudo dnf install -y wget vim unzip bash-completion git

为简单起见,禁用 SELinux 和防火墙。

sudo setenforce 0
sudo systemctl stop firewalld
sudo systemctl disable firewalld

安装 Node.js

Wiki.js 需要 Node.js 6.9.0 或更高版本,因此我们首先需要安装 Node.js。

安装 Node.js。

sudo dnf install -y nodejs

检查 Node.js 和 npm 版本。

node -v && npm -v
# v8.11.3
# 5.6.0

安装 MongoDB

Wiki.js 使用 MongoDB 作为数据库引擎。 据此,我们需要在我们的服务器上安装 MongoDB。

安装 MongoDB。

sudo dnf install -y mongodb mongodb-server

检查 MongoDB 版本。

mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v3.6.3
# db version v3.6.3

启用并启动 MongoDB。

sudo systemctl enable mongod.service
sudo systemctl start mongod.service

安装和配置 Nginx

Wiki.js 可以在没有任何实际 Web 服务器(例如 Nginx 或 Apache)。 但是,强烈建议在 Wiki.js 前面放置一个标准的 Web 服务器。 这可确保您可以使用 SSL、多个网站、缓存等功能。 我们将在本教程中使用 Nginx,但任何其他服务器都可以,您只需要正确配置它。

安装 Nginx。

sudo dnf install -y nginx

检查版本。

nginx -v
# nginx version: nginx/1.12.1

启用并启动 Nginx。

sudo systemctl enable nginx.service
sudo systemctl start nginx.service

将 Nginx 配置为 HTTP 或者 HTTPS (如果您使用 SSL)Wiki.js 应用程序的反向代理。

sudo vim /etc/nginx/conf.d/wiki.js.conf 并使用下面的基本反向代理配置填充它。

server {

    listen [::]:80;
    listen 80;

    server_name wiki.example.com;

    root /usr/share/nginx/html;

    charset utf-8;
    client_max_body_size 50M;

    location /.well-known/acme-challenge/ {
        allow all;
    }

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass https://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 指令,以及潜在的 proxy_pass 如果您决定配置某些端口而不是指令 3000. Wiki.js 使用端口 3000 默认情况下。

检查配置。

sudo nginx -t

重新加载 Nginx。

sudo systemctl reload nginx.service

安装 Acme.sh 客户端并获取 Let’s Encrypt 证书(可选)

保护你的维基 HTTPS 不是必需的,但这是保护站点流量的好习惯。 为了从 Let’s Encrypt 获得 SSL 证书,我们将使用 Acme.sh 客户端。 Acme.sh 是一个纯 unix shell 软件,用于从 Let’s Encrypt 零依赖获取 SSL 证书。 与其他一些需要大量依赖才能成功运行的 ACME 协议客户端相比,这使得它非常轻量级。

下载并安装 Acme.sh.

sudo mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail [email protected]
cd ~

检查 acme.sh 版本。

/etc/letsencrypt/acme.sh --version
# v2.7.9

获取 RSA 和 ECDSA 证书 wiki.example.com.

# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --home /etc/letsencrypt -d wiki.example.com --webroot /usr/share/nginx/html --reloadcmd "sudo systemctl reload nginx.service" --accountemail [email protected] --ocsp-must-staple --keylength 2048
# ECDSA/ECC P-256
sudo /etc/letsencrypt/acme.sh --issue --home /etc/letsencrypt -d wiki.example.com --webroot /usr/share/nginx/html --reloadcmd "sudo systemctl reload nginx.service" --accountemail [email protected] --ocsp-must-staple --keylength ec-256 

运行上述命令后,您的证书和密钥将位于:

  • 对于 RSA: /etc/letsencrypt/wiki.example.com
  • 对于 ECC/ECDSA: /etc/letsencrypt/wiki.example.com_ecc

笔记: 不要忘记更换 wiki.example.com 用你的域名。

从 Let’s Encrypt 获得证书后,我们需要配置 Nginx 以利用它们。

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 wiki.example.com;

    root /usr/share/nginx/html;

    charset utf-8;
    client_max_body_size 50M;

    location /.well-known/acme-challenge/ {
        allow all;
    }

    # RSA
    ssl_certificate /etc/letsencrypt/wiki.example.com/fullchain.cer;
    ssl_certificate_key /etc/letsencrypt/wiki.example.com/wiki.example.com.key;
    # ECDSA
    ssl_certificate /etc/letsencrypt/wiki.example.com_ecc/fullchain.cer;
    ssl_certificate_key /etc/letsencrypt/wiki.example.com_ecc/wiki.example.com.key;

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass https://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;
    }

}

检查配置。

sudo nginx -t

重新加载 Nginx。

sudo systemctl reload nginx.service

安装 Wiki.js

创建一个空的文档根文件夹,Wiki.js 应安装在该文件夹中。

sudo mkdir -p /var/www/wiki.example.com

导航到文档根文件夹。

cd /var/www/wiki.example.com

更改所有权 /var/www/wiki.example.com 文件夹到用户 johndoe.

sudo chown -R johndoe:johndoe /var/www/wiki.example.com

来自 /var/www/wiki.example.com 文件夹,运行以下命令下载并安装 Wiki.js。

curl -sSo- https://wiki.js.org/install.sh | bash

您可以运行以下命令来查看当前安装的 Wiki.js 版本。

node wiki --version
# 1.0.78

安装完成后,系统会提示您运行配置向导。

通过运行启动配置向导。

node wiki configure

这将通知您导航到 https://localhost:3000 配置 Wiki.js。 如果你在 Wiki.js 前面有 Nginx,那么就意味着你可以打开你的域名(例如 https://wiki.example.com) 而不是去 localhost.

使用您的网络浏览器,导航到 https://wiki.example.com 并按照屏幕上的说明进行操作。 在配置向导期间输入的所有设置都保存在 config.yml 文件。 配置向导将自动为您启动 Wiki.js。

设置 PM2

默认情况下,系统重启后 Wiki.js 不会自动启动。 为了让它在启动时启动,我们需要设置 PM2 进程管理器。 PM2 作为本地 NPM 模块与 Wiki.js 捆绑在一起,因此我们不需要全局安装 PM2。

通过运行命令 PM2 将自身配置为启动服务:

/var/www/wiki.example.com/node_modules/pm2/bin/pm2 startup

最后,通过运行以下命令保存当前的 PM2 配置: /var/www/wiki.example.com/node_modules/pm2/bin/pm2 save

您的 Wiki.js 实例作为后台进程运行,使用 PM2 作为其进程管理器。

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com

相关阅读:

Posted in: LinuxTags: , ,