Windows下用Nginx部署DokuWiki

DokuWiki 是一个使用,用途多样的开源 Wiki 软件,并且不需要数据库。部署Dokuwiki需要一个支持PHP的Webserver。通过nginx+php可以简单部署使用。
Nginx (“engine x”) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。
本文环境:windows10 64位+nginx1.11.7+php-5.6.29-Win32-VC11-x64

下载解压软件

用到的软件均是绿色版,不用安装解压即可使用:

修改PHP配置

将php.ini-dist或php.ini-development配置文件重命名为php.ini(该文件中分号开始行为注释内容),然后做如下设置:

  1. extension_dir = “C:/php5/ext”

  2. 取消下列设置的注释:

  extension=php_curl.dll
  extension=php_gd2.dll
  extension=php_mbstring.dll
  extension=php_mysql.dll
  extension=php_pdo_mysql.dll
  extension=php_pdo_odbc.dll
  extension=php_xmlrpc.dll

  1. 配置Session功能:

    在使用session功能时,必须配置session文件在服务器上的保存目录,否则无法使用session,在Windows 7上新建一个可读写的目录文件夹,此目录最好独立于WEB主程序目录之外,在D盘根目录上建立了phpsessiontmp目录,然后在php.ini配置文件中找到 ;session.save_path = “/tmp” 改成 session.save_path = “D:/phpsessiontmp”

  2. 配置PHP的文件上传功能

    同session一样,在使用PHP文件上传功能时,我们必须要指定一个临时文件夹以完成文件上传功能,否则文件上传功能会失败,我们仍然需要在Windows 7上建立一个可读写的目录文件夹,此处我在D盘根目录上建立了phpfileuploadtmp目录,然后在php.ini配置文件中找到 ;upload_tmp_dir = 改成 upload_tmp_dir = “D:/phpfileuploadtmp”

  3. 修改date.timezone

;date.timezone = 改成 date.timezone = Asia/Shanghai

修改Nginx配置

DokuWiki with nginx on Windows 有关于nginx的配置内容。
修改 E:\OneDrive\www\nginx-1.11.1\conf\nginx.conf 文件:

1
#E:\OneDrive\www\nginx-1.11.1\conf\nginx.conf
#user  nobody;
worker_processes  1;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        location ~ ^/dokuwiki/.*\.php {
            root           E:/OneDrive/www;	         
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_param  SCRIPT_FILENAME    E:/OneDrive/www$fastcgi_script_name;
            fastcgi_param  QUERY_STRING       $query_string;
            include        fastcgi_params;
        }
        # serve static files
        location ~ ^/dokuwiki/lib/  {
            root         E:/OneDrive/www;		
            expires 30d;
        }
         
        location ~ ^/dokuwiki/conf/ { deny all; }
        location ~ ^/dokuwiki/data/ { deny all; }
        location ~ /\.ht            { deny all; }
    }
}

编写启动批处理

这里有关于NGINX 跟 PHP 在 Windows 平台通过 FastCGI 对接的例子,此页面也有 RunHiddenConsole 的下载

1
2
3
4
5
6
REM E:\OneDrive\www\php.bat
ECHO Starting PHP FastCGI...
set PATH=E:\OneDrive\www\PHP;%PATH%
RunHiddenConsole.exe E:\OneDrive\www\php\php-cgi.exe -b 127.0.0.1:9000
ECHO Starting nginx...
cd /d E:\OneDrive\www\nginx-1.11.1 && start nginx.exe

运行

双击 E:\OneDrive\www\php.bat 会看到命令行一闪而过。
打开浏览器,访问

正在加载中……