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