最終更新: 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)メモ]。
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
SunのサイトからJREをダウンロードする。
Windows Offline Installation, Multi-language
- jre-1_5_0_12-windows-i586-p.exe
ダウンロードしたexeをつついてインストール開始。ほんとはDドラに入れるつもりだったのに筆者はうっかり C:\Program Files\ の下にインストールしてしまった。まぁいいや。
コマンドプロンプトを開け,いきなり以下を打ってversion番号が表示されればOK。
java -version
Apache TomcatのサイトからTomcatをダウンロードする。JREとTomcatのヴァージョンを合わせてやる必要があって,まぁ安定版の最新どうしを組み合わせるのが無難。α版やβ版は避けたい。
6.0.14
- Core: Windows Service Installer
ダウンロードした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追記)
MySQLのサイトからMySQL本体をダウンロードする。
Windows downloads
- Windows Essentials (x86) 5.0.45
ダウンロードした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追記
MySQLのサイトからJDBCコネクタをダウンロードする。このヴァージョンもJREやTomcatのそれに合わせる必要がある。
ダウンロードしたzipを展開した中から mysql-connector-java-5.0.7-bin.jar を x:/Java/jre1.5.0_12/lib/ext/ 下にコピーする。
ここまで来たら Windows を再起動して上述の確認事項をもう一度やってみる。
%TOMCAT_HOME%/webapps/ 下にwebアプリの設置ディレクトリを作成する。ここにJSPやJavaScriptのソースを置くことになる。取りあえず適当なHTMLを書いて index.html の名前で格納しておく。
%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アプリ/
%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>
%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>
%TOMCAT_HOME%/webapps/webアプリ/WEB-INF 下に classes/webアプリ/ ディレクトリを作成する。この下に Servlet の classファイルを設置する。
%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
コマンドプロンプトでMySQLにログインしてひとまづDBをcreateして,そのDBのデータ_ディレクトリを生成させる。
mysql -uroot -p[パスワード]
create database DB名称;
%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\ | +--------------------------+-------------------------------------------+
以上でインストールとセットアップはおしまい。
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(); }
%TOMCAT_HOME%/webapps/webアプリ/ に,退避しておいたJSP・JavaScript・CSS・HTMLの各ファイルをコピーする。
Servletのclassファイルは%TOMCAT_HOME%/webapps/webアプリ/WEB-INF/classes/webアプリ/ の下に配置。
%MySQL%/MySQL Server 5.0/data/DB名称/ に,退避しておいた *.frm のMySQLデータ実体ファイルをコピーする。
ただし今回文字コードを換えた場合は create table して作りなおすべし。データはUTF-8に変換した上でローディングするコト。