DokuWiki

サーバのインストール (nginx 編)

  1. nginx をインストールする。
    $ sudo add-apt-repository ppa:nginx/stable
    $ sudo apt update
    $ sudo apt install nginx php-fpm
  2. 自動起動設定する。
    $ sudo systemctl enable nginx
  3. 設定ファイルを編集する。
    $ sudoedit /etc/nginx/sites-available/default

    server{…} 内を以下に変更する。

    • 【追記】エラーページで nginx のバージョンを表示しない。
      server_tokens off;
    • 【変更】ルートディレクトリを必要に応じて変更する。
      root /var/www/html;
    • 【変更】エラーページを dokuwiki のエラーページに変更する
      location / {
              # First attempt to serve request as file, then
              # as directory, then fall back to displaying a 404.
              try_files $uri $uri/ @dokuwiki;
      }
    • 【追記】URL 書き換えなどの設定を追記する。
      #Remember to comment the below out when you're installing, and uncomment it when done.
      location ~ /(data/|conf/|bin/|inc/|install.php) { deny all; }
      
      location ~ ^/lib.*\.(js|css|gif|png|ico|jpg|jpeg)$ {
          expires 365d;
      }
      
      location @dokuwiki {
          # rewrites "doku.php/" out of the URLs if you set the userwrite setting to .htaccess in dokuwiki config page
          rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
          rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
          rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
          rewrite ^/(.*) /doku.php?id=$1&$args last;
      }
      location ~ \.php$ {
          try_files $uri $uri/ /doku.php;
          include fastcgi_params;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          fastcgi_param REDIRECT_STATUS 200;
          fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
          # fastcgi_pass unix:/var/run/php5-fpm.sock; #old php version
      }
  4. 以下の内容の dokuwiki のトップディレクトリにて .htaccess を新規作成する (URL の区切り文字をスラッシュにする場合に必要)。
    $ sudoedit .htaccess
    <Files ~ "^([\._]ht|README$|VERSION$|COPYING$)">
        Order allow,deny
        Deny from all
    </Files>
    
    RewriteEngine on
    RewriteRule ^_media/(.*)              lib/exe/fetch.php?media=$1  [QSA,L]
    RewriteRule ^_detail/(.*)             lib/exe/detail.php?media=$1  [QSA,L]
    RewriteRule ^_export/([^/]+)/(.*)     doku.php?do=export_$1&id=$2  [QSA,L]
    RewriteRule ^$                        doku.php  [L]
    RewriteCond %{REQUEST_FILENAME}       !-f
    RewriteCond %{REQUEST_FILENAME}       !-d
    RewriteRule (.*)                      doku.php?id=$1  [QSA,L]
    RewriteRule ^index.php$               doku.php
    
    RewriteBase /                 # sub.example.com
    #RewriteBase /test/site       # example.com/test/site/
    #RewriteBase /test/dokuwiki       # example.com/test/dokuwiki/
  5. nginx の再起動をする。
    $ sudo systemctl restart nginx
    1. 場合によっては php7.0 の再起動も必要かもしれない。
      $ sudo systemctl restart php7.0-fpm

dokuwiki 本体のインストール

  1. サーバ環境の確認
    • apache や lighttpd、nginx、Abyss などの web サーバ環境
    • php 5.3.3 以上
  2. http://download.dokuwiki.org/ からダウンロード
    • Version: Stable
    • Languages: en, ja (Toggle all ボタンを押して全て無効化してから作業すると楽)
    • 下の「Start Download」ボタンでダウンロード開始
  3. 得られたファイルをウェブ表示可能なディレクトリに展開
  4. パーミッションの変更
    以下のいずれかを行う
    • 誰でもアクセス可にする
      $ chmod -R 777 data
      $ chmod 777 conf
      $ chmod 666 conf/*
    • Web のみからアクセスする
      $ chown -R 777 data
      $ chown -R www-data. conf
  5. ウェブ上から install.php にアクセス (パーミッションが不足しているとここで注意される)
  6. 必要事項を入力して、Wiki ライフをスタート

インストール方法のパーミッションの変更を行う。

  • インストール時に Wiki の公開や編集権限の設定ができる
    • オープンWiki(全ての人に、閲覧・書き込み・アップロードを許可)
    • パブリックWiki(閲覧は全ての人が可能、書き込み・アップロードは登録ユーザのみ
    • クローズドWiki(登録ユーザにのみ使用を許可)
  • これを途中で変更するには、「管理」→「アクセスコントロール管理」で編集する
  • デフォルトの設定は以下の通り
    • オープンWiki
      • ページ/名前空間(*), ユーザ/グループ(@ALL), 権限(アップロード)
    • パブリックWiki
      • ページ/名前空間(*), ユーザ/グループ(@ALL), 権限(読取)
      • ページ/名前空間(*), ユーザ/グループ(@user), 権限(アップロード)
    • クローズドWiki
      • ページ/名前空間(*), ユーザ/グループ(@ALL), 権限(なし)
      • ページ/名前空間(*), ユーザ/グループ(@user), 権限(アップロード)
  1. lib/tpl のパーミッションを有効にする
    以下のいずれかを実行
    • 誰でもアクセス可能にする
      $ chmod 777 lib/tpl
    • Web でのみのアクセス可能にする
      $ chown -R www-data. lib/tpl
  2. dokuwiki ページの上の「管理」をクリック
  3. 「拡張機能管理」をクリックして、「検索とインストール」「手動インストール」などでインストールする
  1. lib/plugins のパーミッションを有効にする
    以下のいずれかを実行
    • 誰でもアクセス可能にする
      $ chmod 777 lib/plugins
    • Web でのみのアクセス可能にする
      $ chown -R www-data. lib/plugins
  2. dokuwiki ページの上の「管理」をクリック
  3. 「拡張機能管理」をクリックして、「検索とインストール」「手動インストール」などでインストールする
  • /var/log/lighttpd/error.log あたりに FastCGI-stderr: PHP Fatal error: Uncaught Error: Call to undefined function utf8_decode() がある場合、php7 側の問題 (utf8_decode() が別パッケージに分離されたのが原因) らしい
  • 解決方法
    $ sudo apt-get install php7.0-xml