跳至内容

DokuWiki 服务器

先决条件和假设

  • 在服务器、容器或虚拟机上安装的 Rocky Linux 实例
  • 熟悉使用编辑器从命令行修改配置文件(我们这里的示例将使用 *vi*,但您可以替换您喜欢的编辑器)
  • 对 Web 应用程序和设置的一些了解
  • 我们的示例将使用 Apache Sites Enabled 进行设置。如有必要,请查看。
  • 本文档将在整个过程中使用“example.com”作为域名
  • 您必须是 root 用户或能够使用 sudo 提升权限
  • 假设操作系统是全新安装的,但这并不是必需的

介绍

文档可以在组织中采用多种形式。拥有一个可以参考文档的存储库非常宝贵。维基(意为夏威夷语中的 *快*),是一种将文档、流程说明、公司知识库甚至代码示例保存在集中位置的方法。使用维基的 IT 专业人员,即使是秘密使用,也拥有一个内置的保险政策,防止他们忘记模糊的例程。

DokuWiki 是一个成熟、快速且无需数据库即可运行的维基,它具有内置的安全功能,部署起来并不复杂。有关更多信息,请查看他们的 网页

DokuWiki 是众多可用的维基之一,但它是一个不错的选择。最大的优点是 DokuWiki 相对轻量级,可以在已经运行其他服务的服务器上运行,前提是您有可用空间和内存。

安装依赖项

DokuWiki 的最低 PHP 版本现在是 7.2,Rocky Linux 8 默认情况下已包含此版本。由于模块的存在,Rocky Linux 8 可以安装高达 8.2 版本。Rocky Linux 9.0 默认情况下包含 PHP 8.0 版本,以及允许安装高达 8.2 版本的模块。请注意,此处列出的一些软件包可能已经存在

dnf install tar wget httpd php php-gd php-xml php-json php-mbstring

接受并安装这些软件包附带的任何其他列出的依赖项。

创建目录并更改配置

Apache 配置

如果您已阅读 Apache Sites Enabled 过程,您就会知道需要创建几个目录。从 *httpd* 配置目录添加开始

mkdir -p /etc/httpd/{sites-available,sites-enabled}

您需要编辑 httpd.conf 文件

vi /etc/httpd/conf/httpd.conf

将此添加到文件的最后

Include /etc/httpd/sites-enabled

在 sites-available 中创建站点配置文件

vi /etc/httpd/sites-available/com.example

该配置文件将类似于以下内容

<VirtualHost *>
  ServerName    example.com
  DocumentRoot  /var/www/sub-domains/com.example/html

  <Directory ~ "/var/www/sub-domains/com.example/html/(bin/|conf/|data/|inc/)">
      <IfModule mod_authz_core.c>
                AllowOverride All
          Require all denied
      </IfModule>
      <IfModule !mod_authz_core.c>
          Order allow,deny
          Deny from all
      </IfModule>
  </Directory>

  ErrorLog   /var/log/httpd/example.com_error.log
  CustomLog  /var/log/httpd/example.com_access.log combined
</VirtualHost>

请注意,上面的“AllowOverride All”允许 .htaccess(目录特定的安全)文件正常工作。

继续将配置文件链接到 sites-enabled,但不要启动 Web 服务

ln -s /etc/httpd/sites-available/com.example /etc/httpd/sites-enabled/

Apache DocumentRoot

您需要创建您的 *DocumentRoot*。使用以下方法执行此操作

mkdir -p /var/www/sub-domains/com.example/html

安装 DokuWiki

在您的服务器中,更改到根目录。

cd /root

由于您的环境已准备就绪,请获取 DokuWiki 的最新稳定版本。您可以通过访问 下载页面,并在页面左侧的“版本”下找到“稳定(推荐)(直接链接)”。

右键单击此处的“(直接链接)”部分并复制链接。在您的 DokuWiki 服务器的控制台中,键入 wget 和一个空格,然后将您复制的链接粘贴到终端中。您应该看到类似于以下内容的内容

wget https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz

在我们解压缩存档之前,请使用 tar ztf 检查其内容

tar ztvf dokuwiki-stable.tgz

请注意所有其他文件之前名为日期的目录,其外观类似于以下内容

... (more above)
dokuwiki-2020-07-29/inc/lang/fr/resetpwd.txt
dokuwiki-2020-07-29/inc/lang/fr/draft.txt
dokuwiki-2020-07-29/inc/lang/fr/recent.txt
... (more below)

解压缩存档时,您不希望出现该前导命名目录,因此您将使用 tar 的一些选项来排除它。第一个选项是“--strip-components=1”,它会删除前导目录。第二个选项是“-C”选项,它告诉 tar 您希望存档解压缩的位置。解压缩将类似于以下内容

