adiaryのアップデート

既に運用中のadiaryがあり、それをアップデートする場合の方法について説明します。

adiaryのアップデート

アップデートを行う前に、必ず現在運用している adiary のバージョンを確認してください

  1. 最新版*1adiaryをダウンロードし解凍します。
  2. 現れたファイルをすべて上書きします。
  3. リリース情報を確認して、アップデートに必要な処理を行います。(この行の作業を以下「アップデート処理」と書きます)*2

各リリース情報にはアップデートのアナウンスがされているので、必要なアップデート処理を行ってください。

ファイル上書き時にファイルを破損するミスがよくあります。ご注意ください。

アップデート処理の詳細

バージョンが進みすぎてて「アップデート処理」がよくわからないという場合は、次の方法を実行してください。

  1. 「管理」→「システム管理」→「管理者メニュー」を開きます。
  2. 画面を下にスクロールさせ、バージョンアップ前のadiaryのVersionが該当するもののうち一番下を探します。
  3. 移行処理を(上で該当した中で)下から1つずつ順に行います(同時にクリックしてはいけません)。
  4. 一番上にある付加情報の再構築を行います。
  5. 必要に応じて日記帳の再構築(各日記帳ID)にて行います。

数が少ないならばすべての記事をエクスポートして、インポートし直す方が手早く済みます。このとき、data/ 以下、public/ 以下を消去しなければ、画像や日記帳の設定を引き継げます。

例 Ver1.21→Ver1.40 のアップデート処理

Ver1.40のリリース情報を見て今運用している adiary が Ver1.21 で、あれば、「Version1.21~1.22からの乗り換え処理」を先に行い、続いて「Version1.30β以降(1.29以降)からの乗り換え処理」を行います。

*1 : またはアップデートしたい

*2 : この処理は不要なこともあります

運用データベースを切り替える場合

  1. すべての日記帳で、すべての記事をエクスポートします。
  2. adiary.conf.cgi を開きデータベースの設定を書き換えます。
  3. 元々あった日記帳をすべて作成し、記事をインポートします。

日記帳の設定、ユーザー情報(ID/PASS)が引き継げます。

文字コードを切り替える場合

  1. すべての日記帳で、すべての記事をエクスポートします。
  2. data/db/, public/css/, public/design/ 以下のファイルをすべて削除します(すべてのファイル文字コードを変換してもokです。この場合設定を引き継げます。)。
  3. 変更したい文字コードの adiary を上書きインストールします。
  4. 元々あった日記帳をすべて作成し、記事をインポートします。

日記帳の設定などは引き継げません。ユーザー情報(ID/PASS)も引き継げません。

adiaryマニュアル

adiary は blogおよびwikiの特徴合わせ持つ強力なコンテンツ管理ツールです。従来ならば、ブログとそれ以外のコンテンツと分かれていたサイトを、1つのツールの元に統一できます。

本ドキュメントはVersion2用です。Version3用のマニュアルはこちら

手早く利用したい場合は、次の2つだけ参照してください。

≪公式サイトに戻る

全文検索


MySQLでの運用

MySQLで運用する場合は、adiary.conf.cgiを次のように書き換えます。

# 擬似データベースの場合
#<$DB = loadpm('DB_pseudo', "<@data_dir>db/")>   ←コメントアウト

# MySQL の場合(データベース名、ユーザー名、パスワード)
<$DB = loadpm('DB_mysql', 'database=adiary', 'adiary', 'test', 1.connection_pool, 'ujis')>
↑有効にする

UTF-8版を利用している場合は、最後が ujis ではなく utf8 になります。

本来的にはデータベース文字コードを運用文字コードと一致させてください。そうしないと、データにアクセスする度に文字コード変換処理が発生してしまいます*1

MySQLの文字コードの設定は文字化け問題を本気で直すが大変参考になります。

*1 : 利用する分にはまったく分かりませんが確実にアクセスが遅くなります

ローカル以外のMySQLに接続する場合

database=adiary の部分を次のように書き換えます。

<$DB = loadpm('DB_mysql', 'database=adiary;host=mysql.db-net.tld', (略))>
<$DB = loadpm('DB_mysql', 'database=adiary;port=12345',(略))>
<$DB = loadpm('DB_mysql', 'database=adiary;host=10.45.67.89;port=12345',(略))>

コロン「":"」ではなくセミコロン「";"」です。ご注意ください。

環境設定メモ

コマンドはFedora Core を例に書かれています。各ディストリビューションによって適時読み替えてください。

  1. MySQL をインストールする。DBI, DBD::mysql もインストール。(4.1でテスト済)
    console~$ yum -y install mysql-server perl-DBD-MySQL
    
  2. データベースを初期化。最近のディストリビューションはデーモンを起動すれば勝手に作成してくれます。
  3. MySQL デーモンを起動する。
    console~$ /etc/init.d/mysqld start
    
  4. MySQL に接続する。
    console~$ mysql -u root
    console~$ mysql -u root -p	←パスワード指定あり
    
  5. MySQLコンソールで rootパスワード を設定する
    mysql> use mysql;
    mysql> select host,user,password from user;			←確認
    mysql> SET PASSWORD FOR root@localhost=PASSWORD('password');
    mysql> SET PASSWORD FOR root@your.host=PASSWORD('password');
    mysql> DELETE FROM user WHERE password='';
    
  6. adiary用のデータベース、ユーザーを作成
    mysql> CREATE DATABASE adiary DEFAULT CHARSET=ujis;
    mysql> GRANT all privileges ON adiary.* TO adiary@localhost IDENTIFIED BY 'password';
    

