由于项目开发正规化和流程化的需要,使用dokuwiki构建团队的知识库,用于存放项目管理、开发、运维要点以及一些探索性的技术知识总结。以下是关于如何在centos6.8上安装dokuwiki的详细介绍,包括安装支持php7的apache服务器,部署dokuwiki以及控制网络访问安全。
已经安装yum的话,直接跳过。若在安装php7的过程中,遇到Error: xz compression not available,那么照此重装python和yum。
yum install epel-release
yum update
yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel readline readline-devel libxslt libxslt-devel
yum -y install httpd httpd-devel
# 安装libmcrypt
wget http://www.atomicorp.com/installers/atomic
sh ./atomic
yum install php-mcrypt libmcrypt libmcrypt-devel
wget -O php7.tar.gz http://cn2.php.net/get/php-7.1.1.tar.gz/from/this/mirror
若想使用libphp7.so运行php,须指定–with-apxs2=/path/to/httpd/2.2/bin/apxs进行编译。
否则,得用Apache提供的其他方式运行,比如:
1.使用mod_fcgid配合php-cgi运行(类似IIS + PHP-CGI)
2.使用mod_proxy_fcgi配合php-fpm运行(类似Nginx + PHP-FPM)
tar -zxvf php7.tar.gz
mv php-7.1.1 php
cd php
./configure --prefix=/usr/local/php --with-config-file-path=/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-soap --with-apxs2=/usr/sbin/apxs --with-libxml-dir --with-xmlrpc --with-openssl --with-mcrypt --with-mhash --with-pcre-regex --with-sqlite3 --with-zlib --enable-bcmath --with-iconv --with-bz2 --enable-calendar --with-curl --with-cdb --enable-dom --enable-exif --enable-fileinfo --enable-filter --with-pcre-dir --enable-ftp --with-gd --with-openssl-dir --with-jpeg-dir --with-png-dir --with-zlib-dir --with-freetype-dir --enable-gd-native-ttf --enable-gd-jis-conv --with-gettext --with-gmp --with-mhash --enable-json --enable-mbstring --enable-mbregex --enable-mbregex-backtrack --with-libmbfl --with-onig --enable-pdo --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-zlib-dir --with-pdo-sqlite --with-readline --enable-session --enable-shmop --enable-simplexml --enable-sockets --enable-sysvmsg --enable-sysvsem --enable-sysvshm --enable-wddx --with-libxml-dir --with-xsl --enable-zip --enable-mysqlnd-compression-support --with-pear --enable-opcache
如果configure抛出以下错误:
Sorry, I cannot run apxs. Possible reasons follow:
- Perl is not installed
- apxs was not found. Try to pass the path using --with-apxs2=/path/to/apxs
- Apache was not built using --enable-so (the apxs usage page is displayed)
The output of /usr/sbin/apxs follows: ./configure: line 6187:
/usr/sbin/apxs: No such file or directory configure: error: Aborting
根据提示信息,修改–with-apxs2=/path/to/apxs,运行"find / -name apxs"找到apxs的路径修改即可。
make && make install
vim /etc/profile
>> PATH=$PATH:/usr/local/php/bin
>> export PATH
source /etc/profile
查看安装是否成功。
php -v
httpd是apache(http server 1.0)升级到2.0后换了个新名字,是被广泛使用的开源web服务器。以下配置以版本2.2为例。
更改主配置文件 /etc/httpd/conf/httpd.conf如下:
Listen 80 #监听本机所有IP的80端口
Listen 127.0.0.1:79 #监听localhost的79端口
KeepAlive On #打开长连接
DocumentRoot "/var/www/html" #设置web站点目录
Options None
AllowOverride None
Order allow,deny
Allow from all
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
DirectoryIndex index.html index.php
LoadModule php7_module modules/libphp7.so
在默认的Web站点目录DocumentRoot /var/www/html下生成探针文件info.php:
service httpd start
在浏览器中输入http://ip:port/info.php,如果出现以下页面则说明httpd已成功支持php7。
从https://download.dokuwiki.org/下载dokuwiki-stable.tgz压缩包,解压到/var/www/html。
cd /var/www/hmlt
wget https://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
tar -zxvf dokuwiki-stable.tgz
chown -R apache:root /var/www/html/dokuwiki
chmod -R 755 /var/www/html/dokuwiki/
find /var/www/html/dokuwiki/ -type d -exec chmod 775 {} \;
设置权限后,在浏览器中输入http://localhost/dokuwiki/install.php,安装完成后删除install.php。
dokuiwiki官网建议以下目录禁止从网络直接访问:
要检查你是否需要调整访问权限,你可以试着访问http://yourserver.com/data/pages/wiki/dokuwiki.txt。你应该无法以这种方法访问到该文件(https://www.dokuwiki.org/start?id=zh:security)。
否则,在主控制文件中添加以下LocationMatch规则,并重启httpd服务。
order allow,deny
deny from all
satisfy all
找到inc目录下的pageutils.php,修改两个函数utf8_encode()和utf8_decode()。
vi inc/pageutils.php
/function utf8_encode
注释以下两行:
$file = urlencode($file);
$file = str_replace('%2F','/',$file);
/function utf8_decode
将最后行return urldecode($file);替换成
return $file;