Drupalとは?

PHP4/5,MySQL/PostgreSQLで動くContent Managent System。

インストール

本家から最新のDrupalをいただいてきて適当なところで展開しリネーム。 ここでは ~okumura/public_html/blog とする。

その中に files ディレクトリを作り,Apacheプロセスから読み書きできるようにする。

MySQLの動いているマシンで次のようにする。

mysql -u root -p
create database drupal;
grant select, insert, update, delete, create, drop, index, \
  alter, create temporary tables, lock tables \
  on drupal.* to drupal@'oku.edu.mie-u.ac.jp' identified by 'hogehoge';
flush privileges;
quit;

次に,Drupal 5なら,sites/default/settings.phpをApacheに対してwritableにして,ブラウザでURLにアクセスすると,インストール設定画面が現れるので,適当に入力する。 データベースが別ホストにある場合は,Advanced optionsを開いてホスト名を入力する。 これで登録してうまくいったら,さきほどのsettings.phpのwrite permissionは落としておく。 あとはメニューに従ってユーザ登録やコンテンツ作成をしていくだけ。

Drupal 4なら,以下のようにする。 まず,Drupalを動かすマシン(oku.edu.mie-u.ac.jp)の Drupal ディレクトリで次のようにする。

mysql -h データベースマシン -u drupal -p drupal <database/database.4.1mysql

sites/default/settings.php を編集:

$db_url = 'mysql://drupal:hogehoge@データベースマシン/drupal';
$base_url = 'http://oku.edu.mie-u.ac.jp/~okumura/blog';
ini_set('session.cookie_path', '/~okumura/blog/');

このファイルはApacheだけに読めるようにしておけばよい。

これで http://oku.edu.mie-u.ac.jp/~okumura/blog/ が見えるはず。 最初に登録したユーザが管理者になるので,すぐに登録!

Drupal 4でも5でも,crontab に次のような項目を追加するのを忘れないこと。

0 * * * * wget -q -O /dev/null http://oku.edu.mie-u.ac.jp/~okumura/blog/cron.php

最初の0は毎時0分に処理するということ。 0でなく0〜59のランダムな値のほうがいい。 5分ごとにするなら最初の 0 は */5 とする。

Clean URL を enable するには Apache を --enable-rewrite で configure しておく。 さらに,サイトのトップではなく /~okumura/blog/ に置く場合は /~okumura/blog/.htaccess に RewriteBase /~okumura/blog と書く。

あと,当該ディレクトリの中にfilesというディレクトリを作り,Apacheに対して書き込み権限を与えておく。 最近のDrupalならその中に勝手に適当な.htaccessを作ってくれるはず。

メッセージを日本語にするには

メニュー administer の modules で locale をオンにする。 Save configuration すると,administer メニューに localization という項目ができる。 これを選び,importing リンクをたどり,Language file に日本語サイトからダウンロードした ja.po を選び,Imort into を Japanese にして,Import する。 localization に ja が追加されるので,こちらを Default にして Save configuration する。 なお,この作業で,php.ini の upload_tmp_dir が open_basedir に含まれないとエラーになる。

モジュール

http://drupal.org/project/Modules にいろいろなモジュールがある。 とりあえず TrackBack はブログに必要(どういうわけか4.7にしてから文字化けするので外してある)。 コメント投稿があればメールで伝える commentmail モジュールは便利。

SSLでアクセスする

sites/default/settings.php を次のようにする:

if (isset($_SERVER['HTTPS'])) {
  $base_url = 'https://oku.edu.mie-u.ac.jp/~okumura/blog';
} else {
  $base_url = 'http://oku.edu.mie-u.ac.jp/~okumura/blog';
}

予定表

Eventモジュールを入れる。

Upcoming events ブロックを目立つところにつけておけば便利。 標準では upcoming events の表示は開始時間後2時間で消えてしまう。 これでは長いイベントで現在進行中のものが表示されないので, modules/event/event.module の function event_block_upcoming の最初の query の e.event_start >= %d を e.event_end >= %d に変え,$time を time() に変えた。

現在はGoogleカレンダーを使っているのでEventモジュールは不要になった。

コメントスパム対策

とりあえずコメントはモデレーション要とした。 少量であれば目視で消せるが,大量に書き込まれた場合は,とりあえず

select * from comments where status=1 and comment regexp '<a href';

で確認して

delete from comments where status=1 and comment regexp '<a href';

で消している。

検索窓を作るとHTML Validationエラーになる

edit-submitというidが複数回使われるため。

現在使っているgooglesearchモジュールでは $form['submit'] = array( ... ) の中に '#id' => 'google_submit' のような適当なidをセットすればよい。




Last-modified: 2008-08-09 (土) 10:12:33 (3391d)