dragon image みちのぶのねぐら

dokuwiki on Nginx

Update: 2017-11-26

久しぶりにサイトリニューアルしてみようかと思い立って、 Nginx に dokuwiki を載せてみました。 サイト全体ではなくサブディレクトリに dokuwiki を置きます。 OS は Debian 9 です。

必要なパッケージは nginx php-fpm php-xml です。 インストール後に service --status-allnginxphp7.0-fpm が動いているのを確認します。 dokuwiki は Debian のパッケージは使わずに手動で導入しました。コピーするだけだし。 FPM や URL Rewrite は https://www.dokuwiki.org/install:nginx を参考に以下のような感じで。 仕事では Nginx をリバースプロキシに使ったことしかなくて FastCGI の設定は初めてなので、不要な設定があるかもしれません。

  index index.html index.htm doku.php;

  location / {
    try_files $uri $uri/ =404;
  }

  location /tec/ { try_files $uri $uri/ @tec; }
  location @tec {
    rewrite ^/tec/_media/(.*) /tec/lib/exe/fetch.php?media=$1 last;
    rewrite ^/tec/_detail/(.*) /tec/lib/exe/detail.php?media=$1 last;
    rewrite ^/tec/_export/([^/]+)/(.*) /tec/doku.php?do=export_$1&id=$2 last;
    rewrite ^/tec/(.*) /tec/doku.php?id=$1&$args last;
  }
  location ~ ^/tec/(data/|conf/|bin/|inc/|install.php) { deny all; }
  location ~ ^/tec/.*\.php$ {
    try_files $uri $uri/ /tec/doku.php;

    #include snippets/fastcgi-php.conf;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    #try_files $fastcgi_script_name =404;
    set $path_info $fastcgi_path_info;
    fastcgi_param PATH_INFO $path_info;
    fastcgi_index index.php;
    include fastcgi.conf;

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param REDIRECT_STATUS 200;
    fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
  }

snippets/fastcgi-php.conf は設定 try_files の競合が起きたので、それ以外の内容をコピーしました。 dokuwiki のドキュメントには image medeia が云々と書かれていますが、最新版では何もしなくてだいじょうぶそうです。

あとは、同様の設定を別のサブフォルダに入れて動くかどうかですね。

Tag: nginx dokuwiki php fpm fastcgi debian rewrite