** Drupalとは? [#hf1b4659] PHP4/5,MySQL/PostgreSQLで動くContent Managent System。 -本家 http://drupal.org/ -日本語サイト http://drupal.jp/ -[[Neobless:http://neobless.co.jp/ja/]] のDrupalガイド ** インストール [#wb1750ca] 本家から最新の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を作ってくれるはず。 ** メッセージを日本語にするには [#f42f8853] メニュー 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 に含まれないとエラーになる。 ** モジュール [#x2f677d5] http://drupal.org/project/Modules にいろいろなモジュールがある。 とりあえず TrackBack はブログに必要(どういうわけか4.7にしてから文字化けするので外してある)。 コメント投稿があればメールで伝える commentmail モジュールは便利。 // ** 無題のコメントがリンクできない [#v9bdf8b3] // あと,長いコメントタイトルが文字の途中で切れるという問題もある。 // これらは comment.module の function comment_validate_form の先頭部分を次のように直せばどうだろう。 // if (trim($edit['subject']) == '') { // $edit['subject'] = truncate_utf8(decode_entities(strip_tags(check_output($edit['comment'], $edit['format'], TRUE))), 30); // } else { // $edit['subject'] = truncate_utf8($edit['subject'], 60); // } // if ($edit['subject'] == '') $edit['subject'] = '無題'; // 念のため //includes/common.inc の truncate_utf8() の定義も何か心配。中身の後半(if ((ord... 以降)は // while ((ord($string[$len]) & 0xC0) == 0x80 && $len > 0) { $len--; }; // return substr($string, 0, $len); //だけでいいような気もするし,そもそも $wordsafe=FALSE でしか使わないだろうから // return mb_strcut($string, 0, $len, "UTF-8") //だけでいいかもしれない。 ** SSLでアクセスする [#db4f0547] 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'; } ** 予定表 [#f6a3eafd] 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モジュールは不要になった。 ** コメントスパム対策 [#v0ed3e09] とりあえずコメントはモデレーション要とした。 少量であれば目視で消せるが,大量に書き込まれた場合は,とりあえず select * from comments where status=1 and comment regexp '<a href'; で確認して delete from comments where status=1 and comment regexp '<a href'; で消している。 //** コメント入力フォームが狭くなる [#c775a38e] //Drupal 4.6.4 で起きる現象。 //includes/common.inc の function form_textarea で check_plain($cols) //となっているところを $cols だけにする。 //Drupal 4.6.4 の変更の意図を生かすには,この関数の入り口のところで // $cols = $cols ? ' cols="'. check_plain($cols) .'"' : ''; //とすればいいのだろう。 //** PHP 5.0.5対策 [#l52863c3] //以下はもうDrupal 4.6.4で直っている。PHP 5.1.1でも大丈夫。 //PHP 5.0.5の仕様変更のため,ところどころでエラーが出る。 //http://drupal.org/node/36003 参照。 //一般論としては 5.0.4 に戻すのが早いだろうが,ちょっとがんばってみた。 //とりあえずテーマの設定画面が真っ白になるエラーが modules/system.module //で出るので,該当個所をハック。 //649行目を // $tmp = variable_get('file_directory_path', 'files'); // file_check_directory($tmp, FILE_CREATE_DIRECTORY, 'file_directory_path'); //に,25行目を // $tmp = explode('.', arg(3), 2); // $theme = array_pop($tmp); //にする。あるいは // $theme = array_pop($tmp = explode('.', arg(3), 2)); //のようにするほうが修正が簡単かもしれない。 ** 検索窓を作るとHTML Validationエラーになる [#e2fd9cda] edit-submitというidが複数回使われるため。 現在使っているgooglesearchモジュールでは $form['submit'] = array( ... ) の中に '#id' => 'google_submit' のような適当なidをセットすればよい。 ----- - Drupal 4.7.0 正式版がリリースされました。[[Drupal Japan>http://www.drupal.jp/]] -- sawada &new{2006-05-06 (土) 12:24:32}; - 脆弱性が発見され 4.7.1 に。ついでに2chのスレ発見:http://pc8.2ch.net/test/read.cgi/php/1136103326/ -- 奥村 &new{2006-05-27 (土) 08:34:58}; #comment