如何在 Ubuntu 22.04 上使用 Apache2 反向代理安装 Wiki.js
Wiki.js 是基于 Node.js、Git 和 Markdown 的免费开源 wiki 软件。 它根据 AGPL-v3 许可证发布,旨在提高性能并节省系统资源。 Wiki.js 是一款功能强大的 Wiki 软件,可以安装在系统上的任何位置; 您可以将其安装在操作系统上或使用 Heroku 等云服务,也可以将 Wiki.js 部署在 Docker 和 Kubernetes 等容器环境中。
Wiki.js 与 PostgreSQL 数据库兼容,并提供 50 多个集成,用于额外的身份验证、日志系统、搜索引擎、渲染和存储。 它是功能强大的 Wiki 软件,建立在漂亮且直观的管理仪表板和页面界面上。 它是完全可定制的 wiki 软件,用于记录您的技术堆栈。
在本指南中,您将在 Ubuntu 22.04 服务器上安装和配置 Wiki.js,使用 PostgreSQL 作为默认数据库,使用 Apache2 作为反向代理。 此外,您的 Wiki.js 安装上还将有一个安全的 HTTPS/SSL 连接。 完成后,您的 Ubuntu 系统上将拥有一个功能齐全且安全的 Wiki.js。
先决条件
要完成本指南,您首先需要满足以下要求:
- Ubuntu 22.04 服务器。
- 具有 root/管理员权限的非 root 用户。
- 域名指向您的 Ubuntu 服务器 IP 地址。
安装 Node.js
在安装 Wiki.js 之前,您必须安装 Wiki.js 所需的依赖项。
Wiki.js 是一个主要用 JavaScript 编写的 wiki 软件,因此您将在第一步中安装 JavaScript 运行时 Node.js。 默认 Ubuntu 存储库提供 Node.js 包,但对于本指南,您将使用 Nodesource 存储库来安装 Node.js。
运行下面的curl命令将Nodesource存储库添加到您的Ubuntu系统。 在撰写本文时,Wiki.js 至少需要 Node.js v8 及更高版本。 对于本指南,您将安装 Node.js v16 的 LTS 版本。
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
现在您可以使用下面的 apt 命令安装 Node.js 包。
sudo apt install nodejs
安装完成后,使用以下命令检查并验证Node.js版本。 您应该在终端屏幕上看到 Node.js v16 LTS 版本。
node --version
npm --version
安装 PostgreSQL 数据库
默认 WIki.js 支持多种 RDBMS,例如 PostgreSQL、MySQL/MariaDB 和 SQLite(默认),但推荐用于生产的数据库是 PostgreSQL。 您将在 Ubuntu 系统上安装 PostgreSQL 软件包,然后为 Wiki.js 创建数据库和用户。
首先,运行以下 apt 命令在您的服务器上安装 PostgreSQL 数据库。 输入Y确认安装并按ENTER继续,安装将开始。
sudo apt install postgresql postgresql-common
安装完成后,运行以下systemctl命令检查并验证PostgreSQL服务。 您应该看到 PostgreSQL 服务已启用,这意味着它将在系统启动时自动启动。 并且 PostgreSQL 服务的当前状态为“Active”。
sudo systemctl is-enabled postgresql
sudo systemctl status postgresql
使用以下命令登录 PostgreSQL 控制台创建 PostgreSQL 数据库和用户。
sudo -u postgres psql
从 PostgreSQL 控制台运行以下命令,为 Wiki.js 创建新数据库和用户。 在此示例中,我们创建数据库“wikijs”和密码为“wikijspassword”的用户“wiki”。
CREATE DATABASE wikijs;
CREATE USER wiki WITH ENCRYPTED PASSWORD 'wikijspassword';
GRANT ALL PRIVILEGES ON DATABASE wikijs TO wiki;
现在您可以使用“Ctrl+d”退出 PostgreSQL 控制台,或者简单地使用命令“\q”退出。
安装 Wiki.js
现在,您将手动将 Wiki.js 安装到您的 Ubuntu 系统。 通过本指南,您将为 Wiki.js 创建系统用户、下载 Wiki.js 源代码、使用 PostgreSQL 数据库设置 Wiki.js,最后将 Wiki.js 作为 systemd 服务运行。
首先,运行以下命令为 Wiki.js 创建一个新用户。 在此示例中,我们将创建一个名为“wiki”的新系统用户,其默认主目录为“/opt/wikijs”,并且由于这是一个系统用户,因此我们将禁用 shell 访问权限。
sudo useradd -r -d /opt/wikijs -s /usr/sbin/nologin wiki
现在使用下面的 wget 命令下载 Wiki.js 源代码。
wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz
下载完成后,创建一个新目录“/opt/wikijs”并将Wiki.js源代码解压到其中。 您应该会在安装目录“/opt/wikijs”中看到 Wiki.js 源代码。
mkdir -p /opt/wikijs
tar xzf wiki-js.tar.gz -C /opt/wikijs
要使用 PostgreSQL 数据库设置 Wiki.js,您将复制默认示例配置“config.sample.yml”并使用文本编辑器修改/编辑它。
运行以下命令将示例 Wiki.js 配置文件复制到“/opt/wikijs/config.yml”。 然后,使用 Nano 编辑器编辑新文件“/opt/wikijs/config.yml”。
cp /opt/wikijs/config.sample.yml /opt/wikijs/config.yml
nano /opt/wikijs/config.yml
如下更改默认配置。
在此示例中,我们将在默认 TCP 端口“3000”上运行 Wiki.js。 请务必更改 PostgreSQL 数据库名称、用户和密码。 在“bindIP”选项上,更改为 localhost 或“127.0.0.1”。 对于 Wiki.js 日志配置,我们将使用默认级别“info”,格式为“json”。
# default port wikijs will run
port: 3000
# PostgreSQL database details
db:
type: postgres
host: localhost
port: 5432
user: wiki
pass: wikijspassword
db: wikijs
ssl: false
# bind wikijs to localhost only
bindIP: 127.0.0.1
# setup log and the format
loglevel: info
logFormat: json
完成后保存并关闭文件。
现在运行下面的 chown 命令将 Wiki.js 安装目录“/opt/wikijs”的所有权更改为用户“wiki”。
sudo chown -R wiki:wiki /opt/wikijs
在此示例中,我们将 Wiki.js 作为 systemd 服务运行。 因此,您需要为 Wiki.js 创建一个新的 systemd 服务文件。
运行以下命令创建新的 systemd 服务文件“/etc/systemd/system/wikijs.service”。
sudo nano /etc/systemd/system/wikijs.service
将以下配置添加到文件中。
[Unit]
Description=Wiki.js
After=network.target postgresql.service
[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always
User=wiki
Environment=NODE_ENV=production
WorkingDirectory=/opt/wikijs
[Install]
WantedBy=multi-user.target
完成后保存并关闭文件。
接下来,运行以下命令重新加载系统管理器并应用新的服务文件“wikijs.service”
sudo systemctl daemon-reload
您现在可以使用以下命令启动并启用“wikijs”服务。
sudo systemctl start wikijs
sudo systemctl enable wikijs
最后,使用以下命令检查并验证“wikijs”服务。 您现在应该看到“wikijs”服务正在默认 TCP 端口“3000”上运行,并使用 PostgreSQL 作为默认数据库。
sudo systemctl status wikijs
将 Apache2 设置为反向代理
在此示例中,Wiki.js 现在在 TCP 端口“3000”上运行。 要暴露给外部网络或互联网,最好在 Wiki.js 前面设置反向代理,并在其之上应用 HTTPS/SSL 以保护任何凭据和登录。 您还将使用 Apache2 作为 Wiki.js 的反向代理。
运行下面的 apt 命令来安装 Apache2 软件包。 输入Y确认安装并按ENTER继续,安装将开始。
sudo apt install apache2
安装完成后,运行下面的“ufw”命令以打开 ubuntu 系统上的 HTTP 和 HTTPS 端口。 然后,验证 UFW 规则列表。
sudo ufw allow "Apache Full"
sudo ufw status
接下来,使用以下命令启用一些 Apache2 模块。 您将使用这些模块来设置 Apache2 反向代理。
sudo a2enmod proxy proxy_http ssl remoteip http2
现在使用以下命令创建一个新的 Apache2 虚拟主机配置“/etc/apache2/sites-available/wikijs.conf”。
sudo nano /etc/apache2/sites-available/wikijs.conf
将以下配置添加到文件中。 在此示例中,我们将使用域“wiki.hwdomain.io”进行 Wiki.js 安装,并使用 LetsEncrypt 的 SSL 证书。 请务必更改 SSL 证书的域名和路径。
ServerName wiki.hwdomain.io
# Comment to prevent HTTP to HTTPS redirect
Redirect permanent / https://wiki.hwdomain.io
ErrorLog /var/log/apache2/wiki.hwdomain.io-error.log
CustomLog /var/log/apache2/wiki.hwdomain.io-access.log combined
ServerName wiki.hwdomain.io
ProxyPreserveHost On
ProxyPass "/" "http://127.0.0.1:3000/"
ProxyPassReverse "/" "http://127.0.0.1:3000/"
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/wiki.hwdomain.io/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/wiki.hwdomain.io/privkey.pem
Protocols h2 http/1.1
# Enable only strong encryption ciphers and prefer versions with forwarding Secrecy
SSLCipherSuite HIGH:RC4-SHA:AES128-SHA:!aNULL:!MD5
SSLHonorCipherOrder on
# Disable insecure SSL and TLS versions
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
ErrorLog /var/log/apache2/wiki.hwdomain.io-error.log
CustomLog /var/log/apache2/wiki.hwdomain.io-access.log combined
完成后保存并关闭文件。
接下来,使用以下命令激活虚拟主机文件“wikijs.conf”。
sudo a2ensite wikijs.conf
使用以下命令检查并验证 Aache2 配置。 如果您收到诸如“Syntax OK”之类的输出消息,则表示 Apache2 配置已准备就绪。 然后,重新启动 Apache2 服务以应用新的更改。
sudo apachectl configtest
sudo systemctl restart apache2
配置 Wiki.js 安装
打开网络浏览器并访问 Wiki.js 安装的域名(即:https://wiki.hwdomain.io/)。
输入 Wiki.js 安装的新管理员电子邮件、密码和站点 URL。 然后,单击“安装”按钮开始安装。
安装完成后,您将看到Wiki.js的登录页面。 输入管理员电子邮件和密码,然后单击“登录”。
您现在将看到来自 Wiki.js 的欢迎消息。 单击“创建主页”按钮为您的 Wiki.js 设置默认索引页。
选择您要使用的编辑器。 在此示例中,我们将使用 Markdown 编辑器。
输入标题、描述等。 然后单击“确定”。
输入 Wiki.js 的详细信息索引页,然后单击“创建”进行确认。
您应该会看到刚刚创建的 Wiki.js 的默认主页。
要访问 Wiki.js 管理仪表板,请单击左上角的齿轮设置图标。 您应该会看到下面的 Wiki.js 管理仪表板。
结论
在本教程中,您已在 PostgreSQL 数据库和 Apache2 反向代理之上设置了 Wiki.js,并在最新的 Ubuntu 服务器 22.04 上运行。 您还使用 UFW 防火墙和在 Apache 反向代理上启用的 SSL/HTTPS 来保护您的 Wiki.js。 最后,您还为 Wiki.js 安装配置了默认主页或索引。
您可以为您的 Wiki项目创建其他内容并设置类别。 您还可以向 Wiki.js 添加一些模块以扩展其功能或为 Wiki.js 设置新主题。
资讯来源:由a0资讯编译自THECOINREPUBLIC。版权归作者A0资讯所有,未经许可,不得转载