メモ

コマンドのメモ

mysql> show tables;
mysql> show databases;
mysql> show variables like 'char%';
mysql> show create table table_name;
[mysqld]
default-character-set=ujis
# MySQL 4.1.15/5.0.13以降
skip-character-set-client-handshake

[client]
default-character-set=ujis
[mysql]
default-character-set=ujis
[mysqldump]
default-character-set=ujis

adiary Ver2.23以前での注意 2012/08/07

MySQLのバージョンによって全く動作しない(記事が書き込めない)ようです。

lib/Satsuki/DB_mysql_auto.pm に以下の修正を加えるか、Ver 2.24以降にアップグレードしてください。

(変更前)
$sth = $dbh->prepare("SELECT * FROM $table WHERE pkey IS NULL");
(変更後)
$sth = $dbh->prepare("SELECT LAST_INSERT_ID()");

PostgreSQLでの運用

adiaryをPostgreSQLで運用する場合には adiary.conf.cgi を次のように書き換えます。

# 擬似データベースの場合
#<$DB = loadpm('DB_pseudo', "<@data_dir>db/")>   ←コメントアウト

#PostgreSQL の場合(データベース名、ユーザー名、パスワード)
<$DB = loadpm('DB_pg', 'database=adiary', 'adiary', 'test', 1.connection_pool)>
↑有効にする

データベースの文字コードと運用時の文字コードを一致させるように注意してください。

ローカル以外のPostgreSQLに接続する場合

database=adiary の部分を次のように書き換えます。

<$DB = loadpm('DB_pg', 'database=adiary;host=mysql.db-net.tdl', (略))>
<$DB = loadpm('DB_pg', 'database=adiary;port=12345',(略))>
<$DB = loadpm('DB_pg', 'database=adiary;host=10.45.67.89;port=12345',(略))>

コロン「":"」ではなくセミコロン「";"」です。ご注意ください。

環境設定メモ。

  1. PostgreSQL をインストールします。
  2. DBIDBD::Pg をインストールします。
  3. データベースを初期化(実行ユーザーがデータベースのsuper user。root不可)
    最近のディストリビューションはデーモンを起動すれば勝手に作成してくれます。
    標準の文字コードを指定する場合は次のようにします。
    pgsql~$ initdb /data/directory
    pgsql~$ initdb /data/directory --locale=ja_JP.eucJP
    
  4. スーパーユーザー名と同一のデータベースを作成します。
    pgsql~$ createdb pgsql
    
  5. コンソールに入ります。
    pgsql~$ psql [database name] [user name]
    
  6. コンソール上で、pgsql ユーザーにパスワードを設定します。
    pgsql=# ALTER USER pgsql ENCRYPTED PASSWORD 'password';
    
  7. 一度コンソールを脱出し、データベースディレクトリの pg_hba.conf を編集します。
    変更前)local   all    all           trust
    変更後)local   all    all           md5
    
    trust となっている部分はすべて md5 に変更する(そうしないとパスワード未承認でつながってしまう)。
  8. 変更したら、PostgreSQL デーモンを再起動します。
  9. 再びコンソールに入ります
    pgsql~$ psql pgsql pgsql
    
  10. adiary用のユーザーとデータベースを作成します。
    pgsql=# CREATE USER adiary ENCRYPTED PASSWORD 'password';
    pgsql=# CREATE DATABASE adiary OWNER=adiary ENCODING 'EUC-JP';
    

コマンドのメモ

データベース一覧(文字コード付)

pgsql~$ psql -l

困ったときのマニュアル

外部データベースの利用

adiaryでは、外部データベース(RDBMS)として PostgreSQL, MySQL のいずれかを利用することも可能です(外部DB必須ではありません)。次のような場合は、外部データベースの運用をお勧めします。*1

  • 既にRDBMSがインストールされている。RDBMSを利用することを面倒と思わない。
  • マルチユーザーで比較的規模の大きなシステムを運用したい。

1つの日記帳に数千件の日記データがあるときは外部データベースを利用した方がレスポンスは良くなるようです。標準のデータ形式(擬似データベース/pseudo DB)がダメということ訳ではありませんが、やはり専用のRDBMSの方が信頼性も上です。*2

*1 : データベース運用形態は途中で変更できません。行いたい場合はこちら

*2 : ただ CGI動作環境において外部データベースを利用するとレスポンスが悪くなります。これはアクセスの度にデータベースライブラリがロードされるためで、adiaryの高速動作を一緒に設定する方がよいです