UbuntuにPukiWikiをインストールした時の記録

Ubuntu 12.04 へのインストール

Apache はインストール済みとする。

動作に必要なパッケージのインストール

PukiWiki は PHP で記述されており、添付ファイルは MySQL で管理されているので、以下のパッケージを apt でインストールする。

$ sudo apt-get install php5 mysql-server php5-mysql
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下の特別パッケージがインストールされます:
  apache2-mpm-prefork libapache2-mod-php5 libdbd-mysql-perl libdbi-perl
  libhtml-template-perl libmysqlclient18 libnet-daemon-perl libplrpc-perl
  mysql-client-5.5 mysql-client-core-5.5 mysql-common mysql-server-5.5
  mysql-server-core-5.5 php5-cli php5-common
提案パッケージ:
  php-pear libipc-sharedcache-perl libterm-readkey-perl tinyca mailx
  php5-suhosin
以下のパッケージは「削除」されます:
  apache2-mpm-worker
以下のパッケージが新たにインストールされます:
  apache2-mpm-prefork libapache2-mod-php5 libdbd-mysql-perl libdbi-perl
  libhtml-template-perl libmysqlclient18 libnet-daemon-perl libplrpc-perl
  mysql-client-5.5 mysql-client-core-5.5 mysql-common mysql-server
  mysql-server-5.5 mysql-server-core-5.5 php5 php5-cli php5-common php5-mysql
アップグレード: 0 個、新規インストール: 18 個、削除: 1 個、保留: 0 個。
33.9 MB のアーカイブを取得する必要があります。
この操作後に追加で 115 MB のディスク容量が消費されます。

MySQL サーバの root password が要求されるので入力するが、忘れないように注意すること。

PukiWiki 本体のインストール

UTF-8 版が公開されているので、今回はこれを使ってみた。PukiWikiの公式サイトへから pukiwiki-1.4.7_notb_utf8.tar.gz をダウンロードする。ダウンロードした tar ボールを /var/www に展開し、所有者を www-data に変更する。

$ sudo tar zxvf pukiwiki-1.4.7_notb_utf8.tar.gz -C /var/www
$ cd /var/www
$ sudo ln -s pukiwiki-1.4.7_notb_utf8 pukiwiki
$ sudo chown -R www-data:www-data pukiwiki

設定ファイルの編集

  • pukiwiki.ini.php
    PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK を 0 にする。
    --- pukiwiki.ini.php.orig	2006-10-22 05:40:24.000000000 +0900
    +++ pukiwiki.ini.php	2013-01-03 13:30:31.887581371 +0900
    @@ -53,7 +53,7 @@
     //   argsN+1
     //   }}
     //   #memo(This makes '#memo(foo)' to this)
    -define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 1); // 1 = Disabled
    +define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 0); // 1 = Disabled
     
     /////////////////////////////////////////////////
     // Language / Encoding settings

    サイト管理者を設定。
    @@ -120,10 +120,10 @@
     //$script_directory_index = 'index.php';
     
     // Site admin's name (CHANGE THIS)
    -$modifier = 'anonymous';
    +$modifier = 'Ryoei ITO';
     
     // Site admin's Web page (CHANGE THIS)
    -$modifierlink = 'http://pukiwiki.example.com/';
    +$modifierlink = 'http://mizupc8.bio.mie-u.ac.jp/';
     
     // Default page name
     $defaultpage  = 'FrontPage';     // Top / Default page

    このサイトに書いてある方法でパスワードの md5 値を求め、設定ファイルに書き込む。

    管理者パスワード
    @@ -190,7 +190,7 @@
     // Admin password for this Wikisite
     
     // Default: always fail
    -$adminpass = '{x-php-md5}!';
    +$adminpass = '{x-php-md5}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
     
     // Sample:
     //$adminpass = 'pass'; // Cleartext

    その他のユーザパスワード
    @@ -233,9 +233,10 @@
     // 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'
    +//	'foo'	=> 'foo_passwd', // Cleartext
    +	'admin'	=> '{x-php-md5}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // PHP md5() 'bar_passwd'
    +	'hoge'	=> '{x-php-md5}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // PHP md5() 'bar_passwd'
     );
     
     /////////////////////////////////////////////////

    アクセスにユーザ認証が必要なページの設定
    @@ -246,23 +247,23 @@
     
     /////////////////////////////////////////////////
     // Read auth (0:Disable, 1:Enable)
    -$read_auth = 0;
    +$read_auth = 1;
     
     $read_auth_pages = array(
     	// Regex		   Username
    -	'#HogeHoge#'		=> 'hoge',
    -	'#(NETABARE|NetaBare)#'	=> 'foo,bar,hoge',
    +//	'#HogeHoge#'		=> 'hoge',
    +	'#Restritec-pages/#'	=> 'hoge,admin',
     );
     
     /////////////////////////////////////////////////
     // Edit auth (0:Disable, 1:Enable)
    -$edit_auth = 0;
    +$edit_auth = 1;
     
     $edit_auth_pages = array(
     	// Regex		   Username
    -	'#BarDiary#'		=> 'bar',
    -	'#HogeHoge#'		=> 'hoge',
    -	'#(NETABARE|NetaBare)#'	=> 'foo,bar,hoge',
    +	'/^diary*$/'		=> 'admin',
    +	'/^.*$/'		=> 'admin',
    +//	'#(NETABARE|NetaBare)#'	=> 'foo,bar,hoge',
     );
     
     /////////////////////////////////////////////////

