介绍
在过去十年里,维基风格的文档越来越受欢迎。 社区可编辑的文档项目提供了一个可以在贡献者之间分配工作负载的系统,可以公开或私人访问,并且可以轻松扩展。
有许多不同的wiki应用程序,每个都有自己的优势,根据您的需要。 一个选择是DokuWiki的 ,这是可以容易地建立一个非常轻量的wiki。 DokuWiki使用简单的文件格式来存储其数据,因此它不需要您维护数据库。 这使迁移和缩放微不足道。
在本指南中,我们将讨论如何在Ubuntu 12.04 VPS上安装DokuWiki和Nginx服务器。
安装Nginx和PHP
正如我们上面提到的,DokuWiki不依赖像许多维基的数据库。 因此,我们可以放弃安装MySQL,MariaDB,PostgreSQL或其他关系数据库管理系统,只需安装和配置我们的Web服务器和处理语言。
安装Web服务器
对于我们的Web服务器,我们选择Nginx。 Nginx易于安装和配置,一旦你熟悉它的语法。 它也非常轻巧,与我们的DokuWiki软件很好地匹配。
我们可以在Ubuntu的默认存储库中找到Nginx。 现在安装,用apt:
sudo apt-get update
sudo apt-get install nginx
然后,我们可以通过发出以下命令启动服务器:
sudo service nginx start
在浏览器中访问您的Droplet的IP地址或域名,以查看默认的Nginx页面。
server_ip_or_domain
这将验证Web服务器是否已安装并正常工作。
安装和配置PHP
DokuWiki是用PHP编写的,所以我们需要安装一些组件,以使它工作得很好。 与Apache不同,Nginx不包括可以处理PHP处理的模块,因此,它将该工作卸载到单独的专用组件上。
我们可以从apt安装。 我们还将安装一个库,它将允许我们的PHP文件直接处理图像:
sudo apt-get install php5-fpm php5-gd
我们需要收紧服务上的一些安全性,以便在请求不存在的PHP文件时,处理器不会简单地执行可能类似的其他文件。
使用root权限打开配置文件:
sudo nano /etc/php5/fpm/php.ini
搜索并调整cgi.fix_pathinfo
参数,以便它读取如下:
cgi.fix_pathinfo=0
完成后保存并关闭文件。
接下来,我们将更改PHP处理器,使用套接字而不是本地接口上的端口来查找连接。 使用root权限打开此文件:
sudo nano /etc/php5/fpm/pool.d/www.conf
认准listen
指令,并改变它使用一个套接字文件:
listen = /var/run/php5-fpm.sock
保存并关闭文件。
现在,PHP端的配置已经完成。 重新启动服务以实现我们所做的更改:
sudo service php5-fpm restart
配置Nginx
虽然我们已经设置了我们的PHP处理器,我们还没有告诉Nginx将PHP请求传递给该处理器。 我们将必须配置此和一些特定于我们的DokuWiki安装的细节。
首先打开具有root权限的Nginx默认服务器块文件:
sudo nano /etc/nginx/sites-available/default
删除注释后,此文件看起来像这样:
server {
root /usr/share/nginx/www;
index index.html index.htm;
server_name localhost;
location / {
try_files $uri $uri/ /index.html;
}
location /doc/ {
alias /usr/share/doc/;
autoindex on;
allow 127.0.0.1;
deny all;
}
}
我们将对此进行大幅修改。 首先,我们想告诉它听顶部的80端口。 您可以从文件中取消注释该行:
server { listen 80; root /usr/share/nginx/www; index index.html index.htm; . . .
接下来,我们需要修复索引以首先查找PHP索引文件,然后在尝试查找HTML文件时,请求目录:
server { listen 80; root /usr/share/nginx/www; index index.php index.html index.htm; . . .
我们要改变服务器的名称localhost
与服务器相关联的域名或IP地址。 这将允许它正确匹配网络请求:
. . . root /usr/share/nginx/www; index index.php index.html index.htm; server_name server_domain_or_IP_address; location / { . . .
我们可以注释掉文档部分,因为此时配置为只接受来自服务器本身的请求。
我们将要启用一些错误处理。 这些行应该已经在您的文件中,您可以取消注释它们:
. . . # location /doc/ { # alias /usr/share/doc/; # autoindex on; # allow 127.0.0.1; # deny all; # } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/www; } . . .
在错误部分下,您可以设置一个位置块,将我们的PHP文件交给我们的处理器。 这在某种程度上已经在注释掉的部分,但你应该注意正确配置。
特别是,我们有一个try_files
指令,与我们的PHP的配置选择丢弃的不是精确的匹配PHP文件一起去。 我们还设置了fastcgi_param
指令正确的脚本名传递给我们的处理器来执行。
. . . location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } . . .
下面这个,我们会发现另一个注释掉的块,我们可以取消注释。 这将忽略.htaccess
使用Apache来实现每目录配置,因为Nginx的不使用这些文件。
此外,我们将借此机会添加一个附加块,拒绝访问DokuWiki在内部使用但不应从网络访问的许多目录:
. . . location ~ /\.ht { deny all; } location ~ /(data|conf|bin|inc)/ { deny all; } }
这将带你到我们的配置文件的末尾。 此时,您的文件应类似于此文件:
server { listen 80; root /usr/share/nginx/www; index index.php index.html index.htm; server_name server_domain_or_IP_address; location / { try_files $uri $uri/ /index.html; } error_page 404 /404.html; error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/www; } location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } location ~ /(data|conf|bin|inc)/ { deny all; } }
保存并关闭文件。
现在,我们需要重新启动我们的Web服务器来实现我们的新配置:
sudo service nginx restart
在我们的服务器上测试PHP处理
在我们开始实际的DokuWiki配置之前,我们需要确保我们的服务器可以实际处理PHP文件。
如果我们没有正确地配置我们的服务器,我们的PHP文件只会被下载,而不是处理。 这当然不是我们想要的。
首先,让我们创建我们的服务器的文档根目录(一个PHP测试文件/usr/share/nginx/www
)。 此文件将包含一个简单的PHP函数,显示有关我们的服务器的信息:
sudo sh -c 'echo "<?php phpinfo(); ?>" > /usr/share/nginx/www/info.php'
现在,我们要做的是在我们的网络浏览器中访问这个文件,输入我们的域名或IP地址,然后是路径“/info.php”:
server_domain_or_IP_address/info.php
如果你正确配置了一切,你的PHP脚本应该执行,显示一个页面看起来像这样:
如果这个工作正常,我们可以删除我们创建的文件,并继续实际的wiki安装:
sudo rm /usr/share/nginx/www/info.php
安装和配置DokuWiki
现在我们已经正确设置了我们的Web服务器和PHP处理器,我们可以下载并安装DokuWiki。
在用户的主目录中,我们可以通过键入以下命令下载DokuWiki的最新稳定版本:
cd ~
wget http://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz
这将下载tarball到您当前的目录。 通过键入以下内容来提取目录结构:
tar xzvf dokuwiki-stable.tgz
我们现在可以通过键入以下内容删除tarball:
rm dokuwiki-stable.tgz
让我们将目录的名称更改为任何我们想要访问wiki的路径。 我们将使用wiki
本指南:
mv doku* wiki
我们应该将我们的目录移动到我们的web根目录。 这将允许我们通过输入我们的域名之后进入我们的服务器/wiki
。 现在移动目录:
sudo mv wiki /usr/share/nginx/www/
在我们继续之前,我们需要执行一些额外的安全步骤,否则安装程序会抱怨它无法访问某些区域。 切换到刚刚移动的目录:
cd /usr/share/nginx/www/wiki
Web进程需要对wiki结构中的一些文件和目录具有特定的访问权限。
sudo chown -R www-data data
sudo chown www-data lib/plugins/
sudo chown www-data conf
现在,我们准备通过使用安装程序脚本的Web浏览器安装DokuWiki。
在浏览器中,转到您的域名或IP地址,随后维基子目录和install.php
:
server_domain_or_IP_address/wiki/install.php
将显示DokuWiki安装页面:
这是您需要填写以开始使用的唯一配置页。 创建标题并创建管理帐户。
有一件事要注意的是你设置的ACL策略。 这将决定人们如何访问您的维基:
完成后,单击底部的“保存”按钮。
此时,您的wiki已安装。 您应该删除安装脚本以提高安全性。 在您的服务器上,键入:
sudo rm /usr/share/nginx/www/wiki/install.php
结论
您现在应该在您的系统上设置并运行Wiki。 DokuWiki可以轻松地扩展和主题使用插件和模板分别。 通过登录管理帐户并通过界面实施更改,可轻松添加内容和配置您的网站。