Tomcat6.0覚え書き

表紙][WindowsメモPalm覚え書きWARPメモ][Tomcat5.5メモ][Tomcat6.0(x64)メモ][bottom

最終更新: 09.11/8

以下はJRE 1.5・Tomcat 6.0・MySQL 5.0によるWebアプリの運用環境構築の手順をメモしたものです。工人舎H6SKB04Aを買ってメインの別PCで動かしているシステムのクローンを作るべく最新版の各安定バイナリを落としてきたら,結果的にメジャ_ヴァージョンナップになりました。動作環境は Windows Vista Home Basic で,UACは切ってあります。

はじめは前回同様の手順で構築してみたんですが,MySQLが文字化けしちゃったのをどーーーしても解消できませんでした。結局Shift_JISを捨て,UTF-8に統一して対処しています。Shift_JISその他の文字コードをつかいたい方にはこのペイジは役に立ちません。

ありゃ,いま(07.9/25)見たら JRE の最新は 6 update 2 になってますね。MySQLも5.1? 前掲のヴァージョンは 07.8/16 にダウンロードしたときのものです(それくらい文字化けに手を焼いてました ^^;)。

08.12/5追記。久びさにメインPC交替でヴァージョンナップ。JRE 6 update10・Tomcat 6.0.18・MySQL 5.1.29・MySQL Connector 5.1.7 になりました。大筋は変更なし。

09.11/8追記。VAIO P with Windows 7 Professional に以下をインストールして特に問題なしです。

10.10/16追記。VAIO-RAに Windows 7 Professional 64bit版を入れて各バイナリを64bit最新版に更新しました[Tomcat6.0(Win7 x64)メモ]。


1. インストール

x:
├Java
│└jre1.5.0_12
│ └lib
│  └ext
│   └mysql-connector-java-5.0.7-bin.jar

├MySQL
│└MySQL Server 5.0
│ ├bin
│ │└MySQLInstanceConfig.exe
│ ├data
│ │└DB名称
│ │ ├db.opt
│ │ └*.frm
│ ├share
│ │└charsets
│ └my.ini

└Tomcat
 ├conf
 │├server.xml
 │└tomcat-users.xml
 ├logs
 │└catlinayyyy-MM-dd.log
 └webapps
  └webアプリ
   ├logs
   ├META-INF
   │└context.xml
   ├WEB-INF
   │├classes
   ││└webアプリ
   ││ └*.class
   │└web.xml
   ├index.html
   ├*.css
   ├*.html
   ├*.js
   ├*.jsp
   └*.xml

1.1 Java実行環境の導入

SunのサイトからJREをダウンロードする。

Windows Offline Installation, Multi-language

ダウンロードしたexeをつついてインストール開始。ほんとはDドラに入れるつもりだったのに筆者はうっかり C:\Program Files\ の下にインストールしてしまった。まぁいいや。

コマンドプロンプトを開け,いきなり以下を打ってversion番号が表示されればOK。

java -version

1.2 Tomcatの導入

Apache TomcatのサイトからTomcatをダウンロードする。JREとTomcatのヴァージョンを合わせてやる必要があって,まぁ安定版の最新どうしを組み合わせるのが無難。α版やβ版は避けたい。

6.0.14

ダウンロードしたexeをつついてインストール開始。インストール_オプションでWindowsのサービスやPath設定の登録も行なうようにする。

ここでWindowsを再起動する。Windowsのサービスで Apache が[自動]で[開始]していることを確認する。Apacheが起動しない場合は JRE/JDKとTomcatのヴァージョンの組み合わせをまづ疑う。

ブラウザを立ち上げてアドレスバーに以下を指定して,Tomcatのウェルカム頁が表示されればOK。

http://localhost:8080/

(Tomcat 6.0.18以降ここで躓いたら %TOMCAT_HOME%/logs/catalina*.log をチェック。

org.apache.naming.NamingContext lookup
警告: 参照の解決中に予測しない例外が発生しました
java.io.UnsupportedEncodingException: cp932

なんて出ていたら,%TOMCAT_HOME%/conf/ 内の *.xml を順に開いて encoding='cp932' を 'utf-8' に直すべし。たぶん tomcat-users.xml。Apacheサービスを再起動。08.12/6追記)

1.3 MySQLの導入

1.3.1 MySQLの導入

MySQLのサイトからMySQL本体をダウンロードする。

Windows downloads

ダウンロードしたzipを展開して setup.exe でインストール開始。Configure で Windowsサービスの自動起動登録を忘れないこと。Configuration は Standard*1。rootパスワードは適当に決める。

コマンドプロンプトで以下をいきなりタイプして,"Welcome to the MySQL Monitor."と表示されればOK。

mysql -uroot -p[パスワード]

Windowsのサービスで MySQL が自動で開始登録されていることを確認する。以前からのMySQLサービスが邪魔をして今回導入分が起動しない場合は Autoruns などでいったんそのサービスを削除し,MySQL Server 5.0/bin/MySQLInstanceConfig.exe をつついてコンフィギュしなおすと吉。

*1 MySQL Server 5.1 以降では,Custom を選択して初回導入時からきっちり設定したほうがよさげ。筆者はあとから my.ini の datadir を書き換えたらMySQLサービスが起動しなくなって往生しました(結局いったんアンインストールして Customインストールしなおし)。実際のdatadirはCustom指定したディレクトリの下に自動生成される \Data になります。08.12/5追記

1.3.2 JDBCコネクタの導入

MySQLのサイトからJDBCコネクタをダウンロードする。このヴァージョンもJREやTomcatのそれに合わせる必要がある。

ダウンロードしたzipを展開した中から mysql-connector-java-5.0.7-bin.jar を x:/Java/jre1.5.0_12/lib/ext/ 下にコピーする。

ここまで来たら Windows を再起動して上述の確認事項をもう一度やってみる。


2. 環境設定

2.1 webappsの設定

2.1.1 webアプリ用ディレクトリの作成

%TOMCAT_HOME%/webapps/ 下にwebアプリの設置ディレクトリを作成する。ここにJSPやJavaScriptのソースを置くことになる。取りあえず適当なHTMLを書いて index.html の名前で格納しておく。

2.1.2 server.xmlの編集

%TOMCAT_HOME%/conf/server.xml を開き,non-SSL HTTP/1.1 Connector on port 8080 の Connectorタグの port を"80"に,redirectPortを"443"に変更する。

<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
<Connector
    port="80" protocol="HTTP/1.1"
    connectionTimeout="20000"
    redirectPort="443" />

Engineタグ内の最後に次のようなwebアプリのHostタグを追記する。

  <Host name="webアプリ" appBase="webapps/webアプリ" />
</Engine>

ここでWindowsサービスの Apache Tomcat を再起動する。ブラウザを立ち上げてアドレスバーに以下を指定して,項番2.1.1で作ったindex.htmlが表示されればOK(ファイル名までURIで指定するなら当該ディレクトリ下のどのファイルでも呼び出せる。また:8080を付けないことに注意。逆に:8080を指定すると接続できない)。

http://localhost/webアプリ/
2.1.3 context.xmlの編集

%TOMCAT_HOME%/webapps/webアプリ/ 下に META-INF というディレクトリを作り,以下のような内容の context.xml を設置する。ジツにここがTomcat6.0のキモである。

<Context docbase="webアプリ" path="webアプリ" reloadable="true">
        <Resource
                name="jdbc/DB名称"
                auth="Container"
                type="javax.sql.DataSource"
                username="root"
                password="MySQLパスワード"
                driverClassName="org.gjt.mm.mysql.Driver"
                url="jdbc:mysql://localhost/DB名称"
                maxActive="4"
                maxWait="5000"
                maxIdle="2"
        />
</Context>
2.1.4 web.xmlの編集

%TOMCAT_HOME%/webapps/webアプリ/ 下に WEB-INF ディレクトリを作成し,以下のような内容の web.xml を設置する。context.xmlと呼応する箇所に注意。

<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
    version="2.4">

        <resource-ref>
                <description>DB名称</description>
                <res-ref-name>jdbc/DB名称</res-ref-name>
                <res-type>javax.sql.DataSource</res-type>
                <res-auth>Container</res-auth>
        </resource-ref>
        
    <servlet>
        <servlet-name>動かしたいclass名</servlet-name>
        <servlet-class>
          webアプリ.動かしたいclass名
        </servlet-class>
    </servlet>
    <servlet>
        <servlet-name>動かしたいclass名2</servlet-name>
        <servlet-class>
          webアプリ.動かしたいclass名2
        </servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>動かしたいclass名</servlet-name>
        <url-pattern>/呼びだすときの名前</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>動かしたいclass名2</servlet-name>
        <url-pattern>/呼びだすときの名前2</url-pattern>
    </servlet-mapping>
</web-app>
2.1.5 classesディレクトリの設置

%TOMCAT_HOME%/webapps/webアプリ/WEB-INF 下に classes/webアプリ/ ディレクトリを作成する。この下に Servlet の classファイルを設置する。

2.2 MySQLの設定

2.2.1 my.iniの編集

%MySQL%/MySQL Server 5.0/my.ini の character-set を utf8 に変更する。何故か2箇所ある。basedir・datadirが意図したディレクトリになっていることを確認。

[mysql]
default-character-set=utf8

[mysqld]
(中略)
#Path to installation directory. All paths are usually resolved relative to this.
basedir="x:/MySQL/MySQL Server 5.0/"

#Path to the database root
datadir="x:/MySQL/MySQL Server 5.0/Data/"

# The default character set that will be used when a new schema or table is
# created and no character set is defined
default-character-set=utf8
2.2.2 DBとそのディレクトリの生成

コマンドプロンプトでMySQLにログインしてひとまづDBをcreateして,そのDBのデータ_ディレクトリを生成させる。

mysql -uroot -p[パスワード]
create database DB名称;
2.2.3 db.optの編集

%MySQL%/MySQL Server 5.0/data/DB名称/db.opt の character-set を utf8 に変更する。このファイルは偶然発見したんだけど,character-setを見つけたらとにかくutf8を指定してしまう。collationには utf8_general_ci と入れる。

default-character-set=utf8
default-collation=utf8_general_ci

ここで Windowsサービスの MySQL を再起動する。

コマンドプロンプトでMySQLにログインして charset関係を show variables してみる。

mysql -uroot -p[パスワード]
show variables like 'character%';

次のようにutf8がずらずら並んでいれば大成功,skip-character-set-client-handshake なんぞ書かずに済むというものだ。

+--------------------------+-------------------------------------------+
| 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       | x:\MySQL\MySQL Server 5.0\share\charsets\ |
+--------------------------+-------------------------------------------+

以上でインストールとセットアップはおしまい。


3. コーディング例

3.1 JDBC接続と切断

JSPやServletでJDBC接続するときのコーディングはこんな感じ。

Connection db = null;
try {
        Context ctx = new InitialContext();
        DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/DB名称");
        db = ds.getConnection();
} catch (Exception e) {
        e.printStackTrace();
}

切断は従来どおりclose。

try {
        db.close();
} catch (Exception e) {
        e.printStackTrace();
}

4. バックアップからの復元

4.1 JSPファイルの回復

%TOMCAT_HOME%/webapps/webアプリ/ に,退避しておいたJSP・JavaScript・CSS・HTMLの各ファイルをコピーする。

Servletのclassファイルは%TOMCAT_HOME%/webapps/webアプリ/WEB-INF/classes/webアプリ/ の下に配置。

4.2 DBデータの回復

%MySQL%/MySQL Server 5.0/data/DB名称/ に,退避しておいた *.frm のMySQLデータ実体ファイルをコピーする。

ただし今回文字コードを換えた場合は create table して作りなおすべし。データはUTF-8に変換した上でローディングするコト。


表紙][WindowsメモPalm覚え書きWARPメモ][Tomcat5.5メモ][Tomcat6.0(x64)メモ][TOP
Valid XHTML 1.0 Transitional
© (c) Copyright 2007-2010; nii.n All Rights Reserved.
counter