如何在 Rocky Linux 9 上安装 Wiki.js如何在 Rocky Linux 9 上安装 Wiki.js如何在 Rocky Linux 9 上安装 Wiki.js如何在 Rocky Linux 9 上安装 Wiki.js
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Rocky Linux 9 上安装 Wiki.js

在此页

  1. 先决条件
  2. 第 1 步 - 配置防火墙
  3. 第 2 步 - 安装 PostgreSQL 和实用程序
  4. 第 3 步 - 配置 PostgreSQL
  5. 第 4 步 - 安装 Node.js
  6. 第 5 步 - 下载 Wiki.js
  7. 第 6 步 - 配置和运行 Wiki.js
  8. 第 7 步 - 设置 Systemd 服务
  9. 第 8 步 - 安装 Nginx
  10. 第 9 步 - 安装 SSL
  11. 第 10 步 - 配置 SELinux
  12. 第 11 步 - 配置 Nginx
  13. 第 12 步 - 完成安装
  14. 结论

Wiki.js 是一个开源的轻量级 wiki 软件。它建立在 Node.js JavaScript 框架之上。它可用于使用面向开发人员的 Markdown 编辑器和面向非技术人员的 WYSIWYG 编辑器来编写文档、wiki 和 Web 内容。它支持多种内容类型,包括 UML 图、使用 Tex 或 MathML 语法的数学表达式和代码。它包括用于各种功能的多个模块,包括分析、身份验证、日志记录、第三方搜索引擎和用于同步您的内容的多个存储服务。

在本教程中,您将学习使用 PostgreSQL 数据库和 Nginx 服务器进行代理,在 Rocky Linux 9 服务器上安装 Wiki.js。

先决条件

  • A server running Rocky Linux 9.

  • A non-root user with sudo privileges.

  • A fully qualified domain name (FQDN) pointing to your server. For our purposes, we will use wiki.example.com as the domain name.

  • Make sure everything is updated.

    $ sudo dnf update
    
  • Install basic utility packages. Some of them may already be installed.

    $ sudo dnf install wget curl nano unzip yum-utils -y
    

第 1 步 - 配置防火墙

第一步是配置防火墙。 Rocky Linux 使用 Firewalld 防火墙。检查防火墙状态。

$ sudo firewall-cmd --state
running

防火墙适用于不同的区域,公共区域是我们将使用的默认区域。列出防火墙上所有活动的服务和端口。

$ sudo firewall-cmd --permanent --list-services

它应该显示以下输出。

cockpit dhcpv6-client ssh

Wiki.js 需要 HTTP 和 HTTPS 端口才能运行。打开它们。

$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --add-service=https --permanent

重新加载防火墙以应用更改。

$ sudo firewall-cmd --reload

第 2 步 - 安装 PostgreSQL 和实用程序

Rocky Linux 9 附带旧版本的 PostgreSQL。我们将为我们的教程安装 Postgres 14。

为 PostgreSQL 安装存储库 RPM。

$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

安装 PostgreSQL 14 服务器。

$ sudo dnf install -y postgresql14-server postgresql14-contrib

初始化数据库。

$ sudo /usr/pgsql-14/bin/postgresql-14-setup initdb

启用并启动 PostgreSQL 服务。

$ sudo systemctl enable postgresql-14 --now

检查服务的状态。

$ sudo systemctl status postgresql-14
? postgresql-14.service - PostgreSQL 14 database server
     Loaded: loaded (/usr/lib/systemd/system/postgresql-14.service; enabled; vendor preset: disabled)
     Active: active (running) since Sat 2022-10-22 09:52:41 UTC; 2s ago
       Docs: https://www.postgresql.org/docs/14/static/
    Process: 103857 ExecStartPre=/usr/pgsql-14/bin/postgresql-14-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
   Main PID: 103862 (postmaster)
      Tasks: 8 (limit: 5915)
     Memory: 16.6M
        CPU: 61ms
     CGroup: /system.slice/postgresql-14.service
             ??103862 /usr/pgsql-14/bin/postmaster -D /var/lib/pgsql/14/data/
             ??103863 "postgres: logger "
             ??103865 "postgres: checkpointer "
             ??103866 "postgres: background writer "
             ??103867 "postgres: walwriter "
             ??103868 "postgres: autovacuum launcher "
             ??103869 "postgres: stats collector "
             ??103870 "postgres: logical replication launcher "

Oct 22 09:52:41 wiki.example.com systemd[1]: Starting PostgreSQL 14 database server...

第 3 步 - 配置 PostgreSQL

登录到 PostgreSQL shell。

$ sudo -i -u postgres psql

