Pukiwikiについて



●インストール方法

 参考URL:Wiki構築 Pukiwiki
 参考URL:はじめての自宅サーバ構築 - Fedora/CentOS -
 参考URL:システム奮闘記:その52 Pukiwiki設定入門

 Wikiを使いたいので、CentOS 7にインストールします。
 最新版をPukiWikiからダウンロードします。
 作業ディレクトリを/usr/local/srcとしています。
# cd /usr/local/src
# sha256sum pukiwiki-1.5.4_utf8.zip 
cdb9298a1a1f9395c3fa0252cdaa7d80858ea40cf9044c6ac2edf68b97eef329  pukiwiki-1.5.4_utf8.zip
# unzip pukiwiki-1.5.4_utf8.zip
# ls pukiwiki-1.5.4_utf8
COPYING.txt          UPDATING.txt  default.ini.php  ja.lng.php        rules.ini.php
INSTALL.txt          attach        diff             keitai.ini.php    skin
README.en.txt.zip    backup        en.lng.php       lib               wiki
README.txt           cache         image            plugin            wiki.en.zip
UPDATING.en.txt.zip  counter       index.php        pukiwiki.ini.php
# mv pukiwiki-1.5.4_utf8 pukiwiki
# cp -R pukiwiki /var/www/html/
# chown -R apache:apache /var/www/html/pukiwiki/
 管理者及び利用者のパスワードをMD5ハッシュ値で生成します。
管理者パスワードの生成(MD5アルゴリズム)
(下記の「password」文字列を任意のパスワード文字列に変更して下さい。)
# echo -n password | md5sum
5f4dcc3b5aa765d61d8327deb882cf99  -

認証ユーザパスワードの生成(MD5アルゴリズム)
(下記の「himitsu」文字列を任意のパスワード文字列に変更して下さい。)
# echo -n himitsu | md5sum
f1a0e73e5d7fc293952d380e32fda73c  -
 各々の実行結果をメモしておいてください。

 pukiwikiの設定ファイルの編集します。
# vi /var/www/html/pukiwiki.ini.php
管理者名の設定
// Site admin's name (CHANGE THIS)
$modifier = '管理者';

管理者のWebサイトURLを設定
// Site admin's Web page (CHANGE THIS)
$modifierlink = 'https://www.bigbang.mydns.jp/pukiwiki/';

管理者パスワードの設定(上記のMD5で生成した実行結果)
// Default: always fail
$adminpass = '{x-php-md5}5f4dcc3b5aa765d61d8327deb882cf99';

認証ユーザの設定
/////////////////////////////////////////////////
// User definition
$auth_users = array(
    // Username => password
    'foo'   => 'foo_passwd', // Cleartext
    'bar'   => '{x-php-md5}f53ae779077e987718cc285b14dfbe86', // PHP md5() 'bar_passwd'
    'hoge'  => '{SMD5}OzJo/boHwM4q5R+g7LCOx2xGMkFKRVEx',      // LDAP SMD5 'hoge_passwd'
);
        ↓ 上記部分を以下に変更
$auth_users = array(
    'linux' => '{x-php-md5}f1a0e73e5d7fc293952d380e32fda73c', // PHP md5() 'linux_passwd'
);
上記の設定では「linux」という認証ユーザを作成し
パスワードは、上記の認証ユーザパスワードの生成で生成した実行結果を設定
(「linux」というユーザは「himitsu」というパスワードで認証される)
閲覧認証と編集認証を有効にする(認証可ユーザのみ編集できるようにする)
/////////////////////////////////////////////////
// Read auth (0:Disable, 1:Enable)
$read_auth = 0;

$read_auth_pages = array(
        // Regex                   Groupname or Username
        '#PageForAllValidUsers#'      => 'valid-user',
        '#HogeHoge#'          => 'hoge',
        '#(NETABARE|NetaBare)#'       => 'foo,bar,hoge',
);

        ↓ 上記部分を以下に変更

$read_auth = 1;

$read_auth_pages = array(
        // Regex                   Groupname or Username
        //'#PageForAllValidUsers#'      => 'valid-user',
        //'#HogeHoge#'          => 'hoge',
        //'#(NETABARE|NetaBare)#'       => 'foo,bar,hoge',
        '##'            => 'linux',
);


/////////////////////////////////////////////////
// Edit auth (0:Disable, 1:Enable)
$edit_auth = 1;

$edit_auth_pages = array(
        // Regex                   Username
        '#BarDiary#'          => 'bar',
        '#HogeHoge#'          => 'hoge',
        '#(NETABARE|NetaBare)#'       => 'foo,bar,hoge',
);

        ↓ 上記部分を以下に変更

