如何在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 可以分别使用插件和模板轻松扩展和主题化。 通过登录管理帐户并通过界面实施更改,可以轻松添加内容和配置您的站点。

贾斯汀·艾林伍德