如何在 Ubuntu 12.04 VPS 上使用 Nginx 安装 DokuWiki

金钱(警告)

** 状态:** 被贬值

如果您目前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议升级或迁移到支持的 Ubuntu 版本:

** 原因:** Ubuntu 12.04 已于 2017 年 4 月 28 日到期(EOL)并且不再收到安全补丁或更新。

** 相反,请参阅:** 此指南可能仍然有用作为参考,但可能不会在其他Ubuntu版本上工作. 如果可用,我们强烈建议使用为您正在使用的Ubuntu版本撰写的指南。

介绍


社区可编辑的文档项目提供了能够在贡献者之间分配工作负载的系统,可以公开或私下获取,并可以轻松扩展。

有许多不同的维基应用程序,每一个都有其优势,取决于您的需求。一个选择是 DokuWiki ,这是一个非常轻量级的维基,可以很容易地设置。DokuWiki使用一个简单的文件格式来存储其数据,因此不需要您维护数据库。

在本指南中,我们将讨论如何在 Ubuntu 12.04 VPS 上使用 Nginx 服务器安装 DokuWiki。

安装 Nginx 和 PHP


因此,我们可以放弃安装MySQL、MariaDB、PostgreSQL或其他关系式数据库管理系统,简单地安装和配置我们的Web服务器和处理语言。

安装 Web 服务器


对于我们的 Web 服务器,我们正在选择 Nginx. Nginx 很容易安装和配置,一旦你熟悉它的语法. 它也很轻,很适合我们的 DokuWiki 软件。

我们可以在 Ubuntu 的默认存储库中找到 Nginx. 现在安装它,使用 apt:

1sudo apt-get update
2sudo apt-get install nginx

然后我们可以通过发出这个命令启动服务器:

1sudo service nginx start

在您的浏览器中访问您的 Droplet 的 IP 地址或域名,以查看默认的 Nginx 页面。

server_ip_or_domain

Nginx default page

这会确保 Web 服务器已安装并正常运行。

安装和配置PHP


DokuWiki 是用 PHP 编写的,所以我们需要安装一些组件才能让它正常工作. 与 Apache 不同, Nginx 没有包含能够处理 PHP 处理的模块,因此,它会将此工作卸载到一个单独的专用组件上。

我们还将安装一个库,允许我们的PHP文件直接处理图像:

1sudo apt-get install php5-fpm php5-gd

我们需要在服务上加强一些安全性,以便当对不存在的PHP文件提出请求时,处理器不会简单地执行其他可能类似的文件。

打开使用 root 特权的配置文件:

1sudo nano /etc/php5/fpm/php.ini

搜索并调整cgi.fix_pathinfo参数,以便其读取如下内容:

1cgi.fix_pathinfo=0

保存并关闭文件,当你完成。

接下来,我们将更改我们的PHP处理器以使用插件搜索连接,而不是在本地界面上的端口。

1sudo nano /etc/php5/fpm/pool.d/www.conf

寻找倾听指令,并将其更改为使用插槽文件:

1listen = /var/run/php5-fpm.sock

保存并关闭文件。

现在,PHP侧的配置已经完成,重新启动服务,实现我们所做的更改:

1sudo service php5-fpm restart

配置 Nginx


虽然我们已经设置了我们的PHP处理器,但我们还没有告诉Nginx将PHP请求传递给该处理器。

首先,打开使用 root 特权的 Nginx 默认服务器封锁文件:

1sudo nano /etc/nginx/sites-available/default

随着评论被删除,这个文件看起来像这样的东西:

 1server {
 2    root /usr/share/nginx/www;
 3    index index.html index.htm;
 4
 5    server_name localhost;
 6
 7    location / {
 8        try_files $uri $uri/ /index.html;
 9    }
10
11    location /doc/ {
12        alias /usr/share/doc/;
13        autoindex on;
14        allow 127.0.0.1;
15        deny all;
16    }
17}

首先,我们要告诉它倾听端口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;
    }
. . .

下面,我们会发现另一个评论的区块,我们可以放弃评论,这将忽略Apache用于实现每个目录配置的.htaccess文件,因为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服务器来实现我们的新配置:

1sudo service nginx restart

在我们的服务器上测试PHP处理


在我们开始实际的DokuWiki配置之前,我们需要确保我们的服务器实际上可以处理PHP文件。

如果我们已正确配置我们的服务器,我们的PHP文件将简单地下载而不是处理。

首先,让我们在我们的服务器的文档根中创建一个PHP测试文件(/usr/share/nginx/www)。

1sudo sh -c 'echo "<?php phpinfo(); ?>" > /usr/share/nginx/www/info.php'

现在,我们所要做的就是通过输入我们的域名或IP地址来访问我们的网页浏览器中的这个文件,然后是路径/info.php:

server_domain_or_IP_address/info.php

如果你已经正确配置了一切,你的PHP脚本应该运行,显示一个看起来像这样的页面:

PHP info page

如果这是正确的,我们可以删除我们创建的文件,然后转到实际的维基安装:

1sudo rm /usr/share/nginx/www/info.php

安装和配置DokuWiki


现在我们已经正确设置了我们的Web服务器和PHP处理器,我们可以下载和安装DokuWiki。

在您的用户主目录中,我们可以通过输入以下命令下载最新稳定版本的 DokuWiki:

1cd ~
2wget http://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz

这将下载一个 tarball 到您的当前目录. 通过键入提取目录结构:

1tar xzvf dokuwiki-stable.tgz

我们现在可以通过键入删除 tarball:

1rm dokuwiki-stable.tgz

让我们将目录的名称更改为我们想要访问我们的wiki的路径,我们将使用这个指南的wiki:

1mv doku* wiki

我们应该将目录移动到我们的网页根。这将允许我们通过键入我们的域名,然后是‘/wiki’来访问我们的服务器。

1sudo mv wiki /usr/share/nginx/www/

在继续之前,我们需要采取一些额外的安全步骤,否则安装程序会抱怨它无法访问某些区域。

1cd /usr/share/nginx/www/wiki

网页流程需要在维基结构中访问某些文件和目录。

1sudo chown -R www-data data
2sudo chown www-data lib/plugins/
3sudo chown www-data conf

现在,我们已经准备好通过Web浏览器使用安装程序脚本来安装DokuWiki。

在您的浏览器中,前往您的域或IP地址,然后是维基子目录和install.php:

server_domain_or_IP_address/wiki/install.php

您将被介绍到 DokuWiki 安装页面:

DokuWiki installation page

这是您需要填写的唯一配置页面,以便开始。

要注意的一点是您设置的 ACL 策略,这将决定人们如何访问您的 wiki:

DokuWiki ACL Policy

点击底部的保存按钮,当你完成。

在此时,您的wiki已安装,您应该删除安装脚本以获得额外的安全性,在您的服务器上键入:

1sudo rm /usr/share/nginx/www/wiki/install.php

结论


您现在应该在您的系统上设置和运行一个wiki。DokuWiki可以轻松地使用插件和模板来扩展和主题化。通过登录到管理帐户并通过界面实施更改,可以轻松地添加内容和配置您的网站。

By Justin Ellingwood
Published At
Categories with 技术
Tagged with
comments powered by Disqus