$edit_auth_pages = array(
        // Regex                   Username
        //'#BarDiary#'          => 'bar',
        //'#HogeHoge#'          => 'hoge',
        //'#(NETABARE|NetaBare)#'       => 'foo,bar,hoge',
        '##'            => 'linux',
);
 その他の変更箇所
ページ名変更
$page_title = 'PukiWiki';
    ↓ 上記部分を以下に変更
$page_title = 'hogehoge PukiWiki';
 DirectoryIndexにindex.phpが記載されていない場合、追加します。
# vi /etc/httpd/conf/httpd.conf
DirectoryIndex index.shtml index.html
 ↓
DirectoryIndex index.shtml index.html index.php

# systemctl reload httpd

SSLを利用している場合
# vi /etc/httpd/conf.d/ssl.conf
DirectoryIndex index.shtml index.html
 ↓
DirectoryIndex index.shtml index.html index.php

# systemctl reload httpd
 動作確認のため、下記URLにアクセスします。
https://www.bigbang.mydns.jp/pukiwiki/
 FrontPageのページが表示されること確認します。
 Wiki FrontPage「凍結解除」が表示されていることを確認します。
 「編集」クリック → 「xxxx は編集できません(凍結解除)」と表示
 「(凍結解除)」をクリック → 「凍結解除用のパスワードを入力してください。」を表示
 凍結解除用パスワード入力 → 編集画面
 以上で設定は完了です。

●アップロードサイズの変更

 参考URL:Q. 添付ファイルのアップロードサイズの制限を変更したい

 /etc/php.iniで下記値を変更します。
 memory_limit > post_max_size > upload_max_filesize となるように下記の設定を変更する必要があります。
; Maximum amount of memory a script may consume (8MB)
memory_limit = 8M
; Maximum size of POST data that PHP will accept.
post_max_size = 8M
; Maximum allowed size for uploaded files.
upload_max_filesize = 2M
 3つの値を変更後、plugin/attach.inc.php に定義されている以下の箇所を変更します。
// Max file size for upload on PHP (PHP default: 2MB)
ini_set('upload_max_filesize', '2M');
// Max file size for upload on script of PukiWikiX_FILESIZE
define('PLUGIN_ATTACH_MAX_FILESIZE', (1024 * 1024)); // default: 1MB
 これらのファイルの変更後、Webサーバを再起動してください。

●Pukiwikiの更新方法

 参考URL:Pukiwiki 1.5.2 キターので、早々に更新してみた(EUC⇒UTFにもしてみた)

 Pukiwikiはここからダウンロード出来ます。

 必ずバックアップします。
# cp -rp /var/www/html/pukiwiki /var/www/html/pukiwiki.old
 バックアップ先のディレクトリの存在を確認します。
# ls -l /var/www/html|grep "^d"
 心配であればディレクトリ内を確認します。
 この時に設定しているオーナー及びグループを確認しておくと良いでしょう。
# ls -l /var/www/html/pukiwiki.old
 ダウンローとしてきたzipファイルを展開します。
# cd /usr/local/src
# unzip pukiwiki-1.5.3_utf8.zip
 /usr/local/src/pukiwiki-1.5.3_utf8に展開されます。
 バージョンアップします。
# \cp -rp pukiwiki-1.5.3_utf8/* /var/www/html/pukiwiki
 必要に応じて、オーナー及びグループを元に戻します。
# chown -R apache:apache /var/www/html/pukiwiki
 設定ファイルと記事ディレクトリをコピーします。
# cd /var/www/html/pukiwiki
# cp ../pukiwiki.old/pukiwiki.ini.php .
# mv wiki wiki.old
# \cp -rp ../pukiwiki.old/wiki .
# cp -p ../pukiwiki2.old/plugin/attach.inc.php ./plugin/


●13Mバイトのファイルをアップロードできない

 参考URL:Request Entity Too Largeで投稿できない

 10Mバイトのファイルをアップロードすることが出来るのに、13Mバイトを超えるくらいになるとアップロード出来なくなりました。
Request Entity Too Large
The requested resource
/pukiwiki2/index.php
does not allow request data with POST requests, or the amount of data provided in the request exceeds the capacity limit.
 どうもModSecurityが関係しているようです。
 ModSecurityのログに下記が記録されていました。
Message: Request body (Content-Length) is larger than the configured limit (13107200).
 /etc/httpd/conf.d/mod_security.confを変更します。
# cp -p /etc/httpd/conf.d/mod_security.conf /etc/httpd/conf.d/mod_security.conf_20201010
# vi /etc/httpd/conf.d/mod_security.conf

SecRequestBodyLimitの値を大きくします。

# systemctl restart httpd
 これでアップロードできるようになりました。