DokuWikiで情報発信

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

ユーザ用ツール

サイト用ツール


Top     SiteMap

server:nginx.html



「インストール」に戻る

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

参考

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とPHP関連のインストール

# yum install nginx
# yum install php-cli php-mbstring php-fpm


設定

php設定

/etc/php.ini

確認
# 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

; 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


nginx設定

/etc/nginx/nginx.conf

サーバ全体の設定

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


IPで接続した時の例(/etc/nginx/conf.d/default.conf)

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;


    #/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 ~ .(php|html|htm)$ {
        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 ~ ^/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;
    }

}


Configのテスト

# nginx -t


起動

起動

# systemctl stop firewalld.service
# systemctl start nginx.service
# systemctl start php-fpm.service

自動起動設定

# systemctl disalbe firewalld.service
# systemctl enable nginx.service
# systemctl enable php-fpm.service


動作確認

phpが動作することを確認

test.php

<?php phpinfo(); ?>


参考




server/nginx.html.txt · 最終更新: 2017/09/23 by oreda admin