为 Wiki.js 创建一个新的数据库。

postgres=# CREATE DATABASE wikidb;

使用强密码创建一个新的数据库用户。

postgres=# CREATE USER wikiuser WITH ENCRYPTED PASSWORD 'wikipassword';

授予用户使用数据库的权限。

postgres=# GRANT ALL PRIVILEGES ON DATABASE wikidb TO wikiuser;

退出 Postgres Shell。

postgres=# \q

第 4 步 - 安装 Node.js

在编写本教程时,Wiki.js 支持 Node v16。

使用以下命令安装节点存储库。

$ curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -

安装节点。

$ sudo dnf install nodejs -y

验证节点安装。

$ node --version
v16.18.0

第 5 步 - 下载 Wiki.js

创建一个文件夹来安装 Wiki.js。

$ sudo mkdir -p /var/www/wikijs

将当前登录的用户设置为文件夹的所有者。

$ sudo chown $USER:$USER /var/www/wikijs

切换到目录并下载 Wiki.js 代码存档。

$ cd /var/www/wikijs && wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz

提取下载的存档。

$ tar xzf wiki-js.tar.gz

第 6 步 - 配置和运行 Wiki.js

从示例创建配置文件。

$ cp config.sample.yml config.yml

打开配置文件进行编辑。

$ nano config.yml

找到以下数据库设置并使用在步骤 3 中配置的值更新它们的值。

# PostgreSQL / MySQL / MariaDB / MS SQL Server only:
host: localhost
port: 5432
user: wikiuser
pass: wikipassword
db: wikidb
ssl: false

找到行 bindIP: 0.0.0.0 并更新它如下。

bindIP: 127.0.0.1

这将使 WIki.js 监听环回地址,因为我们将使用 Nginx 代理从外部访问它。

通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

使用以下命令运行 Wiki.js。

$ node server

您将收到类似的输出,确认安装成功。

2022-10-22T10:25:48.187Z [MASTER] info: =======================================
2022-10-22T10:25:48.190Z [MASTER] info: = Wiki.js 2.5.289 =====================
2022-10-22T10:25:48.191Z [MASTER] info: =======================================
2022-10-22T10:25:48.191Z [MASTER] info: Initializing...
2022-10-22T10:25:49.079Z [MASTER] info: Using database driver pg for postgres [ OK ]
2022-10-22T10:25:49.086Z [MASTER] info: Connecting to database...
2022-10-22T10:25:49.117Z [MASTER] info: Database Connection Successful [ OK ]
2022-10-22T10:25:49.467Z [MASTER] warn: DB Configuration is empty or incomplete. Switching to Setup mode...
2022-10-22T10:25:49.468Z [MASTER] info: Starting setup wizard...
2022-10-22T10:25:49.740Z [MASTER] info: Starting HTTP server on port 3000...
2022-10-22T10:25:49.741Z [MASTER] info: HTTP Server on port: [ 3000 ]
2022-10-22T10:25:49.745Z [MASTER] info: HTTP Server: [ RUNNING ]
2022-10-22T10:25:49.745Z [MASTER] info: .......................................
2022-10-22T10:25:49.745Z [MASTER] info:
2022-10-22T10:25:49.746Z [MASTER] info: Browse to http://YOUR-SERVER-IP:3000/ to complete setup!

按 Ctrl + C 停止该过程。

第 7 步 - 设置 Systemd 服务

上述保持 Wiki.js 运行的过程是临时的。为了使进程永久化,我们需要为 Wiki.js 创建一个 systemd 服务,以将其作为后台服务运行。这将允许 Wiki.js 在系统重启时运行。

为 Wiki.js 创建一个 systemd 服务文件并打开它进行编辑。

$ sudo nano /etc/systemd/system/wikijs.service

将以下代码粘贴到其中。将变量 User 的值替换为系统用户的名称。

[Unit]
Description=Wiki.js
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always

User=navjot
Environment=NODE_ENV=production
WorkingDirectory=/var/www/wikijs

[Install]
WantedBy=multi-user.target

通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

重新加载系统守护进程。

$ sudo systemctl daemon-reload

启用 Wiki.js 服务。

$ sudo systemctl enable wikijs

第 8 步 - 安装 Nginx

Rocky Linux 附带旧版本的 Nginx。您需要下载官方 Nginx 存储库以安装最新版本。

创建并打开 /etc/yum.repos.d/nginx.repo 文件以创建官方 Nginx 存储库。

$ sudo nano /etc/yum.repos.d/nginx.repo

将以下代码粘贴到其中。

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

安装 Nginx 服务器。

$ sudo dnf install nginx -y

验证安装。