アクセス権の設定

公式サイトでは cache などのディレクトリのアクセス権を 777 に設定するよう書いてあるが、Debian 系では Apache2 www-data ユーザの権限で動作しているので、この作業は不要では?

データ移行

Wikiのデータは pukiwiki をインストールしたディレクトリ配下の以下のディレクトリに存在する。2012-09-07

./wiki/
./diff/
./backup/
./cache/
./attach/
./counter/
./trackback/

これらのデータを、例えば以下のようにして新たにインストールした pukiwiki にコピーする。

$ sudo - www-data
$ bash
$ cd pukiwiki-1.4.7
$ tar cf - wiki | (cd ../pukiwiki-1.4.7_notb_utf8; tar xpf -)
$ tar cf - diff | (cd ../pukiwiki-1.4.7_notb_utf8; tar xpf -)
$ tar cf - backup | (cd ../pukiwiki-1.4.7_notb_utf8; tar xpf -)
$ tar cf - cache | (cd ../pukiwiki-1.4.7_notb_utf8; tar xpf -)
$ tar cf - attach | (cd ../pukiwiki-1.4.7_notb_utf8; tar xpf -)
$ tar cf - counter | (cd ../pukiwiki-1.4.7_notb_utf8; tar xpf -)
$ tar cf - trackback | (cd ../pukiwiki-1.4.7_notb_utf8; tar xpf -)

UTF-8化 (Obsolete)

以前からPukiWikiを動かしていたが、OSがDebian Sargeだったので日本語の文字コードがEUC-JPであった。UbuntuではUTF-8が標準なっているので、文字コードを変換する必要がある。PukiwikiのUTF-8化 - yohgaki's wikiを参考に作業したが、一部修正する必要があった。

Wikiデータのコピー

EUC-JPで保存されているWikiのデータを最新版のPukiwikiをインストールしたディレクトリにコピーする。コピーするのは以下のディレクトリ。

./wiki/
./diff/
./backup/
./cache/
./attach/
./counter/
./trackback/

Pluginをインストールしてある場合はさらに ./plugin/ ディレクトリ以下にインストールした標準以外のファイルもコピーする。

PHPスクリプトを用いた変換

okkezさんが作成された convert.php を PukiWiki のディレクトリにインストールし、ブラウザ上で実行する。ただし、オリジナルのサイトは見えなくなっているので、前述のPukiwikiのUTF-8化 - yohgaki's wikiからダウンロードした。また、libディレクトリに含まれるファイルの変換でスクリプトが止まってしまったので、config.php を以下のように変更した。

//_convert_page(LIB_DIR,       '.php'    );
//_convert_page(PLUGIN_DIR,    '.php'    );
//_convert_page(SKIN_DIR,      '.php'    );
//_convert_page(DATA_HOME,     '.php'    );

プラグイン

PukiWiki には機能拡張する様々なプラグインが開発されている。プラグインは PHP で記述され、plugin ディレクトリに配置することにより機能する。2012-09-07 時点でインストールしたプラグインは以下の通り。

resizeimage.inc.php
pre.inc.php
dump.inc.php
diary.inc.php
style.inc.php

プラグインをインストールしたら、Apache を再起動してプラグインを有効にする。

$ sudo /etc/init.d/apache2 restart

diary.inc.php

tDiray風のインターフェースで日記を記述できるプラグイン。自作プラグイン/diary.inc.php - PukiWiki-official

pre.inc.php

