Pukiwiki を Docker で構築、既存のデータを移設したのでまとめてみた。
Contents
概要
既存の Pukiwiki、及びその稼働マシンがメンテ外になるかもとのことで、
別途 Pukiwiki を立てて、既存のデータを反映して、シームレスに移行できるか試してみた。
ホストマシン Ubuntu Server 20.04に、(Rootless) Docker で構築する。
Pukiwiki のセットアップ
Docker コンテナの設定
$ docker run -p [port]:80 -v ${HOME}/pukiwiki:/ext -d pengo/pukiwiki
conf/pukiwiki.ini.php
を適宜設定する。
データの移行
旧環境からデータを物理コピーする。
Pukiwiki については、私は詳しくはないがとりあえず以下で動いているように見える。
- wiki/ : データ本体
- attach/ : 添付ファイル
- cache/ : 直近の更新?
- diff/ : ページ初回作成後の更新履歴?
添付ファイルのサイズ制限引き上げ
- php側の各種制限引き上げ: (コンテナ内)/etc/php7/php.ini
- (memory_limit = 128M) default
- post_max_filesize = 32M
- upload_max_filesize = 20M
- pukiwiki 上の制限引き上げ: (コンテナ内)/var/www/plugin/attach.inc.php
PLUGIN_ATTACH_MAX_FILE_SIZE: 20MB
以上で 20MB までのファイルを添付できるようになる。
なお、memory_limit >= post_max_filesize >= upload_max_filesize >= PLUGIN_ATTACH_MAX_FILE_SIZE
後述するように、ホスト側のサブディレクトリから docker 内へ転送する設定をする場合は、
ホスト側の経路のサイズ制限も引き上げる必要がある。
nginx の場合: (ホストマシン)/etc/nginx/nginx.conf で client_max_body_size 32M;
などとする。
(option) EUC化
既存環境が古くEUCベース、上記 dockerコンテナは UTF-8 のため、
ページ内の日本語を含む箇所が文字化け, あるいは正しく表示されず空白になる。
- pukiwiki の設定: (コンテナ内)/var/www/lib/init.php
define('PKWK_UTF8_ENABLE',1) をコメントアウト - 日本語メニューなどのEUC化: (コンテナ内)/var/www/ja.lng.php を EUCのものに変更
転送設定
ポート番号をわざわざ教えるのも手間だし、
Firefox では変なポートはアクセスしづらいので、
ホストのポート80 からサブディレクトリ(pukiwikiなど)指定で docker 内の pukiwiki にアクセスさせる。
(ホスト側)/etc/nginx/conf.d/reverseproxy.conf
1 2 3 4 5 6 7 8 |
server { ... location ~ ^/pukiwiki/.*$ { rewrite ^/pukiwiki/(.*)$ /$1 break; proxy_pass http://127.0.0.1:[#port]; proxy_redirect off; } } |
nginx の再起動($ sudo service nginx restart
など)。
これで http://[ホスト名]/pukiwiki/ などでアクセスできる。