DokuWikiで情報発信

個人での情報発信や社内での情報共有に便利なDokuWikiを紹介するサイトです。

ユーザ用ツール

サイト用ツール


サイドバー

目次

DokuWikiを理解

DokuWikiの構築

よく確認するページ

· 最終更新: 2021/02/13 by oreda admin



「インストール」に戻る

高負荷に耐えられるNginx+php-fpmでDokuwikiを使う準備

参考

PHPのインストール

DokuWikiの場合、PHPは、最低でも5.6以上が必要です。
できれば、7系を使いましょう。

CentOS7にPHPをインストール

# rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

php5.6をインストールする場合
# yum install --enablerepo=remi,remi-php56 php-cli php-mbstring php-gd php-fpm

php7.1をインストールする場合
# yum install --enablerepo=remi,remi-php71 php-cli php-mbstring php-gd php-fpm
PHPのバージョン確認
# php -v

Ubuntu20.04にPHPをインストール

# apt list php-fpm  <- 確認
# apt show php-fpm  <- 確認
# apt install php-fpm  <- インストール

# dpkg -l |grep php  <- 確認


Nginxのインストール

CentOS7にNginxインストール

Nginxのレポジトリ追加

# vi /etc/yum.repos.d/nginx.repo

以下の内容にする

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

nginxのインストール

# yum install nginx

Ubuntu20.04にNginxをインストール

# apt list nginx  <- 確認
# apt info nginx  <- 確認
# apt install nginx  <- インストール


設定

php設定(php.ini)

/etc/php.ini(CentOS)
/etc/php/7.4/fpm/php.ini (Ubuntu20.04)

確認
# grep -Ev "^;|^$" php.ini

バックアップ
# cp -p php.ini php.ini.org

編集
# vi php.ini
[PHP]
default_charset = UTF-8
short_open_tag = On
upload_max_filesize = 10M
post_max_size = 10M
memory_limit = 128M
expose_php = off         #phpのバージョンを隠す
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
[Date]
date.timezone = Asia/Tokyo


php-fpm設定(PHP FastCGI Process Manager)

/etc/php-fpm.d/www.conf (CentOS)

/etc/php/7.4/fpm/php-fpm.conf (Ubuntu20.04)
/etc/php/7.4/fpm/pool.d/www.conf (Ubuntu20.04)

; RPM: apache Choosed to be able to access some dir as httpd
user = nginx
; RPM: Keep a group allowed to write in log dir.
group = nginx

;.htmlファイルもphpとする
security.limit_extensions = .php .html


TCPの場合

www.conf

listen = 127.0.0.1:9000

TCPがリッスンしているかの確認(他の記述は下記参照)

# netstat -an |grep 127.0.0.1:9000


SOCKETの場合

同じサーバ上の場合、SOCKETの方が速い。

www.conf

listen = /run/php/php7.4-fpm.sock
listen.owner = www-data
listen.group = www-data

SOCKETの確認

# netstat -a --unix |grep php
unix  2      [ ACC ]     STREAM     LISTENING     211772   /run/php/php7.4-fpm.sock

SOCKETの場合の/etc/nginx/nginx.conf。(他の記述は下記参照)

fastcgi_pass unix:/run/php/php7.4-fpm.sock;


nginx設定

サーバ全体の設定(/etc/nginx/nginx.conf)

サーバ全体の設定