整形済みテキスト pre プラグイン。標準では整形済みテキストを入力するには行頭に半角空白を入れなければならないが、このプラグインを使うと、全行の頭にスペースを入れずとも済むようになる。Plugin/pre.inc.php - Sonots' PukiWiki プラグイン

しろくろのへやにも pre.inc.php があるが、これは Sonots さん作。

プラグインで複数行引数を使えるようにしておく必要がある。具体的には、PukiWiki を 1.4.6 以上にアップデートしてくて、以下のように設定を変更する。

pukiwiki.ini.php

-define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 1); // 1 = Disabled
+define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 0); // 1 = Disabled

下のように、#pre{{ と }} で囲ってあげればよい。その他の使い方は、公式サイトを参照のこと。

#pre{{
http://www.example.com
}}

しろくろのへや版は、プラグインではなく本体へのパッチになっている。PukiWiki-1.4.7 では 1.4.6 用のパッチを用いる。

--- lib/convert_html.php.orig0	2005-11-03 16:37:56.000000000 +0900
+++ lib/convert_html.php	2005-11-03 17:05:51.000000000 +0900
@@ -747,6 +747,15 @@
 	}
 }
 
+class Pre_inline extends Pre
+{
+	function Pre_inline(&$root,$text)
+	{
+		parent::Element();
+		$this->elements[] = make_link($text);
+	}
+}
+
 // Block plugin: #something (started with '#')
 class Div extends Element
 {
@@ -825,6 +834,7 @@
 		$matches = array();
 
 		while (! empty($lines)) {
+			$this->tagblock($lines, '<pre>', '</pre>', 'Pre_inline');
 			$line = array_shift($lines);
 
 			// Escape comments
@@ -959,6 +969,23 @@
 				'</div>' . "\n";
 		return $contents;
 	}
+	function tagblock(&$lines, $start, $end, $class)
+	{
+		if (rtrim($lines[0]) != $start)
+		{
+			return;
+		}
+		array_shift($lines);
+		while (count($lines))
+		{
+			$line = preg_replace('/[\r\n]*$/', '', array_shift($lines));
+			if ($line == $end)
+			{
+				return;
+			}
+			$this->last = &$this->last->add(new $class($this, $line));
+		}
+	}		
 }
 
 class Contents_UList extends ListContainer

この方法では、以下のように pre タグで整形済みテキストを囲む。

<pre>
This is an example.
</pre>

resizeimage.inc.php

TIPS/PukiWiki/004 へ。

style.inc.php

PukiWikiでは表が無条件にセンタリングされてしまい、見にくくなることが多い。style.inc.php を使えば、左寄せ、右寄せも簡単に指定できる。

Plugin/style.inc.php - Sonots' PukiWiki プラグインから style.inc.php をダウンロードし、PukiWiki の plugin ディレクトリにコピーする。オリジナルは文字コードが EUC-JP なので、UTF-8 環境では iconv で文字コードを変換したほうがよいかもしれない。

$ iconv -f EUC-JP -t UTF-8 style.inc.php.orig > style.inc.php

skin//pukiwiki.css.php の編集

PukiWiki/1.4/ちょっと便利に/テーブルの中央寄せor右寄せ - PukiWiki-devの情報にしたがい、skin//pukiwiki.css.php を編集する。ただし、ぴったり左寄せにしてしまうと、それはそれで美しくないので、試行錯誤の結果 15ピクセルの空白を設けることにした。 skin//pukiwiki.css.php の .style_table, div.ie5 より下に以下の内容を追加する。

$ diff -Nur ../pukiwiki/skin/pukiwiki.css.php.orig skin/pukiwiki.css.php
--- ../pukiwiki/skin/pukiwiki.css.php.orig      2006-10-22 05:40:27.000000000 +0900
+++ skin/pukiwiki.css.php       2009-03-03 20:29:28.000000000 +0900
@@ -198,6 +198,13 @@

 div.ie5 { text-align:center; }

+.table_left .style_table { margin:auto auto auto 15px; }
+.table_center .style_table { margin: auto; }
+.table_right .style_table { margin:auto 15px auto auto; }
+.table_left div.ie5 { text-align:left; }
+.table_center div.ie5 { text-align:center; }
+.table_right div.ie5 { text-align:right; }
+
 span.noexists {
        color:inherit;
        background-color:#FFFACC;

左寄せを指定する

表を記述する際に、#style(class=table_left){{ }} で囲めばよい。

#style(class=table_left){{
|table|
}}

ソースコードをハイライト表示するプラグイン

TIPS/PukiWiki/007 へ、


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-01-03 (木) 15:36:07 (2384d)