最終更新: 2017.4/11
以下はJRE 1.6・Tomcat 6.0・MySQL 5.1によるWebアプリ(Java/JSP)の運用環境構築の手順をメモしたものです。メインPC VGC-RA73S のOSを Windows 7 Professional 64bit版に代えたらけっこう苦労したので稿を改めました。JavaもMySQLもいつの間にかORACLEのものになってしまいましたねえ……。
MySQLの文字化けには懲りているのでUTF-8一択です。
C:
└Program Files
└Java
└jre6
├bin
│└keytool.exe
└lib
└ext
└mysql-connector-java-5.1.13-bin.jar
x:
├MySQL
│└MySQL Server 5.1
│ ├bin
│ │└MySQLInstanceConfig.exe
│ ├data
│ │├DB名称
│ ││├db.opt
│ ││└*.frm
│ │├ib_logfile0
│ │├ib_logfile1
│ │└ibdata1
│ ├share
│ │└charsets
│ └my.ini
│
└Tomcat
├conf
│├keystore.jks
│├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
ORACLEのサイトからJREをダウンロードする。
[Windows x64]を選んで[I agree to the Java SE Runtime Environment 6u22 with JavaFX License Agreement .]をチェックし,User Login を勧める入力欄は失礼して[Continue]へ進む。
ダウンロードしたexeをつついてインストール開始。ほんとはDドラに入れるつもりだったのに後述のトラブルのため萬止むを得ずデフォルト(C:\Program Files\Java\jre6)のままインストールした。
コマンドプロンプトを開け,いきなり以下を打ってversion番号が表示されればOK。
java -version
Apache TomcatのサイトからTomcatをダウンロードする。10.10/16現在 7.0.2 が出てたけど,BETA版だったから敬遠した。
ダウンロードしたexeをつついてインストール開始。[Custom]インストールで[Tomcat][Service]をチェックしてサービスを自動起動させることを忘れないように。
ブラウザを立ち上げてアドレスバーに以下を指定し,Tomcatのウェルカム頁が表示されればOK。
http://localhost:8080/
MySQLのサイトからMySQL本体をダウンロードする。
途中の User Login 入力欄は失礼して[No thanks, just take me to the downloads!]へ進む。
ダウンロードしたmsiをつついてインストール開始。インストール先を変えるなら[Custom]を選ぶ。DBデータの格納先は別に指定する必要があり,インストーラ中段ツリーの[MySQL Server Datafiles]で決める(実際にはここで指定したパスの下に自動生成されるサブフォルダ \Data になる)。あとで my.ini を書きかえるのはトラブルの元なのでこの段階で確定のこと。
インストールが終わったら続けて Configure する。[Detailed Configuration][Developer Machine][Multifunctional Database]と来て InnoDB はそのまま。[Decision Support],TCP/IPとStrict Mode をチェック,[Manual Selected Default Character Set / Collation]で[utf8]を選択する。次のWindows Service と PATH 設定も両チェックして自動起動させる。[Modify Security Settings]で rootパスワードを適当に決める。
コマンドプロンプトで以下をいきなりタイプして,"Welcome to the MySQL Monitor."と表示されればOK。
mysql -uroot -p[パスワード]
ついでに文字コードを確認する。
show variables like 'character%';
次のようにutf8がずらずら並んでいれば大成功。
+--------------------------+-------------------------------------------+
| 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\ |
+--------------------------+-------------------------------------------+
Windowsのサービスで MySQL が自動開始登録されていることを確認する。
MySQLのサイトからJDBCコネクタをダウンロードする。
ダウンロードしたzipを展開した中から mysql-connector-java-5.1.13-bin.jar を JREインストール先の \lib\ext\ 下にコピーする。
ここまで来たら Windows を再起動して上述の確認事項をもう一度やってみる。
Tomcatフォルダ\webapps\ 下にwebアプリの設置フォルダを作成する。ここにJSPやJavaScriptのソースを置くことになる。取りあえず適当なHTMLを書いて index.html の名前で格納しておく。
Tomcatフォルダ\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を付けないことに注意)。
http://localhost/webアプリ/
Tomcatフォルダ\webapps\webアプリ\ 下に META-INF という名のフォルダを作り,以下のような内容の context.xml を設置する。
<Context docbase="webアプリ" path="webアプリ" reloadable="true">
<Resource
name="jdbc/DB名称"
auth="Container"
type="javax.sql.DataSource"
username="root"
password="MySQLのrootパスワード"
driverClassName="org.gjt.mm.mysql.Driver"
url="jdbc:mysql://localhost/DB名称"
maxActive="4"
maxWait="5000"
maxIdle="2"
/>
</Context>
Tomcatフォルダ\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フォルダ\webapps\webアプリ\WEB-INF 下に classes\webアプリ という名のフォルダを作成する。この下に Servlet の classファイルを設置する。
MySQLフォルダ\MySQL Server 5.1\my.ini はインストール時に設定したとおりになってるハズ。
[mysql]
default-character-set=utf8
[mysqld]
(中略)
#Path to installation directory. All paths are usually resolved relative to this.
basedir="インストールフォルダ"
#Path to the database root
datadir="データフォルダ/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.1\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 を再起動する。
以上でインストールとセットアップはおしまい。
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フォルダ\webapps\webアプリ\ に,退避しておいたJSP・JavaScript・CSS・HTMLの各ファイルをコピーする。
Servletのclassファイルは webapps\webアプリ\WEB-INF\classes\webアプリ\ の下に配置。
DBは素直に create table して新規に作りなおしたほうがいい。データは select * from x into y しといたのを load data infile y into table x する。