$ nginx -v
nginx version: nginx/1.22.1

启用并启动 Nginx 服务器。

$ sudo systemctl enable nginx --now

检查服务器的状态。

$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server
     Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled)
     Active: active (running) since Sat 2022-10-22 11:15:39 UTC; 49min ago
       Docs: http://nginx.org/en/docs/
    Process: 116236 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 116237 (nginx)
      Tasks: 2 (limit: 5915)
     Memory: 5.0M
        CPU: 245ms
     CGroup: /system.slice/nginx.service
             ??116237 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf"
             ??116238 "nginx: worker process"

Oct 22 11:15:39 wiki.example.com systemd[1]: Starting nginx - high performance web server...

第 9 步 - 安装 SSL

我们将使用使用 Snapd 工具的 Certbot 工具来颁发 SSL 证书。它需要 EPEL 存储库才能工作。

$ sudo dnf install epel-release

我们将使用 Snapd 安装 Certbot。安装快照。

$ sudo dnf install snapd

启用并启动 Snap 服务。

$ sudo systemctl enable snapd.socket --now

为 Snapd 工作创建必要的链接。

$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh

安装核心 Snapd 存储库。

$ sudo snap install core
$ sudo snap refresh core

安装 Certbot。

$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

生成证书。下面的命令也会自动配置 Nginx。

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m  -d wiki.example.com

上述命令会将证书下载到服务器上的 /etc/letsencrypt/live/wiki.example.com 目录。

生成 Diffie-Hellman 组证书。

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

试运行该过程以检查 SSL 续订是否正常工作。

$ sudo certbot renew --dry-run

如果您没有看到任何错误,则一切就绪。您的证书将自动更新。

第 10 步 - 配置 SELinux

运行以下命令以将正确的 SELinux 上下文应用到 Wiki.js 目录。

$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/wikijs(/.*)?"
$ sudo restorecon -Rv /var/www/wikijs

为 HTTP 创建一个端口并将其分配给 3000 以使 Wiki.js 与 SELinux 一起工作。

$ sudo semanage port -a -t http_port_t -p tcp 3000

允许 Nginx 连接到网络。

$ sudo setsebool -P httpd_can_network_connect 1

第 11 步 - 配置 Nginx

创建并打开文件 /etc/nginx/conf.d/wikijs.conf 进行编辑。

$ sudo nano /etc/nginx/conf.d/wikijs.conf

将以下代码粘贴到其中。

# enforce HTTPS
server {
  listen 80;
  listen [::]:80;
  server_name wiki.example.com;
  return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name wiki.example.com;

    root /var/www/wikijs;

    access_log  /var/log/nginx/wiki.access.log;
    error_log   /var/log/nginx/wiki.error.log;

    http2_push_preload on; # Enable HTTP/2 Server Push

    ssl_certificate /etc/letsencrypt/live/wiki.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/wiki.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/wiki.example.com/chain.pem;
    ssl_session_timeout 1d;

    # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC).
    ssl_protocols TLSv1.2 TLSv1.3;

    # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
    # prevent replay attacks.
    #
    # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
    ssl_early_data on;

    ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:50m;

    # OCSP Stapling ---
    # fetch OCSP records from URL in ssl_certificate and cache them
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    add_header X-Early-Data $tls1_3_early_data;

    location / {
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://127.0.0.1:3000;
    }
}

# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the `$ssl_early_data` variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data {
  "~." $ssl_early_data;
  default "";
}

将上述文件中的根位置替换为您服务器上的目录。

通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

打开文件 /etc/nginx/nginx.conf 进行编辑。

$ sudo nano /etc/nginx/nginx.conf

在行 include /etc/nginx/conf.d/*.conf; 之前添加以下行。

server_names_hash_bucket_size  64;

通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。

验证您的 Nginx 配置。

$ sudo nginx -t

如果您没有看到任何错误,则表示您可以开始了。

启动 Wiki.js 服务。

$ sudo systemctl start wikijs

重新加载 Nginx 服务器。

$ sudo systemctl reload nginx

第 12 步 - 完成安装

访问 URL https://wiki.example.com 完成安装。

填写您的管理员帐户详细信息和 URL。通过取消选中允许遥测选项来禁用遥测。您也可以从管理面板禁用它。单击安装按钮继续。

您将被带到登录页。

输入您的帐户详细信息,然后单击“登录”按钮进入管理页面。

您现在可以开始使用 Wiki.js。

结论

我们的教程到此结束,您在其中学习了如何在 Rocky Linux 9 服务器上安装 Wiki.js。如果您有任何问题,请在下面的评论中发表。

©2015-2025 艾丽卡 support@alaica.com