如何在Ubuntu12.04VPS上使用Nginx安装DokuWiki
状态: 已弃用
本文介绍了不再受支持的 Ubuntu 版本。 如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:
原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.
请参阅: 本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。
介绍
在过去十年中,Wiki 风格的文档越来越流行。 社区可编辑的文档项目提供了一个系统,可以在贡献者之间分配工作量,可以公开或私人访问,并且可以轻松扩展。
有许多不同的 wiki 应用程序,每个应用程序都有自己的优势,具体取决于您的需求。 一个选择是 DokuWiki,这是一个非常轻量级的 wiki,可以轻松设置。 DokuWiki 使用简单的文件格式来存储其数据,因此不需要您维护数据库。 这使得迁移和扩展变得微不足道。
在本指南中,我们将讨论如何在 Ubuntu 12.04 VPS 上使用 Nginx 服务器安装 DokuWiki。
安装 Nginx 和 PHP
正如我们上面提到的,DokuWiki 不像许多 wiki 那样依赖数据库。 因此,我们可以放弃安装 MySQL、MariaDB、PostgreSQL 或其他关系数据库管理系统,而只需安装和配置我们的 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 端口。 您可以简单地从文件中取消注释该行:
服务器{听80; root /usr/share/nginx/www; index index.html index.htm;
. . .
接下来,当请求目录时,我们需要先修复索引以查找 PHP 索引文件,然后再尝试查找 HTML 文件:
服务器{听80; root /usr/share/nginx/www; index <span class="highlight">index.php</span> index.html index.htm;
. . .
我们应该将服务器名称从 localhost
更改为与您的服务器关联的域名或 IP 地址。 这将允许它正确匹配 Web 请求:
. . . 根 /usr/share/nginx/www; 索引 index.php index.html index.htm; server_name <span class="highlight">server_domain_or_IP_address</span>; location / {
. . .
我们可以注释掉文档部分,因为此时它被配置为只接受来自服务器本身的请求。
我们将要启用一些错误处理。 这些行应该已经在您的文件中,您可以简单地取消注释它们:
. . . #位置 /doc/ { #别名 /usr/share/doc/; #自动索引开启; #允许 127.0.0.1; #全部拒绝; # } <span class="highlight">error_page 404 /404.html;</span> <span class="highlight">error_page 500 502 503 504 /50x.html;</span> <span class="highlight">location = /50x.html {</span> <span class="highlight">root /usr/share/nginx/www;</span> <span class="highlight">}</span>
. . .
在错误部分下,您可以设置一个位置块,将我们的 PHP 文件交给我们的处理器。 这在注释掉的部分中已经存在,但您应该注意正确配置它。
特别是,我们有一个 try_files
指令与我们的 PHP 配置选择一起丢弃不完全匹配的 PHP 文件。 我们还设置了一个 fastcgi_param
指令来将正确的脚本名称传递给我们的处理器来执行。
. . . 位置 ~ .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; 包括 fastcgi_params; } 。 . .
在此下方,我们将找到另一个可以取消注释的已注释掉的块。 这将忽略 Apache 用于实现每个目录配置的 .htaccess
文件,因为 Nginx 不使用这些文件。
此外,我们将借此机会添加一个附加块,该块拒绝访问 DokuWiki 内部使用的许多目录,但这些目录不应从 Web 访问:
. . . 位置 ~ /.ht {全部拒绝; } <span class="highlight">location ~ /(data|conf|bin|inc)/ {</span> <span class="highlight">deny all;</span> <span class="highlight">}</span>
}
这应该带您到我们的配置文件的末尾。 此时,您的文件应类似于此文件:
服务器{听80; root /usr/share/nginx/www; index index.php index.html index.htm; server_name <span class="highlight">server_domain_or_IP_address</span>; 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 文件。
如果我们 not 正确配置了我们的服务器,我们的 PHP 文件将被简单地下载而不是处理。 这当然不是我们想要的。
首先,让我们在服务器的文档根目录 (/usr/share/nginx/www
) 中创建一个 PHP 测试文件。 该文件将包含一个简单的 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 地址,然后是 wiki 子目录和 install.php
:
server_domain_or_IP_address /wiki/install.php
您将看到 DokuWiki 安装页面:
这是您开始时需要填写的唯一配置页面。 想出一个标题并创建一个管理帐户。
要注意的一件事是您设置的 ACL 策略。 这将决定人们如何访问您的 wiki:
完成后点击底部的“保存”按钮。
至此,您的 wiki 已安装。 您应该删除安装脚本以获得额外的安全性。 在您的服务器上,键入:
sudo rm /usr/share/nginx/www/wiki/install.php
结论
您现在应该在您的系统上设置并运行一个 wiki。 DokuWiki 可以分别使用插件和模板轻松扩展和主题化。 通过登录管理帐户并通过界面实施更改,可以轻松添加内容和配置您的站点。