http {
        #nginxのバージョンを隠蔽
        server_tokens off;


IPで接続した時の例

/etc/nginx/conf.d/default.conf (RHEL/CentOS)
/etc/nginx/sites-available/default (Ubuntu)

IPで接続した時の例です。
通常の80ポートではなく、今回は10080ポートにしてみましょう。

ディレクトリ構成とアクセス方法
/usr/share/nginx/html/
                      site1/dokuwiki/  # http://192.168.0.10:10080/site1/dokuwiki/doku.phpでアクセス
                      site2/dokuwiki/  # http://192.168.0.10:10080/site2/dokuwiki/doku.phpでアクセス
Nginx設定ファイル(default.conf)
server {
    listen  10080 default_server;
    server_name localhost 192.168.0.10;

    root    /usr/share/nginx/html;
    index   index.php index.html doku.php;

    #Basic認証
    #auth_basic "Restricted";
    #auth_basic_user_file /etc/nginx/htpasswd;

    location ~ .(php|html|htm)$ {
        //fastcgi_pass    127.0.0.1:9000;
        fastcgi_pass    unix:/run/php/php7.4-fpm.sock;
        fastcgi_index   index.php;
        fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include         fastcgi_params;
    }

    location ~ /\.ht {
        deny  all;
    }

    ## /dokuwiki/
    rewrite ^(/dokuwiki/)_media/(.*) $1lib/exe/fetch.php?media=$2 last;
    rewrite ^(/dokuwiki/)_detail/(.*) $1lib/exe/detail.php?media=$2 last;
    rewrite ^(/dokuwiki/)_export/([^/]+)/(.*) $1doku.php?do=export_$2&id=$3 last;

    location /dokuwiki/ {
        if (!-f $request_filename) {
            rewrite ^(/dokuwiki/)(.*)?(.*)  $1doku.php?id=$2&$3 last;
            rewrite ^(/dokuwiki/)$ $1doku.php last;
        }
    }

    location ~ ^/dokuwiki/(data|conf|bin|inc)/ {
        deny all;
    }

    location ~ ^/dikuwiki/lib/^((?!php).)*$ {
        root html/dokuwiki/lib;
        expires 30d;
    }

}


ドメインごとに設定例(/etc/nginx/conf.d/test1.conf)

ドメインごとに設定ファイルの例

ディレクトリ構成とアクセス方法
/usr/share/nginx/html/test1/dokuwiki

http://test1.example.com/でアクセス
Nginx設定ファイル(test1.conf)
server {
    listen   80;
    server_name  test1.example.com;

    access_log  /var/log/nginx/test1.access.log;
    error_log   /var/log/nginx/test1.error.log;

    root    /usr/share/nginx/html/test1/dokuwiki;
    index   index.html index.php doku.php;

    #Basic認証
    #auth_basic "Restricted";
    #auth_basic_user_file /etc/nginx/htpasswd;

    #maximum file upload size is 4MB - change accordingly if needed
    client_max_body_size 4M;
    client_body_buffer_size 128k;

    rewrite ^(/)_media/(.*) $1lib/exe/fetch.php?media=$2 last;
    rewrite ^(/)_detail/(.*) $1lib/exe/detail.php?media=$2 last;
    rewrite ^(/)_export/([^/]+)/(.*) $1doku.php?do=export_$2&id=$3 last;

    location / {
        if (!-f $request_filename) {
            rewrite ^(/)(.*)?(.*)  $1doku.php?id=$2&$3 last;
            rewrite ^(/)$ $1doku.php last;
        }
    }

    location ~ \.php$ {
        fastcgi_pass    127.0.0.1:9000;
        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;
    }

    location ~ ^/lib/^((?!php).)*$ {
        root html/dokuwiki/lib;
        expires 30d;
    }

    gzip on;
    gzip_types image/png image/gif image/jpeg text/javascript text/css;
    gzip_min_length 1000;
    gzip_proxied any;
    gunzip on;

}


Configのテスト

# nginx -t


起動

起動

# systemctl stop firewalld.service   <- CentOS7の場合
# systemctl start nginx.service
# systemctl start php-fpm.service

自動起動設定

# systemctl disalbe firewalld.service   <- CentOS7の場合
# systemctl enable nginx.service
# systemctl enable php-fpm.service


自動起動の確認

# systemctl list-unit-files --type=service | egrep "php|nginx"
nginx.service                          enabled         enabled
php7.4-fpm.service                     enabled         enabled
phpsessionclean.service                static          enabled


動作確認

phpが動作することを確認

test.php

<?php phpinfo(); ?>


参考




· 最終更新: 2021/02/13 by oreda admin

ページ用ツール