DokuWiki教程
按照项目需求,需要一款Wiki软件用来记录项目实施过程中的各类事件、技术文档、接口说明等。本篇教程详述DokuWiki的安装及使用。
第一部分:CentOS 7下DokuWiki的安装及权限配置 第二部分:DokuWiki的基本使用
第一部分:CentOS 7下DokuWiki的安装
DokuWiki的安装参考教程https://www.dokuwiki.org/install,整个安装过程分为以下几步:
下载DokuWiki
在网址https://download.dokuwiki.org/下载最新版本的DokuWiki。
如下图所示,在下载时进行3个选项信息的确认:Version、Languages和Popular Plugins
此处我们的选择依次是:版本(Stable)、语言(en+zh)、插件(无,即不选择任何插件),然后下载安装包(本文中下载的安装包名称为:dokuwiki-a1b9b25f129b085a00920bd821719ccd.tgz)。
安装前准备
DokuWiki在安装前需要依赖如下三个组件。(具体见:DokuWiki System Requirements)
- Webserver supporting PHP: DokuWiki能够运行在任意支持PHP的Webserver上,本文中使用Apache的Httpd服务
- PHP(版本大于或者等于5.6),DokuWiki要运行在PHP的安全模式(Safe Mode)下
- 浏览器
安装Apache Httpd
首先进行Apache Httpd的安装,在联网环境下,可以直接通过如下yum命令进行Apache Httpd的安装:
[root@izwz934uda0vhwlzenknpcz Desktop]# yum install httpd -y
启动httpd服务:
[root@izwz934uda0vhwlzenknpcz Desktop]# systemctl start httpd.service
打开页面,看httpd服务是否已经启动,如下所示即为httpd服务成功启动。
安装PHP
本文中安装php70,需要导入php源,然后再使用yum命令进行安装。
导入php源
[root@izwz934uda0vhwlzenknpcz Desktop]# yum install -y epel-release
[root@izwz934uda0vhwlzenknpcz Desktop]# rpm -Uvh https://centos7.iuscommunity.org/ius-release.rpm
安装php70
通过以下命令安装php70:
[root@izwz934uda0vhwlzenknpcz Desktop]# yum install -y php70u-*
安装完毕后,通过以下指令查看php70是否安装成功。
[root@izwz934uda0vhwlzenknpcz Desktop]# php -v
PHP 7.0.30 (cli) (built: Apr 26 2018 13:30:35) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with the ionCube PHP Loader (enabled) + Intrusion Protection from ioncube24.com (unconfigured) v10.2.0, Copyright (c) 2002-2018, by ionCube Ltd.
with Zend OPcache v7.0.30, Copyright (c) 1999-2017, by Zend Technologies
with Xdebug v2.6.0, Copyright (c) 2002-2018, by Derick Rethans
测试安装的php70能否在Apache httpd下运行
[root@izwz934uda0vhwlzenknpcz Desktop]# echo "<?php phpinfo(); ?>" > /var/www/html/index.php
打开页面IP/index.php,出现如下图的结果就证明Apache Httpd和php均安装成功。
安装DokuWiki
安装DokuWiki的过程分为以下几个步骤:解压安装包、
解压安装包
解压在之前下载好的安装包,如下所示:
[root@izwz934uda0vhwlzenknpcz Desktop]# tar -zxvf dokuwiki-a1b9b25f129b085a00920bd821719ccd.tgz
[root@izwz934uda0vhwlzenknpcz Desktop]# ls dokuwiki
bin conf COPYING data doku.php feed.php inc index.php install.php lib README vendor VERSION
放置解压包
将解压之后的dokuwiki目录放置在/var/www/html目录下
注意:通过这种放置方法,只能通过IP/dokuwiki/index.php来访问。如果想通过IP/index.php方式来访问,则需要自己配置httpd服务。
[root@izwz934uda0vhwlzenknpcz Desktop]# mv dokuwiki /var/www/html/
[root@izwz934uda0vhwlzenknpcz Desktop] cd /var/www/html/dokuwiki
[root@izwz934uda0vhwlzenknpcz dokuwiki]# ll
总用量 100
drwxr-xr-x 2 root root 4096 7月 5 22:14 bin
drwxr-xr-x 2 root root 4096 7月 5 22:14 conf
-rw-r--r-- 1 2012 2012 18092 5月 3 14:36 COPYING
drwxr-xr-x 12 root root 4096 7月 5 22:14 data
-rw-r--r-- 1 2012 2012 3547 5月 3 14:36 doku.php
-rw-r--r-- 1 2012 2012 19141 5月 3 14:36 feed.php
drwxr-xr-x 8 root root 4096 7月 5 22:14 inc
-rw-r--r-- 1 2012 2012 2097 5月 3 14:36 index.php
-rw-r--r-- 1 2012 2012 19233 5月 3 14:36 install.php
drwxr-xr-x 8 root root 4096 7月 5 22:14 lib
-rw-r--r-- 1 2012 2012 306 5月 3 14:36 README
drwxr-xr-x 11 root root 4096 7月 5 22:14 vendor
-rw-r--r-- 1 2012 2012 21 5月 3 14:36 VERSION
配置dokuwiki内的目录权限、执行wiki安装
权限说明
dokuwiki以文件的形式存储配置文件和页面数据,为了wiki的安全,需要确保以下目录不能通过web被公众用户访问。
- data
- conf
- bin
- inc (isn't dangerous when accessible, though)
可以通过_cat /ect/group_和_cat /etc/passwd_命令分别查看组信息和用户信息。
cat /etc/group结果参数说明
组名:口令:组标识号:组内用户列表
root:x:0:
apache:x:48:
php-fpm:x:991:
cat /etc/passwd结果参数说明
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
root:x:0:0:root:/root:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
php-fpm:x:995:991:php-fpm:/var/lib/php/fpm:/sbin/nologin
权限配置及wiki安装
由于本人是在root账户下执行,因此
1)首先将dokuwiki的目录所有者改为Web Server所在的用户和用户组(用户名为apache,组ID为48)
[root@izwz934uda0vhwlzenknpcz html]# chown -R apache:48 dokuwiki
2)打开网址http://IP/dokuwiki/install.php,进行dokuwiki的配置,如下图所示。
上述配置完成后,会在dokuwiki/conf目录下生成三个文件:local.php、users.auth.php和acl.auth.php。
3)步骤2完成后,删除掉install.php文件
[root@izwz934uda0vhwlzenknpcz dokuwiki]# rm -rf install.php
4)配置目录访问权限,保证wiki的数据安全
配置apache的httpd.conf(apache/conf/httpd.conf)文件,进行安全配置,
[root@izwz934uda0vhwlzenknpcz html]# vi /etc/httpd/conf/httpd.conf
添加如下几行:
<LocationMatch "dokuwiki/(data|conf|bin|inc)/">
order allow,deny
deny from all
satisfy all
</LocationMatch>
添加完毕后,执行以下命令重启Apache Web Server
在外网访问如下地址,如果出现以下结果,证明目录权限访问配置成功。
至此,wiki的基本安装已经全部结束,完成上述步骤后,可以看到如下的跳转页面。
第二部分:DokuWiki的配置
Dokuwiki的基本配置
为了优化Dokuwiki的中文使用,进行以下配置:
(解决中文乱码权威教程)
解决中文文件名乱码问题
[root@izwz934uda0vhwlzenknpcz dokuwiki]# vi conf/local.php
在文件末尾添加如下一行:
$conf['fnencode']= 'utf-8';
[root@izwz934uda0vhwlzenknpcz dokuwiki]# vi inc/pageutils.php
1)将函数
function utf8_encodeFN($file,$safe=true){
global $conf;
if($conf['fnencode'] == 'utf-8') return $file;
if($safe && preg_match('#^[a-zA-Z0-9/_\-\.%]+$#',$file)){
return $file;
}
if($conf['fnencode'] == 'safe'){
return SafeFN::encode($file);
}
$file = urlencode($file);
$file = str_replace('%2F','/',$file);
return $file;
}
修改为:
function utf8_encodeFN($file,$safe=true){
global $conf;
if($conf['fnencode'] == 'utf-8') return $file;
if($safe && preg_match('#^[a-zA-Z0-9/_\-\.%]+$#',$file)){
return $file;
}
if($conf['fnencode'] == 'safe'){
return SafeFN::encode($file);
}
// 添加这个if判定语句,以支持中文
if ($conf['fnencode']=='gbk'){
return mb_convert_encoding($file,'gbk','UTF-8');
}
$file = urlencode($file);
$file = str_replace('%2F','/',$file);
return $file;
}
2)将函数
function utf8_decodeFN($file){
global $conf;
if($conf['fnencode'] == 'utf-8') return $file;
if($conf['fnencode'] == 'safe'){
return SafeFN::decode($file);
}
return urldecode($file);
}
修改为:
function utf8_decodeFN($file){
global $conf;
if($conf['fnencode'] == 'utf-8') return $file;
if($conf['fnencode'] == 'safe'){
return SafeFN::decode($file);
}
// 添加这个if判定语句,以支持中文
if ($conf['fnencode']=='gbk'){
return mb_convert_encoding($file,'utf-8','gbk');
}
return urldecode($file);
}
Dokuwiki使用教程
Dokuwiki升级:参考官网文档
Dokuwiki引入新模板,进行样式修改:参考博客
Dokuwiki访问控制(ACL)设置,详见教程
中文乱码问题解决参考教程