NetCommonsのインストール
はじめに_
NetCommonsのインストールをインストールしたときの覚書です。
ホスティングサーバにインストール_
ホスティングサーバにNetCommonsのインストールをインストールできるか調べる_
NetCommonsのインストールはXoopsベースのContent Management System(通称CMS)です。利用するためには、
- ウェブサーバ(Apache, IIS, Roxen, など)
- PHP 4.3.9以降
- データベースサーバ(MySQL Database 3.23.XX以降)
が必要です。
まず、これらが入っているかをチェックする必要があります。
Webホスティングをしてもらっている(レンタルサーバを借りている)場合は、何らかのWebサーバがインストールされているのは確実です。あとは、PHPとMySQLがインストールされているかをチェックします。
MySQLをチェックします。_
Webホスティング、あるいはレンタルサーバの管理者に問い合わせをし、MySQLの使用権限をもらってください。
PHPをチェック_
まずは、Webホスティング元、あるいは、レンタルサーバ元のWebページでインストールされているソフトウェアの一覧を探すべきです。みつからないのであれば、サーバにログインし、直接探します。
% which php
これで見つからない場合は
% ls /usr/local/bin/php*
とでもしてみてください。これでも見つからない場合はNetCommonsのインストールは使えません。
次にPHP4で作るWeb-DBシステム:第1回 (2/2)にしたがい、PHPを使えるかどうかをチェックします。NetCommonsのインストールのスクリプトを置きたいディレクトリの下でtmp.phpというファイルを作成します。
% touch tmp.php
適当なエディタでtmp.phpの中身を以下のように書きます。
<HTML> <BODY> <?php phpinfo(); ?> </BODY> </HTML>
ブラウザからtmp.phpへアクセスします。PHPの設定情報が表示されて入れば、このディレクトリでPHPを使うことができます。
ついでにMySQLが使えるかどうかを確認します。PHPの設定情報の中に「--with-mysql」という単語があるかどうかをチェックします。なければ、PHPからMySQLを使うことができない可能性が高いです。Webホスティング、あるいはレンタルサーバの管理者に問い合わせをしてください。
次に、php.iniにアクセスできるのであれば、phpの設定ファイルがちゃんと設定されているかを調べます。php.iniにアクセスできないならばWebホスティング、あるいはレンタルサーバの管理者に問い合わせをしてください。
php.iniはたいてい/etc/以下にあります。/etc/php.iniあるいは、/etc/php4/php.ini、/etc/php5/php.iniを調べてください。そして、その設定ファイルで共有ファイルが迫っていされているかどうかを調べます。/etc/php.iniがある場合は
% grep extension /etc/php.ini
とコマンドで調べてください。
extension = mysql.so
とあれば、php経由でMySQLを使える可能性が高いです。もし、使えないのであればWebホスティング、あるいはレンタルサーバの管理者に問い合わせをしてください。
NetCommonsのインストールのインストール_
上記WebサイトからNetCommonsのインストールの最新版をダウンロードします。はっきりいって、本家のサイトは見づらいですが、がんばって最新版を探します。トップページに張ってある「最新版はこちらから」というリンクをたどり、表示されたページの上部にいくつかリンクが並んでいると思います。その中で「コメント」というところに「最新版」という記述があるリンクをクリックしてください。新たにページが表示されますので、ページ上部の2つのリンクのうちどちらかをクリックしてください。ダウンロードできます。
一緒に、インストールマニュアルもダウンロードしてください。ページ上部の「現在の場所」というリストから「ルート」を選びます。そして表示されるページの上部に「インストールマニュアル」というリンクがあるので、それをクリックします。新たに表示されたページの「NetCommonsのインストール.pdf」というリンクをクリックし、PDFファイルをダウンロードしてください。
あとは、インストールマニュアルどおりにインストールを進めます。
MySQL 5.0.45 & PHP 4.3.9 でのインストール_
がっつり文字化けにはまる。現在(2007/12/05)も解決していません。
インストールまで。_
ホスティングサーバのMySQLなので、自分でmy.cnfをいじることができません。なので、データベース単位で文字コードの調整を行ったところ、インストールまではうまくいきました。
そもそものMySQLの設定は以下のとおりです。
mysql> show variables like "char%"; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
この状態で、何の対策もせずにNetCommonsのインストールをインストールすると、インストール自体は成功しましたが、インストール後のNetCommonsのインストールのサイトにおいて日本語が一語たりとも表示されないという現象が起こりました。
理由は、データベースに格納されている日本語の文字コードがUTF-8ですが、NetCommonsのインストールで使われている文字コードはEUC-JP(ujis)であるというところにあります。
上記の「character_set_database」というものはデータベースの設定時に設定することができるので、これをNetCommonsのインストールの文字コードであるEUC-JPに揃えます。
まず、与えられたデータベースを作り直します。仮にデータベース名をNetCommonsDBとします。
% mysql -u hogehoge -p NetCommonsDB password: > drop database NetCommonsDB; > CREATE DATABASE NetCommonsDB CHARACTER SET ujis COLLATION ujis_japanese_ci; > flush privileges;
するとこのデータベースの文字コードはujisになります。
> use NetCommonsDB; > show variables like "char%"; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | ujis | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
以上は以下のサイトを参考としました。
また、MySQL4.1以降でどうしてこんなに文字化け問題が頻発するのかについては以下のサイトを読むと分かります。
また、NetCommonsのインストールのスクリプトでujisを送ることを明示します。 螺子を巻く。:PHP5環境でNetCommonsを導入した際の文字化け問題1 「トラブル発生&試行錯誤は実を結ばず」編のとおりに行います。 /class/database/mysqldatabase.phpの
$result =& mysql_query($sql, $this->conn);
という部分を
mysql_query("SET CHARACTER SET ujis", $this->conn); $result =& mysql_query($sql, $this->conn);
とします。
螺子を巻く。:PHP5環境でNetCommonsを導入した際の文字化け問題1 「トラブル発生&試行錯誤は実を結ばず」編で紹介されている方法以外でも、うまくいきます。
以下の方法は、NetCommons.bizの長尾さんに教えていただきました。/class/database/mysqldatabase.phpに以下の※の部分を付け加えます。
69 function connect($selectdb = true) 70 { 71 72 if (XOOPS_DB_PCONNECT == 1) { 73 $this->conn = @mysql_pconnect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS); 74 } else { 75 $this->conn = @mysql_connect(XOOPS_DB_HOST, XOOPS_DB_USER, XOOPS_DB_PASS); 76 } 77 78 if (!$this->conn) { 79 $this->logger->addQuery('', $this->error(), $this->errno()); 80 return false; 81 } 82 83 if($selectdb != false){ 84 if (!mysql_select_db(XOOPS_DB_NAME)) { 85 $this->logger->addQuery('', $this->error(), $this->errno()); 86 return false; 87 } 88 } ※ 89 mysql_query('SET NAMES ujis', $this->conn); 90 return true; 91 } 92
こうすることで、インストールまではうまくいくようになりました。
インストール後_
(2007/12/05現在)日誌、カレンダーのスケジュールなどテキストエリアに文章を入力するモジュールにおいては、日本語がまったく使えないという現象が生じました。
日誌の記事を新たに書こうとするとテキストエリアに「undefined」という文字があらかじめ表示されている。そして、日本語の文章を書き、「決定」ボタンを押して表示されるページではタイトル欄にも本文欄にも何も表示されません。
(2007/12/10)原因が分かりました。原因はPHPがHTMLへの出力を勝手にShift_JISに変換していたためです。NetCommonsのインストールは本来EUC-JPでソースコードがかかれており、HTMLへの出力もEUC-JPであることが期待されています。しかし、ホスティングしているサーバのPHPの設定ではPHPのHTML出力がShift_JISとなるようにされていました。具体的には mbstring.http_outputという項目が以下のようになっていました。
- ホスティングサーバの元々の設定
- mbstring.http_output SJIS
- NetCommonsのインストールを動かすために必要な設定
- mbstring.http_output EUC-JP
ホスティングサーバなので、php.iniを編集できません。よって、.htaccessで設定を反映させることにしました。
NetCommonsのインストールが置いてあるディレクトリに.htaccessを以下の内容で作成します。
php_value default_charset EUC-JP php_value mbstring.language Japanese php_value mbstring.internal_encoding EUC-JP php_flag mbstring.encoding_translation On php_value mbstring.http_input auto php_value mbstring.http_output EUC-JP
phpinfo.phpというスクリプトを以下の内容で作成し、mbstring.http_outputの項目が変更されて入れば.htaccessの設定が反映されています。
<?php phpinfo(); ?>
.htaccessが使えない場合はサーバの管理者にお願いするしかありません。
この設定は以下のサイトを参考にしました。
- Nucleusだとか:UTF-8 での文字化けを解決
- ぎじゅっやさん:PHPの文字化けを本気で解決する
- Ground-SunLight:PHP5.0/3.php.iniの編集
- PHP-users 3365:mbstringの設定を.htaccessで変更するときの記述方法について
- ホリデープログラミング入門 :php.iniでよく設定する項目群
Debianでのインストール_
Debian GNU/Linux Lennyへのインストール
環境準備_
% aptitude install php5 php5-mysql php5-gd % aptitude install mysql-server mysql-common mysql-client
上記を参考にapacheを設定する。
NetCommonsのインストールのインストール_
上記WebサイトからNetCommonsのインストールの最新版をダウンロードします。はっきりいって、本家のサイトは見づらいですが、がんばって最新版を探します。トップページに張ってある「最新版はこちらから」というリンクをたどり、表示されたページの上部にいくつかリンクが並んでいると思います。その中で「コメント」というところに「最新版」という記述があるリンクをクリックしてください。新たにページが表示されますので、ページ上部の2つのリンクのうちどちらかをクリックしてください。ダウンロードできます。
一緒に、インストールマニュアルもダウンロードしてください。ページ上部の「現在の場所」というリストから「ルート」を選びます。そして表示されるページの上部に「インストールマニュアル」というリンクがあるので、それをクリックします。新たに表示されたページの「NetCommonsのインストール.pdf」というリンクをクリックし、PDFファイルをダウンロードしてください。
あとは、インストールマニュアルどおりにインストールを進めます。
NetCommonsのインストールのアップグレード_
NetCommonsのインストール 1.1.2を NetCommonsのインストール 1.1.3へアップグレードする。まずは、データベースのバックアップ。
% mysqldump --opt -u USER -p DATABASE_NAME > DATABASE_NAME.dump.sql
次に国立情報学研究所から差分ファイルをダウンロード。
ダウンロードしたファイルをサーバに移動させて、その後展開。
% tar xvfz NetCommons-1.1.2_to_1.1.3.tar.gz
前のNetCommonsのインストールを~/netcommons以下にインストールしているとした場合
% cd ~/netcommons % cp -r ~/NetCommons-1.1.2_to_1.1.3/html/* .
もしパーミッションに関するエラーがでたらchmodコマンドで対処する
% chmod 644 ./*/*.php
パッチがある場合にはパッチも同様。
その後、必要に応じて文字コード対策の処理を行う。
その後、NetCommonsのインストールにログインし、「管理人室」→「モジュール管理」→「一括アップデート」をする。これでアップデート終了。