tar xzf dokuwiki-stable.tgz  --strip-components=1 -C /var/www/sub-domains/com.example/html/

运行此命令后,所有 DokuWiki 都应该位于您的 *DocumentRoot* 中。

您需要复制随 DokuWiki 附带的 *htaccess.dist* 文件并保留旧文件,以防您需要恢复到原始文件。

在此过程中,您将更改此文件的名称为 *htaccess*。这是 *apache* 将要查找的文件。为此,请执行以下操作

cp /var/www/sub-domains/com.example/html/.htaccess{.dist,}

你需要将新目录及其文件的所有权更改为apache用户和组。

chown -Rf apache.apache /var/www/sub-domains/com.example/html

设置 DNS 或 /etc/hosts

在您可以访问 DokuWiki 界面之前,您必须设置此站点的名称解析。您可以在测试目的使用您的/etc/hosts文件。

在本例中,假设 DokuWiki 将在 10.56.233.179 的私有 IPv4 地址上运行。假设您也在 Linux 工作站上修改/etc/hosts文件。要执行此操作,请运行

sudo vi /etc/hosts

然后更改您的主机文件以使其类似于以下内容(注意示例中的 IP 地址)

127.0.0.1 localhost
127.0.1.1 myworkstation-home
10.56.233.179 example.com     example

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

完成测试并准备将内容发布给所有人后,您必须将此主机添加到 DNS 服务器。您可以使用私有 DNS 服务器或面向公众的 DNS 服务器。

启动 httpd

在启动httpd之前,请测试以确保您的配置正常。

httpd -t

您应该得到

Syntax OK

如果是这样,您应该准备好启动httpd,然后完成设置。首先启用httpd以便在引导时启动

systemctl enable httpd

然后启动它

systemctl start httpd

测试 DokuWiki

下一步是在网络浏览器中打开并键入以下内容:

http://example.com/install.php

这将带您进入设置屏幕。

  • 在“Wiki 名称”字段中,键入我们的维基的名称。例如,“技术文档”。
  • 在“超级用户”字段中,键入管理员用户名。例如“admin”。
  • 在“真实姓名”字段中,键入管理员用户的真实姓名。
  • 在“电子邮件”字段中,键入管理员用户的电子邮件地址。
  • 在“密码”字段中,键入管理员用户的安全密码。
  • 在“再次”字段中,重新键入相同的密码。
  • 在“初始 ACL 策略”下拉列表中,选择最适合您环境的选项。
  • 选择您要将内容放在其下的许可证的适当复选框。
  • 保持选中状态(或者如果您愿意,取消选中)“每月一次,向 DokuWiki 开发人员发送匿名使用数据”复选框。
  • 单击“保存”按钮。

您的维基现在已准备好供您添加内容。

保护 DokuWiki

除了您刚刚创建的 ACL 策略之外,请考虑以下几点。

您的 firewalld 防火墙

注意

此防火墙示例不假设您可能需要在您的 DokuWiki 服务器上允许的其他服务。这些规则基于您的测试环境,并且**仅**处理允许访问本地网络 IP 块。生产服务器将需要更多允许的服务。

在您宣布一切完成之前,您需要考虑安全问题。首先,您应该在服务器上运行防火墙。

假设 10.0.0.0/8 网络中的任何人都位于您的私有局域网中,并且只有这些人需要访问该网站。

如果您使用 firewalld 作为您的防火墙,请使用以下规则语法

firewall-cmd --zone=trusted --add-source=10.0.0.0/8 --permanent
firewall-cmd --zone=trusted --add-service=http --add-service=https --permanent
firewall-cmd --reload

在您添加了上述规则并重新加载了 firewalld 服务后,列出您的区域以确保其中包含您需要的所有内容。

firewall-cmd --zone=trusted --list-all

如果一切正常,这将类似于以下内容。

trusted (active)
  target: ACCEPT
  icmp-block-inversion: no
  interfaces: 
  sources: 10.0.0.0/8
  services: http https
  ports: 
  protocols: 
  forward: yes
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

SSL

您应该考虑使用 SSL 进行加密的网络流量以获得最佳安全性。您可以从 SSL 提供商处购买 SSL,也可以使用Let's Encrypt

结论

无论您是需要记录流程、公司政策、程序代码还是其他内容,维基都是一个很好的方法。DokuWiki 是一款安全、灵活、易于使用的产品,安装和部署也相对容易。它也是一个稳定多年的项目。

作者:Steven Spencer

贡献者:Ezequiel Bruni, Ganna Zhyrnova