Serendipity Blog †
説明 †
PHP で書かれた BSD ライセンスで配布されているフリーの Blog
DB は MySQL, PostgreSQL, SQLite に対応。
海外では人気あるが、日本では blog を自前で用意する人が少ないせいか知名度が低いらしい。
◎参考ページ
Serendipity - Screenshots
自前で設置した blog
必要環境 †
- The Apache Webserver
- .htaccess support allowing overrides for Directory Index?
- PHP Version 4 or greater (PHP 4.3.1 or greater recommended)
- php.ini options:
- error_reporting E_ALL & ~E_NOTICE (or lower)
- file_uploads on (For import/image upload features)
- Any of the following database engines:
- MySQL
- Post Gre?SQL
- SQLite (not quite!)
入手 †
Serendipity Blog オフィシャルページ から
最新版:Serendipity 0.9.1 を入手
インストール †
PHP スクリプトなのでコンパイル等の作業は無し。
設置(インストール)後にブラウザからTOPページにアクセスして設定を行う。
月桜共通 blog にするので、インストール先は月桜共用 Web スペース*1以下にインストール。
個人で使用する場合やレンタルサーバにインストールする場合は多少異なってくるので、パーミッションや DB 作成、Web サーバの設定等は適宜読み替える事。
以下、作業内容
- 作業用ユーザになり、DL したアーカイブをインストール先に展開する。
$ su - httpd
$ tar serendipity-0.9.1.tar.gz -C /home/data/httpd
- バージョン管理を容易にする為、シンボリックリンクを張る
$ cd /home/data/httpd
$ mv serendipity serendipity-0.9.1
$ ln -s serendipity-0.9.1 serendipity-0.9.1
- root になって Webサーバ(Apache) にエイリアス/ヴァーチャルホストの設定を追加*2
$ su -
# vi /usr/local/apache/conf/httpd.conf
下記設定を httpd.conf に追加
# for Serendipity Blog
Alias /blog/ "/home/data/httpd/serendipity/"
<Directory "/home/data/httpd/serendipity">
AllowOverride All
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS PROPFIND>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
- apache に設定を反映させる
# /usr/local/apache/bin/apachectl configtest
Syntax OK
# /usr/local/apache/bin/apachectl restart
- Serendipity 用 DB とユーザ作成
今回は MySQL*3 を選択し、専用ユーザを作成する*4
serendipity 用 DB 作成
$ /usr/local/mysql/bin/mysqladmin -u root -p create serendipity
serendipity DB に mysql ユーザ root で接続
$ /usr/local/mysql/bin/mysql -p root serendipity
上記で作成した serenditpity DB 用ユーザ作成
mysql> GRANT ALL PRIVILEGES ON serendipity.*
> TO serendipity@localhost IDENTIFIED BY 'DB アクセスパスワード';
GRANT 文実行後は必ず FLUSH PRIVILEGES 文を実行する
mysql>FLUSH PRIVILEGES;
mysql> \q
[GRANT 文の説明]
localhost 上からのみアクセス出来る 'DB アクセスパスワード' を持つユーザserendipity に、DB serendipity 上で ALL PRIVILEGES(全ての権限)*5を与える(許可する)。
設定 †
設定は基本的にブラウザ上から行う。
- インストール後、ブラウザで TOP ディレクトリにアクセスすると下記の初回設定画面が出力される。
ここで Serendipity Blog が要求する要件とシステムとを比較出来るので、
満たさないものがあるようなら設定を行う前にシステム条件を整える。
- PHP インストール
OS や PHP Version, DB の他にインストールされている PHP がサポートしている機能の有無について表示される。
取り分け日本語対応させる為に、"mbstring extension" は必須になる。
- php.ini 設定
推奨される PHP 自体の設定。
"register_globals" の設定等、php4 以前の Version で書かれたスクリプトが動かなくなったりする事があるので、要確認。
- 許可
Serendipity Blog が動作する際の Permission について。
適正でないとエラーになるので、適正な Permission に変更しておく。
※php.ini を変更した場合は、Webサーバを再起動 (php.ini を再読み込み)させる事。
# vi /usr/local/lib/php.ini
# /usr/local/apache/bin/apachectl restart
今回はパスの変更等、通常インストールでは変更出来ない部分があるので、上級インストールを選択。
初回アクセス時にすでにデフォルトの設定値がフォームに入力されている。
管理パスワードや、ユーザ名、メールアドレス、ブログタイトル等の変更を行う。
※インストール後に上級インストールと同じ設定を行える
項目 | 値 |
データベース設定 |
データベースタイプ | mysql |
データベースホスト | localhost |
データベースユーザー | sependipity*6 |
データベースパスワード | 'DB ユーザの DB 接続パスワード' |
データベース名 | sependipity*7 |
パス |
フルパス | /home/data/httpd/serendipity/*8 |
一般設定 |
管理者ユーザー名 | 'blog 管理ユーザ名' |
管理者パスワード | 'blog 管理パスワード' |
本名 | 'blog 上で表示されるユーザ名' |
管理者電子メール | E メールアドレス |
ブログの名前 | MY BLOG |
ブログの説明 | 紹介文 |
言語 | Japanese |
外観とオプション |
WYSIWYG エディタを使う | はい |
- 設定が正常終了すると下記の画面が出力される。
DB の設定に失敗していたりすると、上記画面中に PHP のエラーメッセージが本文に混ざって出力される。
この辺のエラー処理はきっちりしてなく、エラーが出ても「インストール終了」メッセージが出てハマります。
きっちりエラー対処した後インストール画面にアクセス出来ないようなら、serendipity をインストールしたディレクトリを1度削除して、再度インストールを行うと良い。
追加テーマの入手とインストール †
s9yテーマページにて配布されている。
個別の他に、デフォルトテーマも含んだ tar アーカイブでも配布されているのでそちらを入手。
中身を s9y インストール TOP ディレクトリ以下の templates 以下に展開する。
$ wget http://www.netmirror.org/mirror/serendipity/additional_themes.tgz
$ tar xvzf additional_themes.tgz -C /home/data/serendipity/tenplates
自身でカスタマイズしたい場合は、s9y style ページを参照する。
文字化けについて †
インストールした環境により文字化けが起こる可能性が有る。
- 記事やコメントの内容が文字化けする
s9y では内部で扱う文字データ(コード)を UTF を前提としている為、UTF 以外の文字コード(EUC-JP)等は文字化けを起こす。
内部処理でエンコード処理をしていない為に、php.ini の mbstring 関連の項目で、EUC-JP にしていたり自動変換を使うように設定していると、強制的に変更させられてしまう。
対処としては、
- php.ini のこれらの項目をオフにする
自前のサーバ等への設置でシステム共通の php.ini の設定を変更する。
- 専用の php.ini を使用出来るようにする
権限の問題で,共通の php.ini が用意できないのなら、個々の php.ini で対応する。
- .htaccese で php.ini の設定を上書きする
serendipity/.htaccess 内で
php_value default_charset UTF-8
php_value mbstring.language Japanese
php_value mbstring.detect_order auto
php_value mbstring.http_input pass
php_value mbstring.http_output UTF-8
php_value mbstring.internal_encoding UTF-8
php_flag mbstring.encoding_translation Off
みたいに上書き設定をする。
- コード内にエンコード処理を追加する
php.ini の設定変更も、.htaccess も使えないとなると残された道は、自前でコードを追加するしかないと思われる。手間を考えると他の blog ツール探したほうが良いと思う。
- 日付表示が文字化ける
月桜で発生した文字化けはこちら。
記事等は UTF で処理されているが、日付に関するサーバのデフォルト locale は EUC-JP である為、一つのページ内に UTF と EUC-JP が混在する形になり文字化けを起こしていた。
対処としては、serendipity/lang/UTF-8/serendipity_lang_ja.inc.php 内の
@define('DATE_LOCALES', 'ja,jp,ja_JP.UTF-8');
の行をコメントアウトし、
@define('DATE_LOCALES', 'ja_JP.UTF-8,ja,jp');
のように ja_JP.UTF-8 を一番左に持ってくる事で解決した。
詳しくは、Serendipity の日付表示の文字化け対応 を参照。
関連プログラム †
参考資料 †